Кто пользуется tvSuperSelect
Всем привет. Есть здесь те 37 человек, которые используют tvSuperSelect? Мне нужна помощь по части создания тегов для тикетов. Я уже писал вопрос, но там заглохло. Нужен сниппет, который бы получал тикеты по тегу. Всё что уже сделано есть по той ссылке выше.
Там получается у тегов ссылка вида site.ru/section?tag=Мойтэг
В разделе с тикетами заменяю вызов getTickets на вызов своего сниппета:
Ответ на вопрос однозначно даст много лайков), вопрос тегов для блога популярный. И я допишу в том вопросе полное решение.
Там получается у тегов ссылка вида site.ru/section?tag=Мойтэг
В разделе с тикетами заменяю вызов getTickets на вызов своего сниппета:
<?php
$tag = isset($_GET['tag']) ? $modx->sanitizeString($_GET['tag']) : '';
if ($tag){
// здесь происходит колдунство и я получаю id тикетов у которых есть нужный тег
// и передаю их в getTickets
}
return $modx->runSnippet('getTickets',$scriptProperties);
Я не силен в API и Mysql, поэтому сам не могу.Ответ на вопрос однозначно даст много лайков), вопрос тегов для блога популярный. И я допишу в том вопросе полное решение.
Комментарии: 11
Избавь себя от гемороя) Вот тебе готовое решение) В комментариях есть всё, что надо)
У меня и из облака тегов выводятся статьи по тегу) И из тега под каждой статьёй и так далее)))
У меня и из облака тегов выводятся статьи по тегу) И из тега под каждой статьёй и так далее)))
Tagger вроде бы не работает с Tickets, может использоваться только для стандартных документов
Стал бы Я советовать, если бы оно не работало?) Почему у меня тогда всё прекрасно работает?)
Это было давно и уже не правда. Начиная с версии 1.6, Tickets успешно работает с Tagger.
В процессе. На днях выложу…
Если у вас 1 тег в гет-параметре, то:
Ну или тоже самое на чистом pdo, если помимо списка id не нужны примеси:
В противном случае нужно дробить get-параметр по разделителю и циклом добавлять условия OR.
[[!pdoPage? &parents=`0`
...
&includeTVs=`tags`
&where=`{"tags:LIKE":"%[[#GET.tag]]%"}`
//tags заменить на название своего тв
]]
Ну или тоже самое на чистом pdo, если помимо списка id не нужны примеси:
$tag = $modx->sanitizeString($_GET['tag']);
if (empty($tag)) {
return 'Не выбран ни один тег.'
}
$q = $modx->newQuery('modResource');
//возможно, потребуется дополнительно обернуть в "%" . $tag . "%"
$q->where(array('tags:LIKE' => $tag));
$q->select('`modResource`.`id`');
if ($q->prepare() && $q->stmt->execute()) {
$ids = $q->stmt->fetchAll(PDO::FETCH_COLUMN);
return $ids;
}
else {
return 'Подходящих результатов не найдено.';
}
В противном случае нужно дробить get-параметр по разделителю и циклом добавлять условия OR.
Можешь обновляться. Доку краткую пишу.
Вот это подарок! Целенаправленно ждал и дождался. Спасибо, оно того стоило.
В tvssTags outputSeparator почему-то не влияет. Вернее, нет возможности вывода без разделителя. outputSeparator=``, то будет выводить через запятую. UPD. Всё понял, пробел туда.
Чуть позже поправлю, чтоб пустое значение кушал тоже. Проглядел это.
Я понимаю, что уже есть новая версия с дополнительными сниппетами. Но для истории сохраню код, как вывести тикеты по тегу
[[!pdoPage?
&element=`getTickets`
&parents=`0`
&loadModels=`tvsuperselect`
&select=`{
"tvTags":"tvTags.value as tag"
}`
&leftJoin=`{
"tvTags":{"class":"tvssOption", "on":"Ticket.id = tvTags.resource_id"}
}`
&where=`{ "tvTags.value":"[[!+vp.tag]]" }`
&tpl=`tpl.Ticket`
&includeContent=`1`
&includeTVs=`img,tags`
&tvPrefix=`tv.`
]]
[[!+page.nav]]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.