Textpattern CMS support forum
You are not logged in. Register | Login | Help
- Topics: Active | Unanswered
[ru-ru] Кто нибудь использует MLP Plugin?
Есть такие? Нужен совет в некоторых вопросах
Offline
Re: [ru-ru] Кто нибудь использует MLP Plugin?
Не пользую, но думаю, что частично решить проблему можно через .htaccess RewriteRule.
Offline
Re: [ru-ru] Кто нибудь использует MLP Plugin?
Что за вопрос?
Offline
Re: [ru-ru] Кто нибудь использует MLP Plugin?
spiridon wrote:
Что за вопрос?
MLP по умолчанию делает ссылку главной страницы с приставкой язика, т.е. вида site.com/ru/ site.com/en/
Нужно, чтобы для языка по умочканию (в даном случае ru) приставка “ru” в урле убиралась. Это же актуально и для всех остальных страниц/разделов сайта, и статей.
Второй вопрос — это то, что все статьи одного язика доступны по двух урлах — site.com/en/статья и site.com/статья (это если написать такой урл ручками) – одна и таже же статья на одном языке. Вобшем нужно избавится от таких дублей
Offline
#5 2013-01-13 01:45:00
- adriano32
- Member
- From: Ukraine
- Registered: 2013-01-09
- Posts: 15
Re: [ru-ru] Кто нибудь использует MLP Plugin?
0) Уточни, пожалуйста, версию TP, плагина MLP и используемый веб-сервер
1) Убрать /ru можно двумя способами: как верно отметили выше при помощи rewrite rule, который удалит /ru из URI на уровне запроса к веб-серверу, и вторым – в исходном коде l10n.php, где в _l10n_process_url надо добавить к концу сверку выбранного языка с языком сайта по умолчанию и отрезанию его из URI (ищи. $reduce_uri), по-моему из коробки такой функции нет.
2) а если я ещё пару-тройку URI накидаю, по которым статья будет доступна, например, index.php?title=article_name? какова необходимость в том, чтоб делать недоступным статью по какой-либо из-них?
Offline
Re: [ru-ru] Кто нибудь использует MLP Plugin?
adriano32 wrote:
0) Уточни, пожалуйста, версию TP, плагина MLP и используемый веб-сервер
Задавал этот вопрос в теме MLP плагина там же и указывал версию Textpattern — 4.4.1 MLP — 4.3.0.12 Впринципе уже есть адаптированый MLP под версию Textpattern 4.5.2, но там ситуация аналогичная.
Веб-сервер — апач 2.2.22 в связке с nginx
adriano32 wrote:
1) Убрать /ru можно двумя способами: как верно отметили выше при помощи rewrite rule, который удалит /ru из URI на уровне запроса к веб-серверу, и вторым – в исходном коде l10n.php, где в _l10n_process_url надо добавить к концу сверку выбранного языка с языком сайта по умолчанию и отрезанию его из URI (ищи. $reduce_uri), по-моему из коробки такой функции нет.
Спасибо, для меня второй вариант более подходящий, так как в rewrite rule не слишком силен, к тому же Textpattern использует в .htaccess собственные правила, и при попытке что-то дописать начинается абракадабра :D
adriano32 wrote:
2) а если я ещё пару-тройку URI накидаю, по которым статья будет доступна, например, index.php?title=article_name? какова необходимость в том, чтоб делать недоступным статью по какой-либо из-них?
Накидайте :) Хотя, лично у меня даная конструкция не работает. Возможно из-за того, что режим постоянных ссылок section_title
Last edited by Viator (2013-01-13 13:27:16)
Offline
#7 2013-01-14 01:50:41
- adriano32
- Member
- From: Ukraine
- Registered: 2013-01-09
- Posts: 15
Re: [ru-ru] Кто нибудь использует MLP Plugin?
Ну смотри, проще как по мне осилить rewrite rules, всё равно по жизни пригодится.
Итак, проверенная последовательность действий для удаления из ссылок на сайте кода языка (например, ‘ru’) на страницах, показываемых на языке по умолчанию для TP 4.4.1 + MLP 4.3.0.12 такова: If you want to strip/reduce/omit language code (e.g. ‘en’) from url’s shown on those pages which was generated in default site language, follow me:- Log in to your TP-site with privileges sufficient for Plugin source code editing
- Go Admin > Plugins
- Click ‘Edit’ link for
l10n
plugin - Find
function _l10n_inject_lang_markers_cb( $matches )
(Line 535) - Move approx 60 lines down (to Line 597) and replace code line
$result = $l10n_replace_strings['start_rep'].$matches[1].'/'.$l10n_language['short'].$extra.$matches[2].$l10n_replace_strings['stop_rep'];
with
$site_langs = MLPLanguageHandler::get_site_langs();
$default_lang_long = $site_langs[0];
$default_lang_short = substr( $default_lang_long , 0 , 2 );
if ( $l10n_language['short'] != $default_lang_short )
{
$result = $l10n_replace_strings['start_rep'].$matches[1].'/'.$l10n_language['short'].$extra.$matches[2].$l10n_replace_strings['stop_rep'];
}
else
{
$result = $l10n_replace_strings['start_rep'].$matches[1].$extra.$matches[2].$l10n_replace_strings['stop_rep'];
}
- Now Save
- Done. Now you can check. Clean the cache in your browser and check/set HTTP_ACCEPT_LANGUAGE in your browser too to see result.
- fill
$site_langs
var with list of site languages usingMLPLanguageHandler::get_site_langs();
call. Seefunction get_site_langs
intextpattern/lib/l10n_base.php
for reference. $site_langs will contain smth like this
array(3) { [0]=> string(5) "uk-ua" [1]=> string(5) "en-us" [2]=> string(5) "ru-ru" }
- select the first one (which is default) via
$site_langs[0]
array element and save in$default_lang_long
var. ‘uk-ua’ for me - then cut two-letter country code from
$default_lang_long
var and save into$default_lang_short
. here we will receive ‘uk’ country code for insertion in url’s e.g.http://localhost/uk/
- compare default language code with those, which was determined by plugin (basing on cookies, url, HTTP_ACCEPT_LANGUAGE and so on) and written into the
$l10n_language
var (that’s array, two-letter code is available via$l10n_language['short']
) - if determined language code differs from default one, then insert language code into the url. Before editing plugin inserting language code into the url was the one behaviour (see replaced line of code).
- else (determined language code is the same as default one) dont insert language code into the url.
That’s all.
Написал по-английски, чтоб всем было понятно. Если есть вопросы, пиши. Можно написать по-другому, вроде бы есть готовые вызовы для получения двухбуквенного кода, но мне было лень :)
Last edited by adriano32 (2013-01-14 01:56:59)
Offline