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

В каталоге товаров, появляется товар без ID


Recommended Posts

Всем доброго дня. 

 

Кто-нибудь может подсказать, как убрать ошибку в ocstore 3.0.2.0, когда в Каталоге со всеми товарами выводится пустой товар без ID ?

Вот такая ссылка у товара: https://fors-auto.com.ua/index.php?route=product/product&path=65&product_id=

 

Вот так это выглядит в каталоге: (ссылка на каталог)

 

Спойлер

image.thumb.png.1768176afbbc7e0e51efc4873a336ffe.png

 

При чем, что в Админке - в товарах - этого товара НЕТ, и в MSQL в таблицах - тоже ни одного пустого товара нет. Непонятно откуда он появился, и как его убрать, а в дальнейшем заблокировать его появление.

Змінено користувачем wwizard
Надіслати
Поділитися на інших сайтах


3 минуты назад, esculapra сказал:

ну так смотри где вывод товаров и пропиши условие, типа,

if(isset($result['product_id'])) // как-то так

 

Можно пояснить, как это сделать - если оно выводиться в общем списке товаров

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


Если таких проблем нет в самой сборке, значит срочно включать мозг и вспоминать, что правилом в категории. Был опыт, когда пользователь нашел статью в инете, как скрыть товары с нулевым остатком. Дальше те же симптомы.

Ну или это работа какого то дополнения.

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

1 час назад, chukcha сказал:

Не так..

надо просто проверить результат запроса getProducts



 

Хоть намекните, как это сделать. Как отследить несуществующий товар

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


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

Хоть намекните, как это сделать. Как отследить несуществующий товар

сделайте print_r массива товаров и посомтрите на каком этапе они появляются, после выхода с модели выборки товаров или уже в контроллере.

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

Штатный запрос OC в методе getProducts имеет несколько JOIN. Если структура данных не полная, то будет потеряно значение product_id со всеми вытекающими последствиями.

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

Или ещё что-то. Тут без отладки не угадать, могут быть разные варианты.

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

Стало сложно в понимании, как же поступить. Даже не столько в удалении, сколько в понимании откуда он взялся.

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


1 час назад, wwizard сказал:

Стало сложно в понимании, как же поступить.

Заходите в /catalog/model/catalog/product.php
Находите функцию getProducts()
Находите строку
 

$query = $this->db->query($sql);

Перед ней пишете:
 

print_r($sql);

Получится примерно так:


 

Спойлер

image.png.00b8e9f54799b309c1898054f624a42f.png


Обновляете модификаторы и переходите на проблемную страницу на сайте.
Вверху появится строка с запросом, который Вас и интересует
 

Спойлер

image.thumb.png.518c166ffe4247b0e4e5df0f9b7169ea.png


Копируете и после SELECT добавляете *,
И с этой строкой бежите в phpmyadmin
Примерно вот так:
 

Спойлер

image.thumb.png.b1a59e7456af8a7e6a6926b11b6f6903.png


В результате запроса получится вот такое "полотенце":
 

Спойлер

image.thumb.png.168f21ac87242de46a898ad674e59946.png


ну и по полученным полям можно надеяться найти некорректно удаленный товар.
По картинке, названию, описанию, да мало ли. Там данных в выборке куча.
И уже от этого отталкиваться.

ЗЫ. После проделанных операция не забудьте удалить строку 
 

print_r($sql);

И снова обновить модификаторы

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

в дефолте это controller/product/category.php

$product_total = $this->model_catalog_product->getTotalProducts($filter_data);

            $results = $this->model_catalog_product->getProducts($filter_data);

            foreach ($results as $result) {

           if(!isset($result['product_id'])) continue; // это я добавил

// я не знаю какие модифик ипользуются, но привел пример по дефолту

 

                if ($result['image']) {
                    $image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
                } else {
                    $image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
                }

 

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

25 минут назад, esculapra сказал:

if(!isset($result['product_id'])) continue; // это я добавил

Вы предлагаете "закостылить" проблему? В принципе можно, но... :)
Ведь по факту товар был некорректно удален. Удалена запись из таблицы oc_product (это можно понять из запроса, так как выборка именно p.product_id)
 

Спойлер

image.png.607361fe95146dbf527beeabed33c8c7.png


А остальные таблицы скорее всего не тронуты. И в запросе с *, который выше этих самых "product_id" будет как минимум 5.
И именно по ним можно определить какой из товаров удален некорректно.
Ну и зная product_id можно смело вызвать из /admin/model/catalog/product.php функцию deleteProduct($product_id) и избавиться от хвостов...
 

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

Есть еще возможная проблема, это из модулей типа аналогичные товары, где идет ссылка на основной товар, а он или отключен, или у его нет в наличии

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

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

Вы предлагаете "закостылить" проблему?

Да, это как экстренная помощь. А дальше разбор полетов. В БД есть несколько связанных таблиц . Их можно скачать через интрумент бэкап, а я могу сделать десктопную прогу, которая все порешает, - дальше импорт бэкапа и все. Просто мне не встречались такие проблемы - видимо какой-то левый модуль рулит.

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

  • 2 years later...

Подниму тему, может кому будет полезно в будущем. Встретился с той же проблемой. Причина была в незаполненных полях для определенного языка. Произошло в результате парсинга. 

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


  • 1 month later...

Всем привет, тема старая, но проблема актуальна и на 2024. У меня такая же возникла проблема. Искала достаточно долго, много времени потратила, по итогу просто перенесла товар в другой раздел, старый удалила, проблема исчезла. Возможно кому-то поможет. 

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


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

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

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

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

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

Вхід

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

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

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