Как сделать уникальные Мета теги на другую версию языка в опенкарт?

20.12.2019 | Андрей
Как сделать уникальные Мета теги на другую версию языка в опенкарт?

К сожалению, разработчики 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. Первое что мы видим - добавление метатегов документу. Теперь предстоит только добавть проверку на язык и встатвить новые мета-теги.

Важно: Ваша версия второго языка может отличаться, чтобы узнать какой код можно воспользоваться 2 методами. Но мы используем самым достоверным. Перед заменой на код, что ниже. Выполните такое действие: вставьте приведенный код 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'));


Должно получится, примерно так как на изображении ниже:

Как сделать уникальные Мета теги на другую версию языка в опенкарт?

Теперь обввляем модификатор и радуемся результату :)

Бажаєте дізнатись скількі коштує Ваш проєкт?

Заповніть заявку

Категорії

Те, що читають:

Name post

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco

Name post

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco