Перейти к содержанию
Официальный форум поддержки Simpla

Связанные товары автоматом


Рекомендуемые сообщения

Вот нашел на одном сайте, может кому пригодится -
открываем файл view/ProductView.php и в районе 144 строки находим код

$this->design->assign('related_products', $related_products);
}

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

else { // генерируемые связанные товары
$products->categories = $this->categories->get_categories(array('product_id'=>$product->id));
$category = reset($products->categories);

$related_products = array();
$after = false;

$products = $this->products->get_products(array('category_id' => $category->id, 'limit' => 100, 'in_stock'=>1, 'visible'=>1));

foreach($products as $p)
{
if($after && count($related_products) < 6)
$related_products[$p->id] = $p;
elseif($p->id == $product->id)
$after = true;
}

if(count($related_products) < 6)
foreach($products as $p)
if($p->id != $product->id && count($related_products) < 6)
$related_products[$p->id] = $p;
else break;

$related_products_images = $this->products->get_images(array('product_id'=>array_keys($related_products)));
foreach($related_products_images as $related_product_image)
if(isset($related_products[$related_product_image->product_id]))
$related_products[$related_product_image->product_id]->images[] = $related_product_image;
$related_products_variants = $this->variants->get_variants(array('product_id'=>array_keys($related_products), 'instock'=>true));
foreach($related_products_variants as $related_product_variant)
{
if(isset($related_products[$related_product_variant->product_id]))
{
$related_product_variant->price *= (100-$discount)/100;
$related_products[$related_product_variant->product_id]->variants[] = $related_product_variant;
}
}
foreach($related_products as $r)
{
$r->image = &$r->images[0];
$r->variant = &$r->variants[0];
}
$this->design->assign('related_products', $related_products);
} // end: генерируемые связанные товары

Логика заключается в том, что мы выбираем весь товары из категории (в скрипте есть ограничение в 100, если у Вас больше — увеличьте на предполагаемых длину). Скрипт выбирает связанный товар (6 штук), которые идут после данного товара. При достижении конца списка скрипт добирает нехватку ихз начала списка. Таким образом список связанных товар фиксированный до тех пока не внесут изменения в каталог.

Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты

Это не тот же код и логика тут другая.
Почему все гонятся за 100% подходящим им решением - как ни пытайся надоумить понять чужой код и исправить под себя - никак не получается.
Ни один движек и ни одна правка не будет полностью отвечать необходимым параметрам, как ни крути. А надо всего-то немного подумать и понять, что автор хотел этим сказать.
лишь портированый на новую то это шлак Может и есть недочеты, так почему Вы, уважаемый Нокстер, их копируете, а не предложите свое - альтернативное решение.
Я не стремлюсь писать код под чужие сайты - своей работы достаточно. а те решение, что предлагаю - это часть того, что уже работает и неплохо себя зарекомендовало. А выводить весь сайт, который писался под заказ (со всеми изменениями кода) не считаю честным и целесообразным, т.к. люди за это заплатили.

Ссылка на сообщение
Поделиться на другие сайты

2 igoryk
Может сделаете репост всех статей :) А чего народ зря гонять куда-то... Если можно на форуме пофлудить, создав несколько раз 1 и ту же тему!!!

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

Фиг знает, март подскажи ссылку на свой форум, где есть аналогичное решение, может оно поможет.

igoryk - спасибо огромное, у меня заработало, но выдает ошибки/ Как решить?

Warning: Attempt to assign property of non-object in /home/k/#/#/public_html/view/ProductView.php on line 197

Warning: reset() [function.reset]: Passed variable is not an array or object in /home/k/#/#/public_html/view/ProductView.php on line 199

