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

1 мин. на чтение

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

Идем в 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.

Посмотреть все записи автора Игорь Чишкала →

14 комментариев к «Свои теги h1 и title в OpenCart. Часть 2»

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

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

  3. Здравствуйте, Игорь.
    Спасибо большое за классную и детальную статью про тэги h1 и title в OpenCart.
    Хотела поручить это программисту, но он ближайший месяц занят.
    Всё делала согласно инструкции, первый раз внозила изменения в БД и всё получилось )
    Поля для h1 и title появились. title в категориях работает, а в товарах выдает Undefined index: meta_title…Что нужно еще изменить?
    H1 пока не работает, так как не закончила последний шаг. Не могу понять в какую строку в моем случае нужно вносить изменения. Подскажите, пожалуйста.
    Очень уже хочется увидеть итоговый результат проделанной работы )

    1. Выложите куда-нибудь файл ваш, проверим. Раз Undefiend, значит ошибка в controller.
      И у меня ж тут не полная инструкция для товаров, полная только для категорий, т.к. я считал, что тут «любой разберется». Видимо все нужно разжевать :)

  4. Спасибо, что ответили.
    Я просто совсем новичок в этом =)
    Для товаров всё делала по аналогии с категориями…controller для продуктов здесь: https://docs.google.com/document/d/e/2PACX-1vRwb6x06nz_ro2pYwT5mgtfZWUJFEKmPXHT4y0BL2TmijkVavFR5ilLnhlfkxERiX-dcmVsEt5ild96/pub

    Файл категорий для последнего шага: https://docs.google.com/document/d/e/2PACX-1vRH-pl_bahpRINMrhNmIxvpVIhbaCdkA1pL6rCtrl44ZQSiYc5OmiQmG_dff7TaF-AmAkwy7LfbSrwl/pub

  5. Здравствуйте.
    Пробую делать для товаров по аналогии. Для категорий все работает, а для товаров на последнем шаге какая-то загвоздка. В файле catalog/controller/product/product.php после добавления строки $this->data[‘meta_h1’] = $product_info[‘meta_h1’]; на странице товара весь код отображается примерно так �� �R��i{��x�߉���+v�*�϶3���2�D�a+�?. Это что-то с кодировкой?

  6. Автору здоровья и благополучия)))) Все получилось. Все работает. Очень подробная пошаговая инструкция.

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.