Переключатель языка для 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;