В предыдущем посте мы написали административную часть этой доработки. Сейчас сделаем правки в пользовательской части. Начнем с Контроллера, т.к. Модель в правках не нуждается.
Идем в 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. Внимательный читатель может заменить, что я не представил код для товаров. Смею вас заверить, что они выполняются совершенно таким же способом. Если у вас возникнут трудности – напишите об этом в комментариях и я добавлю правки для товаров.
Друг, ты лучший! Будь счастлив! Живи долго!)) Денег мне сэкономил, хотел модуль покупать, а тут ты))
Да пожалуйста :)
Еще будут, сейчас дописываю для управления индексацией товаров.
Игорь, ещё такой вопрос, можно ли прикрутить этот способ к разделу информационные «Статьи»? Потому как там тоже всё свалено в одну кучу и тайтл и h1 и все остальное. Глянул в базу а там уже есть таблица title, я так понял, что в админке это — Название статьи, как быть? Я в пхп не силён, но по таким великолепным инструкциям как у вас всё получается))
можно везде, где у меня title заменить скажем на seo_title
Замечательная статья! Спасибо Игорь Вам большое, все получилось и для категорий и для товаров!
Здравствуйте, Игорь.
Спасибо большое за классную и детальную статью про тэги h1 и title в OpenCart.
Хотела поручить это программисту, но он ближайший месяц занят.
Всё делала согласно инструкции, первый раз внозила изменения в БД и всё получилось )
Поля для h1 и title появились. title в категориях работает, а в товарах выдает Undefined index: meta_title…Что нужно еще изменить?
H1 пока не работает, так как не закончила последний шаг. Не могу понять в какую строку в моем случае нужно вносить изменения. Подскажите, пожалуйста.
Очень уже хочется увидеть итоговый результат проделанной работы )
Выложите куда-нибудь файл ваш, проверим. Раз Undefiend, значит ошибка в controller.
И у меня ж тут не полная инструкция для товаров, полная только для категорий, т.к. я считал, что тут «любой разберется». Видимо все нужно разжевать :)
Спасибо, что ответили.
Я просто совсем новичок в этом =)
Для товаров всё делала по аналогии с категориями…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
а для ос сторе актуально?
Не должно быть, т.к. там это уже присутствует из коробки.
Здравствуйте.
Пробую делать для товаров по аналогии. Для категорий все работает, а для товаров на последнем шаге какая-то загвоздка. В файле catalog/controller/product/product.php после добавления строки $this->data[‘meta_h1’] = $product_info[‘meta_h1’]; на странице товара весь код отображается примерно так �� �R��i{��x�߉���+v�*�϶3���2�D�a+�?. Это что-то с кодировкой?
Да, похоже на кодировку.
Автору здоровья и благополучия)))) Все получилось. Все работает. Очень подробная пошаговая инструкция.