Переключатель языка для Opencart

Хотя мне кажется, что встроенное управление языками в Opencart близко к идеальному, мне нужно расширение переключателя языка для любого текста в любом месте сайта, которое будет работать примерно так:

{en}text shown only on English site{/en}
{de}text shown only on German site{/de}

Подобное расширение широко используется в Joomla и довольно популярно.

Кто-нибудь знает такое расширение для Opencart?

1 ответ

Решение

Почему бы вам просто не использовать теги, которые вы упомянули:

{en}text shown only on English site{/en}
{de}text shown only on German site{/de}

Затем добавьте preg_match к выводу перед рендерингом.

В system/engine/controller.php найдите эту строку:

$this->output = ob_get_contents();

замените на (в моем примере идентификаторы языков: 1 и 2 для английского и русского соответственно):

//check for current language and do preg_replace on output

/* get current language ID */
$cur_lang_id = $this->config->get('config_language_id');

/* store buffer output in variable */
$html = ob_get_contents();
$tags = array('/\{en\}/','/\{\/en\}/','/\{ru\}/','/\{\/ru\}/');

/* do replacements */
if ($cur_lang_id == '2') {$html = preg_replace('/\{en\}.+\{\/en\}/','',$html);}
if ($cur_lang_id == '1') {$html = preg_replace('/\{ru\}.+\{\/ru\}/','',$html);}

/* remove tags */
$html = preg_replace($tags,'',$html);

//$this->output = ob_get_contents();
$this->output = $html;
Другие вопросы по тегам