Как сделать уникальные Мета теги на другую версию языка в опенкарт?
К сожалению, разработчики opencart v 2.0 - 2.2 не подумали о таком важном механизме, как разные мета теги для главной страницы в зависимости от версии языка. Но мы, народные умельцы всегда вносим дополнения к системе, которые делают ее лучше.
Ниже я привел код, который поможет на быструю руку реализовать такой функционал. Еще по аналогии с данным методом, вы сможете вывести различную дополнительную информацию из настроек в фронтэнд, например: номера телефонов, email и прочее.
Первым делом открываем фтп и заходим в корневую дерикторию сайта, а далле по пути: /admin/view/template/setting
. Открываем файл setting.tpl
в удобном редакторе (notepad++, phpDesigner и т.д.)
Ищем строки для ввода мета-тегов и добавляем свои. Версия 2.1 содержит начало данных строк на 46 линии. После них вставляем свои (примерно 66 строка):
<!---->
<div class="form-group">
<label class="col-sm-2 control-label" for="input-meta-title">Ua Meta Title</label>
<div class="col-sm-10">
<input type="text" name="config_meta_title_ua" value="<?php echo $config_meta_title_ua; ?>" placeholder="<?php echo $entry_meta_title; ?>" id="input-meta-title" class="form-control" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" for="input-meta-keyword">Ua Meta Keywords</label>
<div class="col-sm-10">
<textarea name="config_meta_keyword_ua" rows="5" placeholder="<?php echo $entry_meta_keyword; ?>" id="input-meta-keyword" class="form-control"><?php echo $config_meta_keyword_ua; ?></textarea>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" for="input-meta-keyword">Ua Meta Description</label>
<div class="col-sm-10">
<textarea name="config_meta_description_ua" rows="5" placeholder="<?php echo $entry_meta_keyword; ?>" id="input-meta-keyword" class="form-control"><?php echo $config_meta_description_ua; ?></textarea>
</div>
</div>
<!--//-->
В коде выше мы добавили инпуты для ввода необходимой для нас информации. Они полностью соответствуют оригинальным но имеют отличие в "name", так у нас везде появился суфикс _ua.
Вторым этапом мы заставим опенкарт сохранять введенную нами информацию в бд, а именно таблицу settings. Как думаете, что это дает? Правильно, мы можем работать с этой информацией без вызова моделей и т.п. в любом файле каталога посредством такого вызова: $this->config->get('KEY');
, где "KEY" и есть ключем по которому мы получим данные.
Теперь идем в контроллер и добавим наши новые переменные. admin/controller/setting
, файл setting.php. Открываем примерно на 600 строке и добавляем код, представленный ниже.
// ua meta
if (isset($this->request->post['config_meta_keyword_ua'])) {
$data['config_meta_keyword_ua'] = $this->request->post['config_meta_keyword_ua'];
} else {
$data['config_meta_keyword_ua'] = $this->config->get('config_meta_keyword_ua');
}
if (isset($this->request->post['config_meta_description_ua'])) {
$data['config_meta_description_ua'] = $this->request->post['config_meta_description_ua'];
} else {
$data['config_meta_description_ua'] = $this->config->get('config_meta_description_ua');
}
if (isset($this->request->post['config_meta_title_ua'])) {
$data['config_meta_title_ua'] = $this->request->post['config_meta_title_ua'];
} else {
$data['config_meta_title_ua'] = $this->config->get('config_meta_title_ua');
}
// end meta
После обновления модификатора в настроках мы увидим такую картину. Теперь можно ввести новые теги и сохранить настройки.
Уже прейденно 80% пути, осталось новые данные вывести в фронтэнд магазина. Для этого откроем файл home.php , который лежит по пути: /catalog/controller/common
.
Первое что мы видим - добавление метатегов документу. Теперь предстоит только добавть проверку на язык и встатвить новые мета-теги.
print_r($this->language->get('code'));
в данный файл и сохраните его. После чего перейдите на главную страницу. В самом верху вы увидите код. Если его нет - обновите модификатор и снова посмотрите главную страницу. Вы увидите код, который и надо сравнивать.
$this->document->setTitle(($this->language->get('code') == 'ua' AND !empty($this->config->get('config_meta_title_ua'))) ? $this->config->get('config_meta_title_ua') : $this->config->get('config_meta_title'));
$this->document->setDescription(($this->language->get('code') == 'ua' AND !empty($this->config->get('config_meta_description_ua'))) ? $this->config->get('config_meta_description_ua') : $this->config->get('config_meta_description'));
$this->document->setKeywords(($this->language->get('code') == 'ua' AND !empty($this->config->get('config_meta_keyword_ua'))) ? $this->config->get('config_meta_keyword_ua') : $this->config->get('config_meta_keyword'));
Должно получится, примерно так как на изображении ниже:
Теперь обввляем модификатор и радуемся результату :)