Opencart 3 - отображать категорию (связанную) на странице товара

Мне нужно отображать ссылки на категории на странице продукта.

Я нашел следующий xml по адресу forum.opencart.com:

<?xml version = "1.0" encoding = "UTF-8"?>
<modification>
<id>Show Linked Categories on Product page</id>
<version>1</version>
<vqmver>2.5.1</vqmver>
<author>http://www.opencart-extensions.co.uk</author>

<file name = "catalog/controller/product/product.php">
<operation error = "log">
<search position = "after" index = "1"><![CDATA[$product_info = $this-    >model_catalog_product->getProduct($product_id);]]></search>
<add><![CDATA[
$data['text_linked_categories'] = $this->language->get('text_linked_categories');
$query_linked_categories = $this->model_catalog_product->getCategories($product_id);
$linked_categories = array();
foreach( $query_linked_categories as $linked_category_data ) {
$linked_category = $this->model_catalog_category->getCategory($linked_category_data['category_id']);
$linked_category_info['id'] = $linked_category_data['category_id'];
$linked_category_info['href'] = $this->url->link('product/category', 'path=' . $linked_category_data['category_id']);
$linked_category_info['name'] = $linked_category['name'];
$linked_categories[] = $linked_category_info;
}
]]></add>
</operation>

<operation error = "log">
<search position = "before"><![CDATA[$data['manufacturer'] =     $product_info['manufacturer'];]]></search>
<add><![CDATA[
$data['linked_categories'] = $linked_categories;
]]></add>
</operation>
</file>

<file name = "catalog/language/*/product/product.php">
<operation error = "log">
<search position = "before"><![CDATA[$_['text_manufacturer']]]></search>
<add><![CDATA[
$_['text_linked_categories']        = 'Categories:';
]]></add>
</operation>
</file>

<file name = "catalog/view/theme/*/template/product/product.tpl">
<operation error = "log">
<search position = "before"><![CDATA[<li><?php echo $text_model; ?> <?php     echo $model; ?></li>]]></search>
<add><![CDATA[
<?php if ( $linked_categories ){ ?>
<li><?php echo $text_linked_categories; ?> 
<?php foreach( $linked_categories as $linked_category ){ ?>
<a href = "<?php echo $linked_category['href']; ?>"><?php echo         $linked_category['name']; ?></a>&nbsp;
<?php } ?>
</li>
<?php } ?>
]]></add>
</operation>
</file>
</modification>

Проблема в том, что этот xml vqmod работает только в версии 2.

Как применить это решение к Opencart 3?

да, поскольку opencat 3 имеет другой язык шаблонов по сравнению с 2.0, вам нужно изменить его, чтобы он работал

Nipun Tyagi 13.09.2018 11:57
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
1 176
1

Ответы 1

так что это очень просто .. вам просто нужно помнить, что в OC версии 3 вместо tpl должны быть файлы twig. Поэтому я переписал код для OC версии 3.0.2 в OCMOD. Не используйте этот код в VQMOD.

<?xml version = "1.0" encoding = "UTF-8"?>
<modification>
<id>Show Linked Categories on Product page OC 3.0.x</id>
<code>00002</code>
<name>Show Linked Categories on Product page OC 3.0.x</name>
<version>1.0.0</version>
<vqmver>2.6.2</vqmver>
<author>K.B.</author>

<file path = "catalog/controller/product/product.php">
<operation error = "log">
<search><![CDATA[$product_info = $this->model_catalog_product->getProduct($product_id);]]></search>
<add position = "after" index = "1"><![CDATA[
$data['text_linked_categories'] = $this->language->get('text_linked_categories');
$query_linked_categories = $this->model_catalog_product->getCategories($product_id);
$linked_categories = array();
foreach( $query_linked_categories as $linked_category_data ) {
$linked_category = $this->model_catalog_category->getCategory($linked_category_data['category_id']);
$linked_category_info['id'] = $linked_category_data['category_id'];
$linked_category_info['href'] = $this->url->link('product/category', 'path=' . $linked_category_data['category_id']);
$linked_category_info['name'] = $linked_category['name'];
$linked_categories[] = $linked_category_info;
}
]]></add>
</operation>

<operation error = "log">
<search><![CDATA[$data['manufacturer'] = $product_info['manufacturer'];]]></search>
<add position = "before"><![CDATA[
$data['linked_categories'] = $linked_categories;
]]></add>
</operation>
</file>

<file path = "catalog/language/*/product/product.php">
<operation error = "log">
<search><![CDATA[$_['text_manufacturer']]]></search>
<add position = "before"><![CDATA[
$_['text_linked_categories']        = 'Categories:';
]]></add>
</operation>
</file>

<file path = "catalog/view/theme/*/template/product/product.twig">
<operation error = "log">
<search><![CDATA[<li>{{ text_model }} {{ model }}</li>]]></search>
<add position = "before"><![CDATA[
{% if linked_categories %}
  <li>{{ text_linked_categories }} 
  {% for linked_category in linked_categories %}
            <a href = "{{ linked_category.href }}">{{ linked_category.name }}</a>&nbsp;
            {% endfor %}
            </li>
            {% endif %}

]]></add>
</operation>
</file>
</modification>

Создайте новый текстовый файл с именем install.xml, скопируйте в него приведенный выше код. заархивируйте его с новым именем categories_to_product.ocmod.zip и используйте установщик OC для его установки. после этого не забудьте обновить модификации ...

Удачи

Спасибо, что отлично сработало !! спас день К.Б.

Joe 13.09.2018 20:17

Привет, K.B. Я хотел бы отображать только последнюю дочернюю категорию, в которой находится продукт. Подскажите пожалуйста совет / помощь. Спасибо!

Erik Duits 06.07.2021 12:50

Ответ: stackoverflow.com/questions/68274195/…

Erik Duits 07.07.2021 19:19

Другие вопросы по теме