Свои теги h1 и title в OpenCart. Часть 2

В предыдущем посте мы написали административную часть этой доработки. Сейчас сделаем правки в пользовательской части. Начнем с Контроллера, т.к. Модель в правках не нуждается.

Идем в catalog/controller/product/category.php и меняем строку

$this->document->setTitle($category_info['name']);

на

if ($category_info['meta_title']) {
 $this->document->setTitle($category_info['meta_title']); 
 } else {
 $this->document->setTitle($category_info['name']); 
 }

Условие проверят, получаем ли мы из Модели не пустую переменную $category_info['meta_title']. Если да, то присваиваем странице тег <title> из нее, в противном случае в <title> попадет просто название категории.

Теперь займемся тегом <h1>. Для начала передадим переменную в Представление. Для этого, скажем, перед строкой

$this->data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8');

добавим

$this->data['meta_h1'] = $category_info['meta_h1'];

Перейдем к Представлению. У меня в примере шаблон отличается от стандартного, но код будет очень похож, сможете догадаться или спрашивайте в комментариях, если что-то не сработает.

идем в catalog/view/theme/ваш-темплейт/template/product/category.tpl

Нужна мне строка выгдядит так, ваша может отличаться, но незначительно. Заменяем

<header class="category-name"><h1><?php echo $heading_title; ?></h1></header>

На

<header class="category-name">
 <?php if ($meta_h1) { ?>
 <h1><?php echo $meta_h1; ?></h1>
 <?php } else { ?>
 <h1><?php echo $heading_title; ?></h1>
 <?php } ?>
</header>

Все правки закончены и все отличное работает. Проверим, добавим в административной панели свои поля:

и проверим на сайте:

Все, мы закончили писать код для вывода своих полей тего <h1> и <title> для OpenCart. Внимательный читатель может заменить, что я не представил код для товаров. Смею вас заверить, что они выполняются совершенно таким же способом. Если у вас возникнут трудности – напишите об этом в комментариях и я добавлю правки для товаров.

Игорь Чишкала

Директор по технологиям в SoftForge. Люблю ИТ, пишу технические статьи в этом блоге или для сайта фриланс-биржи Upwork. Кодю на PHP с использованием фреймворков Laravel или Symfony.

  1. Игорь, ещё такой вопрос, можно ли прикрутить этот способ к разделу информационные «Статьи»? Потому как там тоже всё свалено в одну кучу и тайтл и h1 и все остальное. Глянул в базу а там уже есть таблица title, я так понял, что в админке это — Название статьи, как быть? Я в пхп не силён, но по таким великолепным инструкциям как у вас всё получается))

  2. Замечательная статья! Спасибо Игорь Вам большое, все получилось и для категорий и для товаров!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *