PowerPartners.ru

Форум партнерской программы
Текущее время: 06 фев 2025, 19:22

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Как вывести случайный товар?
СообщениеДобавлено: 11 янв 2025, 18:32 
Не в сети

Зарегистрирован: 20 окт 2024, 16:23
Сообщения: 4
Например хочу чтобы случайно выводились популярные товары штук 6 на странице.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как вывести случайный товар?
СообщениеДобавлено: 15 янв 2025, 12:09 
Не в сети
Поддержка партнеров
Аватара пользователя

Зарегистрирован: 24 июл 2023, 13:55
Сообщения: 495
На какой странице и в каком ее месте необходимо вывести случайный товар? Какой скин используется?


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как вывести случайный товар?
СообщениеДобавлено: 22 янв 2025, 10:05 
Не в сети

Зарегистрирован: 20 окт 2024, 16:23
Сообщения: 4
Хочу выводить на главной, в каталогах, и на карточках товара.

Скин 2k22


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как вывести случайный товар?
СообщениеДобавлено: 22 янв 2025, 15:27 
Не в сети
Поддержка партнеров
Аватара пользователя

Зарегистрирован: 13 май 2024, 13:47
Сообщения: 124
Создаем файл /custom/hooks.php (если его нет). Поместим в него пару функций для дальнейшего удобства:
Код:
<?php

function getRandomProduct($products) {
  $i = rand(0, count($products) - 1);
  if ($products[$i]['available'] && ($products[$i]['price'] > 0) && ($products[$i]['series'] != 'SERVICE'))
    return $products[$i];
  else
    return getRandomProduct($products);
}

function getRandomGoods($products, $num = 6) {
  $random_goods = [];
  for ($i = 0; $i < $num; $i++) {
    $random_goods[] = getRandomProduct($products);
  }
  return $random_goods;
}


Вывод случайных товаров на главной

В файл /custom/hooks.php добавляем
Код:
function onIndex($tmpl, $products) {
  $tmpl->setLoop('random_goods', getRandomGoods($products));
}

В нужное место шаблона /theme/index.tmpl вставляем:
Код:
<h1>Случайные товары</h1>
<div class="items-list" itemscope itemtype="https://schema.org/OfferCatalog">
  <TMPL_IF NAME='random_goods'>
    <TMPL_LOOP NAME='random_goods'>
      <TMPL_INCLUDE FILE="_item.tmpl" MODE="INLINE">
    </TMPL_LOOP>
  </TMPL_IF>
</div>


Вывод случайных товаров в категориях

В файл /custom/hooks.php добавляем
Код:
function onCategoryDisplay($tmpl, $cat, $products) {
  $tmpl->setLoop('random_goods', getRandomGoods(getProductsArray()));
}

В нужное место шаблона /theme/cat.tmpl вставляем:
Код:
<h1>Случайные товары</h1>
<div class="items-list" itemscope itemtype="https://schema.org/OfferCatalog">
  <TMPL_IF NAME='random_goods'>
    <TMPL_LOOP NAME='random_goods'>
      <TMPL_INCLUDE FILE="_item.tmpl" MODE="INLINE">
    </TMPL_LOOP>
  </TMPL_IF>
</div>


Вывод случайных товаров на карточках товаров

В файл /custom/hooks.php добавляем
Код:
function onProductDisplay($code, $tmpl) {
  $tmpl->setLoop('random_goods', getRandomGoods(getProductsArray()));
}

В нужное место шаблона /theme/product.tmpl вставляем:
Код:
<h1>Случайные товары</h1>
<div class="items-list" itemscope itemtype="https://schema.org/OfferCatalog">
  <TMPL_IF NAME='random_goods'>
    <TMPL_LOOP NAME='random_goods'>
      <TMPL_INCLUDE FILE="_item.tmpl" MODE="INLINE">
    </TMPL_LOOP>
  </TMPL_IF>
</div>


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как вывести случайный товар?
СообщениеДобавлено: 23 янв 2025, 11:41 
Не в сети

Зарегистрирован: 20 окт 2024, 16:23
Сообщения: 4
спасибо, все работает


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как вывести случайный товар?
СообщениеДобавлено: 23 янв 2025, 12:50 
Не в сети

Зарегистрирован: 22 июл 2012, 13:08
Сообщения: 371
а как для конкретных категорий и карточек товара выводить свой пул рандомно выводящихся товаров?
чтоб не было на категории и странице товара стабилизаторов - инверторов и акб.
ну и на главной чтоб выводить рандомные товары из кокретных категорий


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как вывести случайный товар?
СообщениеДобавлено: 24 янв 2025, 18:22 
Не в сети
Поддержка партнеров
Аватара пользователя

Зарегистрирован: 13 май 2024, 13:47
Сообщения: 124
Для главной

Меняем функцию onIndex() в /custom/hooks.php из предыдущего примера, добавляя выборку товаров по xpath, например так:
Код:
function onIndex($tmpl, $products) {
  $xpath = "//product[category='ИБП']";
  $tmpl->setLoop('random_goods', getRandomGoods(getProductsArray($xpath)));
}
И теперь на главной, в блоке случайных товаров, отображаются лишь случайные ИБП


Для категорий

В файле /custom/custom_cat.php добавляем для нужных категорий параметр random_xpath в котором приписываем xpath для случайных товаров:
Код:
<?php

$nav['resanta-ach']['random_xpath'] = "//product[category='Стабилизатор напряжения' and trademark='Энергия']";
$nav['instab']['random_xpath'] = "//product[category='Стабилизатор напряжения' and trademark='Ресанта']";
А функцию onCategoryDisplay() в файле /custom/hooks.php из предыдущего примера меняем на:
Код:
function onCategoryDisplay($tmpl, $cat, $products) {
  global $nav;
  if (isset($nav[$cat]['random_xpath']))
    $tmpl->setLoop('random_goods', getRandomGoods(getProductsArray($nav[$cat]['random_xpath'])));
  else
    $tmpl->setLoop('random_goods', getRandomGoods(getProductsArray()));
}
Теперь для категории resanta-ach отображаются случайные стабилизаторы марки "Энергия". Для категории instab отображаются случайные стабилизаторы марки "Ресанта". А для всех остальных категорий (для которых не прописан параметр random_xpath) отображаются случайные товары из всего ассортимента.


Для отдельных товаров

Прописываем random_xpath для отдельных товаров в файле /custom/shop.xml, например так:
Код:
<?xml version="1.0" encoding="utf-8"?>

<shop>
  <products>
    <product code="hiden-ku9101h">
      <random_xpath>//product[category='Сварочный аппарат']</random_xpath>
    </product>
    <product code="is12000">
      <random_xpath>//product[category='Стабилизатор напряжения' and trademark='Рубин']</random_xpath>
    </product>
  </products>
</shop>
А функцию onProductDisplay() в файле /custom/custom_cat.php из предыдущего примера заменяем на:
Код:
function onProductDisplay($code, $tmpl) {
  $product = getProductsArray("//product[@code='" . $code . "']");
  if (isset($product['0']['random_xpath']))
    $tmpl->setLoop('random_goods', getRandomGoods(getProductsArray($product['0']['random_xpath'])));
  else
    $tmpl->setLoop('random_goods', getRandomGoods(getProductsArray()));
}
Теперь для товара с кодом hiden-ku9101h в блоке случайных товаров отобразятся лишь сварочные аппараты. Для товара с кодом is12000 в случайных товарах будут лишь стабилизаторы марки "Рубин". А для всех остальных товаров (у которых нода random_xpath не прописана) в блоке случайных товарах будут отображаться товары из всего ассортимента.


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB