Доброй ночи! Помогите разобраться с мобильным меню Вот часть кода контроллера, который выводит то самое мобильное меню, изначально там только категории выводились и появилось нужда добавить пару пунктов типа контакты и блог. Это более- менее понятно на крайняк можно просто добавить в список тупо html с ссылками (как в примере), Но как реализовать мультиязычность для этих пунктов меню (Блог и контакты) Заранее спасибо! Код: foreach($mobile['children'] as $m) { //echo "<pre>"; print_r($m); echo "</pre>"; if(!isset($m["name"])) $m["name"] = 'Root'; //echo "<pre>"; print_r($m); echo "</pre>"; $child_class = ''; if(count($m['children'])>0) { $child_class = 'collapse1';} else { $child_class = 'no-close'; } $html .='<li><span class=" button-view1 '.$child_class.'"><a href="'. $this->url->link('product/category', "path=".$m['id']).'">'.$m["name"].'</a></span>'; if(isset($m['children'])) { //echo "<pre>"; print_r($m); echo "</pre>"; $sub1 = $m['children'] ; $html .='<ul class="level2">'; if(isset($sub1)) { foreach($sub1 as $child1) { if(count($child1['children'])>0) { $child_class = 'collapse1';} else { $child_class = 'no-close'; } $html .='<li><span class="button-view2 '.$child_class.'"><a href="'. $this->url->link('product/category', "path=".$child1['id']).'">'.$child1["name"].'</a></span>'; if(isset($child1['children'])) { $html .='<ul class="level3">'; $sub2 = $child1['children'] ; foreach($sub2 as $child2) { if(count($child2['children'])>0) { $child_class = 'collapse1';} else { $child_class = 'no-close'; } $html .='<li><span class=" '.$child_class.'"><a href="'. $this->url->link('product/category', "path=".$child2['id']).'">'.$child2["name"].'</a></span></li>'; } $html .='</ul>'; } $html .='</li>'; } } $html .='</ul> <li><a href="index.php?route=blog/blog">Блог</a></li> <li><a href="index.php?route=information/contact">Контакты</a></li>'; } $html .='</li>'; } $html .='</ul>' ;
Как обычно. Если в языковых файлах модуля нет переводов этих пунктов, то добавляете их. PHP: $_['text_blog'] = 'Блог';$_['text_contact'] = 'Контакты'; и так для каждого языкового файла. Затем в контроллере присваиваете переменным их значение в соответствии с текущим языком магазина PHP: $data['blog'] = $this->language->get('text_blog');$data['contact'] = $this->language->get('text_contact'); И дальше эти переменные используете либо в контроллере в таком же виде, либо в тплке уже как переменные $blog и $contact.
Просто переменные в контроллере так не работают ($blog и $contact) Пробовал еще так '.$menu_blog.' (я просто вообще не шарю) но пишет Notice: Undefined variable: menu_blog in.... Хотя вроде везде все сделал(
Название переменной должно точно соответствовать тому, что написано в $data['*******'] Но, если это у вас действительно именно контроллер, а не шаблон, то можно использовать напрямую $this->language->get('text_blog') и т.д. без $data.
Не получается( в контроллере наверху пишу: $data['menu_blog'] = $this->language->get('menu_blog'); В нужном месте: <li><a href="index.php?route=blog/blog">$this->language->get('menu_blog')</a></li> В языковом: $_['menu_blog'] = 'Blog'; Получаем: Parse error: syntax error, unexpected 'menu_blog' (T_STRING) in public_html/catalog/controller/extension/module/ochozmegamenu.php on line 56
А языковой файл подгружен? 1. В файле public_html/catalog/language/[english/en-gb и т.д. в завис. от версии]/extension/module/ochozmegamenu.php добавляете: PHP: $_['menu_blog'] = 'Blog'; 2. В файле public_html/catalog/controller/extension/module/ochozmegamenu.php проверяете наличие подгрузки языкового файла в начале нужной функции, если нет, то добавляете PHP: $this->load->language('extension/module/ochozmegamenu'); 3. Далее в контроллере подгружаете саму переменную PHP: $html .='<li><a href="index.php?route=blog/blog">' . $this->language->get('menu_blog') . '</a></li>'; Аналогично Контакты.
Спасибо огромное! Языковой файл был подключен, и вроде пробовал такой выриант.... Но тем не менее щас все получилось!
Бессмысленно в данном случае. Не хватает символов конкатенации (точек). Проблема была не в языковом файле, а в том, что вы php не знаете.