Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Ошибка вывода категории в товар


Recommended Posts

Здравствуйте!

Установил дополнение https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=28717&filter_search=category in the product page&filter_license=0&filter_download_id=47 для вывода категорий в виде ссылок карточку товара. (автор не отвечает на другие комментарии)

Работает корректно только в товарах с вложенными категориями - Кат1->Кат2....товар (

. Но если товар находится в одной единственной категории, выводятся ошибки в карточке. При этом выводится категория и пустая строчка над ней с дефисом (

 

Notice: Undefined index: parent_id in /system/storage/modification/catalog/controller/product/product.php on line 211 с 210 по 212 строчки   

$categ = $this->model_catalog_category->getCategory($item['category_id']);
                if ($categ['parent_id'] > 0) {
                        $catinfo['href'] = $this->url->link('product/category', 'path=' . $categ['parent_id'] . '_' . $item['category_id']);

 

Notice: Undefined index: name in /system/storage/modification/catalog/controller/product/product.php on line 217  -    $catinfo['name'] = $categ['name'];    
 

Warning: Cannot modify header information - headers already sent by (output started at /catalog/controller/startup/error.php:34) in /catalog/controller/extension/module/aridius_viewed.php on line 67

 

Ошибка в логах дополнений

CODE: <li><span><?php echo $text_model; ?>
NOT FOUND - OPERATIONS ABORTED!
CODE: <li><span><?php echo $text_model; ?>
LINE: 306

сам модуль

Спойлер

<modification>
  <name><![CDATA[<i class="fa fa-list"></i> &nbsp; Category in the product page]]></name>
  <code>category-in-the-product-page</code>
  <version>2.0</version>
  <author>MagnumLabs</author>
  <link>http://www.lintasniaga.com</link>
    <file path="catalog/controller/product/product.php">
        <operation>
            <search><![CDATA[if ($product_info)]]></search>
            <add position="before"><![CDATA[
                $this->load->language('common/header');
                $data['text_category'] = $this->language->get('text_category');
                
                $querycats = $this->model_catalog_product->getCategories($product_id);
                $categories = array();
                
                foreach( $querycats as $item ) {
                    $categ = $this->model_catalog_category->getCategory($item['category_id']);
                    if ($categ['parent_id'] > 0) {
                        $catinfo['href'] = $this->url->link('product/category', 'path=' . $categ['parent_id'] . '_' . $item['category_id']);
                    }
                    else {                    
                        $catinfo['href'] = $this->url->link('product/category', 'path=' . $item['category_id']);
                    }
                    $catinfo['name'] = $categ['name'];
                    $categories[] = $catinfo;
                }
            ]]></add>
        </operation>
        <operation>
            <search><![CDATA[$data['manufacturer'] = $product_info['manufacturer'];]]></search>
            <add position="after"><![CDATA[
                $data['categories'] = $categories;
            ]]></add>
        </operation>
    </file>

    <file path="catalog/view/theme/*/template/product/product.tpl">
        <operation>
            <search><![CDATA[<li><span><?php echo $text_model; ?>]]></search>
            <add position="before"><![CDATA[
            <?php 
            if( $categories ) { ?>
                <li><?php echo "$text_category:"; ?></li>
                <?php
                foreach( $categories as $category ) { ?>
                <li>- <a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a></li>
            <?php }
            } ?>
            ]]></add>
        </operation>
    </file>
</modification>

Не понятно почему одиночная категория не определяется правильно?

584ba21f0513e-resize-500x500.jpg

Надіслати
Поділитися на інших сайтах


попробуйте заменить   

 

if ($categ['parent_id'] > 0) { 

на

if(isset($categ['parent_id']) && $categ['parent_id'] > 0){
Надіслати
Поділитися на інших сайтах

Спойлер

 

нет проверки, что категория существует и не отключена
в вашем случае вероятно у товара несколько категорий, но включена только одна

Надіслати
Поділитися на інших сайтах


4 часа назад, Seriusis сказал:

попробуйте заменить   

 


if ($categ['parent_id'] > 0) { 

на


if(isset($categ['parent_id']) && $categ['parent_id'] > 0){

Спасибо. Первая ошибка пропала. Осталась вторая - 217 строчка

Надіслати
Поділитися на інших сайтах


23 минуты назад, pachol сказал:

Спасибо. Первая ошибка пропала. Осталась вторая - 217 строчка

покажите больше кода, где переменная $catinfo присвоена

Надіслати
Поділитися на інших сайтах

27 минут назад, pachol сказал:

Спасибо. Первая ошибка пропала. Осталась вторая - 217 строчка

проще всего сделать так, там где условие 

if(isset($categ['parent_id']) && $categ['parent_id'] > 0){

добавляете else, если его нет, или переписываете то что там, т.е. else {

$catinfo = $categ;

}

Хотя всего кода не видно, но в categ у вас должна быть инфа категории

Там уже по коду смотрите. 

Надіслати
Поділитися на інших сайтах

47 минут назад, Seriusis сказал:

покажите больше кода, где переменная $catinfo присвоена

Спойлер

$this->load->language('common/header');
                $data['text_category'] = $this->language->get('text_category');
                
                $querycats = $this->model_catalog_product->getCategories($product_id);
                $categories = array();
                
                foreach( $querycats as $item ) {
                    $categ = $this->model_catalog_category->getCategory($item['category_id']);
                    if(isset($categ['parent_id']) && $categ['parent_id'] > 0) {
                        $catinfo['href'] = $this->url->link('product/category', 'path=' . $categ['parent_id'] . '_' . $item['category_id']);
                    }
                    else {                    
                        $catinfo['href'] = $this->url->link('product/category', 'path=' . $item['category_id']);
                    }
                    $catinfo['name'] = $categ['name'];
                    $categories[] = $catinfo;
                }

/system/storage/modification/catalog/controller/product/product.php

Чувствую, с моими "знаниями" - проще или купить модуль, или обойтись без вывода категории)))

Надіслати
Поділитися на інших сайтах


Только что вручную добавил товар в один из таких категорий - ошибки нет. Ошибки в товарах, загруженных через АОП и только в одиночных категориях.

Надіслати
Поділитися на інших сайтах


3 часа назад, thentru сказал:
  Показать контент

 

нет проверки, что категория существует и не отключена
в вашем случае вероятно у товара несколько категорий, но включена только одна

В админке только одна - главная и показывать в категориях - отмечена одна и та же категория. Других нет.

Надіслати
Поділитися на інших сайтах


Только что, pachol сказал:

В админке только одна - главная и показывать в категориях - отмечена одна и та же категория. Других нет.

значит у вас "кривая" база

 

15 часов назад, pachol сказал:

Но если товар находится в одной единственной категории, выводятся ошибки в карточке. При этом выводится категория и пустая строчка над ней с дефисом (

это говорит о том, что в массиве 2 элемента

 

3 часа назад, thentru сказал:

нет проверки, что категория существует и не отключена

достаточно добавить условие
 

foreach( $querycats as $item ) {
	$categ = $this->model_catalog_category->getCategory($item['category_id']);
	
	if ($categ) {
		...

 

  • +1 1
Надіслати
Поділитися на інших сайтах


6 минут назад, thentru сказал:

значит у вас "кривая" база

Видимо и правда в базе что-то не то....удалил одну строчку с нулевой  категорией, ошибка в этом товаре не выводится. 

category.png

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.