Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#1 2012-10-05 08:57:25

Viator
New Member
From: Lviv, Ukraine
Registered: 2012-08-03
Posts: 8
Website

[ru-ru] Кто нибудь использует MLP Plugin?

Есть такие? Нужен совет в некоторых вопросах

Offline

#2 2012-10-05 11:24:00

etc
Developer
Registered: 2010-11-11
Posts: 5,053
Website GitHub

Re: [ru-ru] Кто нибудь использует MLP Plugin?

Не пользую, но думаю, что частично решить проблему можно через .htaccess RewriteRule.

Offline

#3 2012-11-23 15:02:52

spiridon
Member
From: Mariupol, Ukraine
Registered: 2011-01-30
Posts: 43
Website

Re: [ru-ru] Кто нибудь использует MLP Plugin?

Что за вопрос?

Offline

#4 2012-12-25 08:27:07

Viator
New Member
From: Lviv, Ukraine
Registered: 2012-08-03
Posts: 8
Website

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

#6 2013-01-13 13:26:33

Viator
New Member
From: Lviv, Ukraine
Registered: 2012-08-03
Posts: 8
Website

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.
As you can see, this code do following things:
  • fill $site_langs var with list of site languages using MLPLanguageHandler::get_site_langs(); call. See function get_site_langs in textpattern/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

Board footer

Powered by FluxBB