Warning: Cannot modify header information - headers already sent by (output started at /home/k/#/#/public_html/view/ProductView.php:197) in /home/k/#/#/public_html/view/ProductView.php on line 215

Warning: Cannot modify header information - headers already sent by (output started at /home/k/#/#/public_html/view/ProductView.php:197) in /home/k/#/#/public_html/index.php on line 32

Ссылка на сообщение
Поделиться на другие сайты

Это предупреждения. В теории их можно просто игнорировать добавив в index.php
error_reporting(0);
А если по коду - там последовательность строк поменять. Сейчас не вспомню каких, но по логике те, что выбирают текущую категорию.

Ссылка на сообщение
Поделиться на другие сайты
  • 2 года спустя...

Люди, подскажите, можно ли расширить стандартный функционал в админке в карточке товара, чтобы помимо конкретных связанных товаров, можно еще было выбирать категорию (несколько категорий), из которой(ых) выбирались бы связанные товары автоматом и рандомно, и бренд(бренды)!

 

Соответственно, если указана только категория (категории) - то рандомно выбираюся все товары (которые в наличии) всех брендов, а если указан бренд (бренды) - то отбираются товары только из этой категории (этих категорий) и только конкретного бренда (или выбранных брендов)?

Ссылка на сообщение
Поделиться на другие сайты
  • 1 год спустя...

а как их рандомно выводить ? что бы при обновлении карточки товара связаный товар автоматически менялся

Ссылка на сообщение
Поделиться на другие сайты
  • 6 месяцев спустя...
  • 5 месяцев спустя...

Это предупреждения. В теории их можно просто игнорировать добавив в index.php

error_reporting(0);

А если по коду - там последовательность строк поменять. Сейчас не вспомню каких, но по логике те, что выбирают текущую категорию.

 

Добрый вечер! mart, а подскажите пожалуйста, как исправить ошибку не прописывая index.php - error_reporting(0); ?

 

Ошибка как у yastranger

 

Warning: Attempt to assign property of non-object in /home/k/#/#/public_html/view/ProductView.php on line 197

Warning: reset() [function.reset]: Passed variable is not an array or object in /home/k/#/#/public_html/view/ProductView.php on line 199

Warning: Cannot modify header information - headers already sent by (output started at /home/k/#/#/public_html/view/ProductView.php:197) in /home/k/#/#/public_html/view/ProductView.php on line 215

Warning: Cannot modify header information - headers already sent by (output started at /home/k/#/#/public_html/view/ProductView.php:197) in /home/k/#/#/public_html/index.php on line 32
Ссылка на сообщение
Поделиться на другие сайты

Март давно уже отошёл от разработок симплы, так что не рассчитывайте, да и к тому же вы на дату топика смотрели, вас она не смущает?

Ссылка на сообщение
Поделиться на другие сайты
Noxter

Вы бы не могли пожалуйста помочь подкорректировать? Можно ли решить эту задачу или решение только игнорировать ошибки в index.php

Ссылка на сообщение
Поделиться на другие сайты

Noxter

Вы бы не могли пожалуйста помочь подкорректировать? Можно ли решить эту задачу или решение только игнорировать ошибки в index.php

Решить можно любую проблему.

Я по шею весь в проектах по этому помочь смогу но не скоро.

Ссылка на сообщение
Поделиться на другие сайты

В присланном файле в строке 197 содержится

        // Категория и бренд товара,

то есть только комментарий.  Поэтому не может быть ошибки, которую Вы привели:

Warning: Attempt to assign property of non-object in /home/k/#/#/public_html/view/ProductView.php on line 197.

 

Могу предположить, что ошибка у Вас в строке 198, надо

$product->categories = $this->categories->get_categories(array('product_id'=>$product->id));

(убрать один лишний символ).

 

Если не поможет, то надо смотреть конкретно на Вашем сервере...

Ссылка на сообщение
Поделиться на другие сайты
  • 3 месяца спустя...

В чем может быть ошибка?

Warning: Creating default object from empty value in /home/view/ProductView.php on line 141
141. $products->categories = $this->categories->get_categories(array('product_id'=>$product->id)); 
142. $category = reset($products->categories);
143.
144. $related_products = array();
Ссылка на сообщение
Поделиться на другие сайты

 

В чем может быть ошибка?

Warning: Creating default object from empty value in /home/view/ProductView.php on line 141
141. $products->categories = $this->categories->get_categories(array('product_id'=>$product->id)); 
142. $category = reset($products->categories);
143.
144. $related_products = array();

 

написано же. вы создаете объект из пустого значения.

 

перед строкой 141 допишите

$products = new stdClass();
Ссылка на сообщение
Поделиться на другие сайты

 

написано же. вы создаете объект из пустого значения.

 

перед строкой 141 допишите

$products = new stdClass();

Спасибо большое. Но если даже удалить строки

141. $products->categories = $this->categories->get_categories(array('product_id'=>$product->id)); 
142. $category = reset($products->categories);

то тоже работает

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...