Вывод тегов товара
Привет.
Хочу на странице с товаром вывести все теги товара. Так, что бы по клику на тег получать все товары с этим тегом. В общем обычный функционал.
Попытался сделать вот так:
Подскажите, правильно ли я вообще делаю? Или подскажите, может есть готовые сниппеты для задуманного. Программист из меня некудышний, а разобраться хочется)
Спасибо!
Хочу на странице с товаром вывести все теги товара. Так, что бы по клику на тег получать все товары с этим тегом. В общем обычный функционал.
Попытался сделать вот так:
[[!tagLister? &tv=`ms_tags` ]]
Вроде как tagLister должен обрабатывать tv-параметры. Но тут он не работает… Можно конечно создать еще один tv, и писать теги товара в нем. Но не хочется лишнее поле делать.Подскажите, правильно ли я вообще делаю? Или подскажите, может есть готовые сниппеты для задуманного. Программист из меня некудышний, а разобраться хочется)
Спасибо!
Комментарии: 11
Ну тэги в miniShop2 не tv-поля, потому и не работает.
Вывести их ссылками можно через msOptions, например так:
Вывести их ссылками можно через msOptions, например так:
[[!msOptions?name=`tags`&tplOuter=`@INLINE <p><strong>Tags:</strong> [[+rows]]</p>`&tplRow=`@INLINE <a href="search.html?tag=[[+value]]">[[+value]]</a> `]]
А вот как сделать так, чтобы товары выводились, то тут уже надо думать. Я сделал это довольно криво через модификацию сниппита msProducts, что конечно не лучший вариант, но лучше пока не придумал. Можно еще для вывода использовать mSearch2, точнее mFilter2.
Вот здесь можно поглядеть:
bezumkin.ru/modx/minishop2/solutions/1160/
Сниппет — «Выбор товаров по опциям»
Ссылки у вас снабжены get-параметрами. Берём оттуда значение и «суём» в этот сниппет.
bezumkin.ru/modx/minishop2/solutions/1160/
Сниппет — «Выбор товаров по опциям»
Ссылки у вас снабжены get-параметрами. Берём оттуда значение и «суём» в этот сниппет.
Буквально у этого сниппета 4-ю строку поменять на $param1 = $_GET['tag'];
А сам сниппет соответственно должен быть на этой странице — search.html
А сам сниппет соответственно должен быть на этой странице — search.html
а вот такой еще вопрос: я в результате этих манипуляций получил просто список айдишников товаров… как бы мне их оформить нормально. Так, как они в каталоге выводятся… Подскажите…
Простой способ вставить результат в pdoResources:
Правильный способ в твоём сниппете сделать вместо print_r($result):
$modx->runsnippet('pdoResources', array('parents'=>1,'resources'=>$result));
[[pdoResources?
&parents=`1`
&resources=`[[!ТВОЙСНИППЕТ]]`
]]
Заменив в сниппете print_r($result) на echo $resultПравильный способ в твоём сниппете сделать вместо print_r($result):
$modx->runsnippet('pdoResources', array('parents'=>1,'resources'=>$result));
ничего не выводит, к сожалению…
сделал «правильным» способом… вызвал тот же сниппет на странице, поменял у него последнюю строку на правильную и ничего
Пришли код сниппета. Чудес же не бывает. Если сниппет возвращал список idшников, то значит вызываешь pdoResources не правильно. У меня в примере оочень примерный вызов. Его нужно переделать под твою ситуацию.
Это сниппет msTags:
А get параметр передается вот так:
<?php
$key = 'tags'; // имя опции товара
$category = 0; // фильтрация по категории
$param1 = $_GET['tag'];
$q = $modx->newQuery('msProductOption');
$q->innerJoin('msProduct', 'msProduct', 'msProduct.id=msProductOption.product_id');
$q->where(array('msProductOption.key' => $key, 'msProductOption.value'=> $param1));
$q->sortby('msProductOption.value','ASC');
$q->select('DISTINCT(msProductOption.value), msProduct.id');
$q->where(array('msProductOption.key' => $key));
if (!empty($category)) {
$ids = $modx->getChildIds($category);
$ids[] = $category;
$q->innerJoin('msCategory', 'msCategory', 'msCategory.id=msProduct.parent');
$q->where(array('msCategory.id:IN' => $ids));
}
$result = array();
if ($q->prepare() && $q->stmt->execute()) {
while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
$res['id'][] = $row['id'];
}
$result = implode(",", array_unique($res['id'])) ;
}
$modx->runsnippet('pdoResources', array('parents'=>3,'resources'=>$result));
На принимающей странице вот это:[[msTags?]]
А get параметр передается вот так:
[[!msOptions?name=`tags`&tplOuter=`@INLINE <p><strong>Tags:</strong> [[+rows]]</p>`&tplRow=`@INLINE <a href="tags?tag=[[+value]]">[[+value]]</a> `]]
У тебя же минишоп? Зачем ты повторяешь за мной про pdoResources??))
Так пробовал?
Опубликованны ли они? Может &showUnpublished нужно поставить 1?
Так пробовал?
[[!msProducts?
&parents=`3`
&resources=`[[!ТВОЙСНИППЕТ]]`
&showLog=`1`
]]
Ну или так:$modx->runsnippet('msProducts', array('parents'=>3,'resources'=>$result,'showLog'=>1));
Что выводит в логе? Точно у предка этих ресурсов id3?Опубликованны ли они? Может &showUnpublished нужно поставить 1?
спасибо за совет. попробую так сделать…
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.