Вывод всех категорий товара
Привет всем!
Есть такой сниппет:
Вывод всех категорий товара
docs.modx.pro/komponentyi/minishop2/poleznyie-vyiborki/vyivod-vsex-kategorij-tovara
Кто знает, как вывести тоже самое на странице категории в товарах, Напишите, пожалуйста.
Есть такой сниппет:
Вывод всех категорий товара
docs.modx.pro/komponentyi/minishop2/poleznyie-vyiborki/vyivod-vsex-kategorij-tovara
<?php
if (empty($rid)) {$rid = $modx->resource->id;}
if (empty($pid)) {$pid = $modx->resource->parent;}
if (empty($delimeter)) {$delimeter = ' , ';}
$scheme = $modx->getOption('link_tag_scheme', null, 'full', true);
$q = $modx->newQuery('msCategory');
$q->leftJoin('msCategoryMember', 'msCategoryMember', array(
'`msCategory`.`id` = `msCategoryMember`.`category_id`'
));
$q->sortby('pagetitle','ASC');
$q->groupby('id');
$q->select(array('id','pagetitle'));
$q->where('`msCategoryMember`.`product_id` = '.$rid.' OR `id` = '.$pid);
$result = array();
if ($q->prepare() && $q->stmt->execute()) {
while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
$url = $modx->makeUrl($row['id'], '', '', $scheme);
$result[] = '<a href="'.$url.'">'.$row['pagetitle'].'</a>';
}
}
return implode($delimeter, $result);
Но он выводит категории только на странице товара.Кто знает, как вывести тоже самое на странице категории в товарах, Напишите, пожалуйста.
Комментарии: 3
На Fenom так
Но лучше в msProducts дописать параметр leftJoin, кажется так будет немного оптимизированнее
{'!SnippetName' | snippet: [
'rid' => $id,
'pid' => $parent
]}
На родном синтаксисе так[[!SnippetName?
&rid=`[[+id]]`
&pid=`[[+parent]]`
]]
SnippetName — заменить на название сниппет.Но лучше в msProducts дописать параметр leftJoin, кажется так будет немного оптимизированнее
Спасибо огромное, работает.
Можете еще сказать, как вывести только ID или только pagetitle?
Можете еще сказать, как вывести только ID или только pagetitle?
<?php
if (empty($rid)) {$rid = $modx->resource->id;}
if (empty($pid)) {$pid = $modx->resource->parent;}
if (empty($delimeter)) {$delimeter = ' , ';}
$pdo = $modx->getService('pdoTools');
$scheme = $modx->getOption('link_tag_scheme', null, 'full', true);
$q = $modx->newQuery('msCategory');
$q->leftJoin('msCategoryMember', 'msCategoryMember', array(
'`msCategory`.`id` = `msCategoryMember`.`category_id`'
));
$q->sortby('pagetitle','ASC');
$q->groupby('id');
$q->select($modx->getSelectColumns('msCategory'));
$q->where('`msCategoryMember`.`product_id` = '.$rid.' OR `id` = '.$pid);
$result = array();
$html = '';
if ($q->prepare() && $q->stmt->execute()) {
while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
if($tpl){
$html .= $pdo->parseChunk($tpl, $row);
}
else{
$result[] = $row;
}
}
}
return $html ?: $result;
Добавил параметр tpl это обычный чанк, в нём доступен массив полей ресурса в виде плейсхолдеров типа {$pagetitle} или [[+pagetitle]]. Можете выводить что угодно и как угодно.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.