как получить из базы к каким спискам принадлежит товар для вывода в шаблоне? Есть решение
надо вывести в шаблоне блок с меткой, если товар есть в списке "promo".
как написать if?
как сюда вписать id товара?
{if $wa->shop->productSet('promo')}111{/if}
этот код выводит метку "111" во всех товарах, если в списке promo есть хоть один товар, а вот как выводить метку только в том случае, если именно этот товар есть в списке promo?
как написать if?
как сюда вписать id товара?
{if $wa->shop->productSet('promo')}111{/if}
этот код выводит метку "111" во всех товарах, если в списке promo есть хоть один товар, а вот как выводить метку только в том случае, если именно этот товар есть в списке promo?
24 ответа
public static function getProductSets($product_id = null)
{
if(!is_null($cat_id))
{
$model = new shopSetProductsModel();
$sets = $model->select('set_id')->where('product_id='.$product_id)->fetchAll();
return $sets;
}
}
Как делать хелперы
http://www.webasyst.ru/developers/docs/helpers/custom-helpers/
if(!is_null($product_id))
<?php
class shopCustom
{
public static function getProductSets($product_id = null)
{
if(!is_null($product_id))
{
$model = new shopSetProductsModel();
$sets = $model->select('set_id')->where('product_id='.$product_id)->fetchAll();
return $sets;
}
}
а в шаблоне карточки товара воткнула:
{shopCustom::getProductSets($product_id)}
что не так в коде? или что-то я не доделала?
Файл разместили по пути wa-apps/shop/lib/shopCustom.class.php ?
закрывающую скобку добавила в конце. теперь карточка товара вся выводится, но ничего на странице не добавилось. проигнорировало код ((
{shopCustom::getProductSets($product_id)}
переменная product_id должна быть определена
если это страница товара, то в файле product.html должно быть так
{$product_id = $product.id}
если это страница категории, то
в файле list-thumbs.html
{$product_id = $p.id}
---------
и только после этого вызывть
{shopCustom::getProductSets($product_id)}
{shopCustom::getProductSets($product.id)}
то выводится текст "Array"
может тип данных не тот?
{$sets = shopCustom::getProductSets($product.id)}
{foreach $sets as $set}
{$set}
{/foreach}
Если так не получится, напишите, что у Вас выводится
{$sets|var_dump} - это вывод массива
если так:
<?php
class shopCustom
{
public static function getProductSets($product.id = null)
{
if(!is_null($product_id))
{
$model = new shopSetProductsModel();
{$sets = shopCustom::getProductSets($product.id)}
{foreach $sets as $set}
{$set}
{/foreach}
}
}
}
то "NULL"
и то же "NULL" если так:
<?php
class shopCustom
{
{$sets = shopCustom::getProductSets($product.id)}
{foreach $sets as $set}
{$set}
{/foreach}
}
поправила, уже лучше, но не то мальца.
когда так: {$sets = shopCustom::getProductSets($product.id)}
{foreach $sets as $set}
{$set}
{/foreach}
такое:Array Array
когда этот вариант:
{$sets = shopCustom::getProductSets($product.id)}
{foreach $sets as $set}
{$set}
{/foreach}
{$sets|var_dump}
то :
Array Array array(2) { [0]=> array(1) { ["set_id"]=> string(5) "promo" } [1]=> array(1) { ["set_id"]=> string(9) "ya_market" } }
{foreach $sets as $set}
{$set.set_id}
{/foreach}
либо
{foreach $sets as $set}
{foreach $set as $item}
{$item}
{/foreach}
{/foreach}
Пишите мне на личную почту tdmitriiv@gmail.com
А то тему искать каждый раз
1. файл /wa-apps/shop/lib/classes/shopCustom.class.php с содержанием:
<?php
class shopCustom
{
public static function getProductSets($product_id = null)
{
if(!is_null($product_id))
{
$model = new shopSetProductsModel();
$sets = $model->select('set_id')->where('product_id='.$product_id)->fetchAll();
return $sets;
}
}
}
2. в шаблоне (категории или товара) добавляем в нужное место:
{$sets = shopCustom::getProductSets($product.id)}
{foreach $sets as $set}
{foreach $set as $item}
{if $item=='promo'}ваш код метки{/if}
{/foreach}
{/foreach}
***
хозяйке на заметку:
в виде кода метки можно приляпать код наклейки. например, "новинка" или "хит продаж". тогда все товары этого списка при выводе будут иметь эту наклейку, и не надо ручками их обклеивать персонально. но в админке оно выделяцо не будет.
Этот хелпер не работает со списками типа «Фильтр», только с обычными списками, в которые товары добавляются вручную...
public static function getServices($product_ids)
{
if (!$product_ids) {
return array();
}
$services_model = new shopProductServicesModel();
$rows = $services_model->select('id,product_id,sku_id,service_id, price, primary_price')->
where('product_id='.$product_id)->fetchAll();
$services = array();
foreach ($rows as $row) {
$p_id = $row['product_id'];
unset($row['product_id']);
$services[$p_id][$row['id']] = $row;
}
return $services;
}
Скажите пожалуйста, что не правильно в обращении к бд?
Хочу вывести в каталоге стоимость услуг у товаров. Спасибо.
public static function getServices($product_ids)
{
if (!$product_ids) {
return array();
}
$services_model = new shopProductServicesModel();
$rows = $services_model->select('id,product_id,sku_id,service_id, price, primary_price')->
where('product_id IN (i:ids)', array('ids' => $product_ids))->fetchAll();
$services = array();
foreach ($rows as $row) {
$p_id = $row['product_id'];
unset($row['product_id']);
$services[$p_id][$row['id']] = $row;
}
return $services;
}
вызов
{$services = shopCustom::getServices(array_keys($products))}
{if count($services[$p.id]) > 0}
{foreach $services[$p.id] as $s}
<p class="price-installation">{shop_currency_html($s.price, $s.currency)}</p>
{/foreach}
{/if}
И где в таблицах название сервиса? Возможно её вытянуть так же?
Проверяю принадлежит ли товар к списку "новинки" ( у меня newcomers) в карточке товара.Без создания хелпера
Проверяет и другие списки, если проверку ставить друг за другом и выводит нужную наклейку. Подскажите как это прикрутить в категории (list-thumbs).