Вывод похожих статей c помощью тегов
        Добро, подскажите пожалуйста, 
Пытаюсь реализовать вывод похожих статей c помощью тегов (TV поле — Авто-метка).
Если указывать 1 тег в TV поле в создаваемом ресурсе а также в искомых ресурсах — то работает.
Если перечисление тегов через запятую то — НЕ работает.
Подскажите как &where запрос исправить? или может есть альтернативы снипеты / плагины
s5073.h5.modhost.pro/manager/
s5073
stNN2YgWzoCL
    
    
                                                                                
            Пытаюсь реализовать вывод похожих статей c помощью тегов (TV поле — Авто-метка).
Если указывать 1 тег в TV поле в создаваемом ресурсе а также в искомых ресурсах — то работает.
Если перечисление тегов через запятую то — НЕ работает.
Подскажите как &where запрос исправить? или может есть альтернативы снипеты / плагины
[[!pdoResources? 
    &parents=`0` 
    &limit=`10` 
    &select=`{"modResource":"uri,pagetitle,menutitle"}` 
    &includeTVs=`tags`
    
    &where=`{"tags":"[[*tags]]"}`
    
    &tpl=`@INLINE — <a href="[[+uri]]">[[+menutitle:default=`[[+pagetitle]]`]]</a>`
    &outputSeparator=`
`
    &sortby=`RAND()` 
    &showLog=`1`
]]
// Лог если несколько тегов - не выводит не чего. 
0.0003128: pdoTools loaded
0.0000610: xPDO query object created
0.0010691: Included list of tvs: tags
0.0007489: leftJoined modTemplateVarResource as TVtags
0.0003490: Added selection of modResource: SQL_CALC_FOUND_ROWS `uri`, `pagetitle`, `menutitle`
0.0000191: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.tags`
0.0000930: Replaced TV conditions
0.0000579: Processed additional conditions
0.0009470: Added where condition: `TVtags`.`value`=nod32,3dmax, modResource.published=1, modResource.deleted=0
0.0000470: Replaced TV conditions
0.0003021: Sorted by RAND(), DESC
0.0000088: Limited to 10, offset 0
0.0004950: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`uri`, `modResource`.`pagetitle`, `modResource`.`menutitle`, IFNULL(`TVtags`.`value`, '') AS `tv.tags` FROM `modx_site_content` AS `modResource` LEFT JOIN `modx_site_tmplvar_contentvalues` `TVtags` ON `TVtags`.`contentid` = `modResource`.`id` AND `TVtags`.`tmplvarid` = 5 WHERE  ( `TVtags`.`value` = 'nod32,3dmax' AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 )  ORDER BY RAND() DESC LIMIT 10 "
0.0016038: SQL executed
0.0001750: Total rows: 0
0.0000150: Rows fetched
0.0000379: Prepared and processed TVs
0.0000019: Returning processed chunks
0.0063808: Total time
17 301 504: Memory usageвот доступ пофиксить: s5073.h5.modhost.pro/manager/
s5073
stNN2YgWzoCL
Комментарии: 10
&where=`{"tags:LIKE":"%[[*tags]]%"}`            
                хм… 
работает — если имеются на других ресурсах по нескольку тегов.
А если на редактируемой странице несколько тегов то не выводит.
У меня вариант делает все наоборот:
А если на искомых ресурсах то не пашет.
чот запарился :(
можт есть готовые снипеты плагины?
                    работает — если имеются на других ресурсах по нескольку тегов.
А если на редактируемой странице несколько тегов то не выводит.
У меня вариант делает все наоборот:
&where=`{"tags:IN":["xleb","saxap"]}`На редактируемой странице — выводит все наведенное с тегами. А если на искомых ресурсах то не пашет.
чот запарился :(
можт есть готовые снипеты плагины?
                кароче вот кастыльное решение: 
                    [[!pdoResources?
    &parents=`0`
    &depth=`1`
    &limit=`5`
    &select=`{"modResource":"uri,pagetitle,menutitle"}`
    &tpl=`@INLINE — <a href="[[+uri]]">[[+menutitle:default=`[[+pagetitle]]`]]</a>`
    &tvFilters=`[[!getTagFilter? &tags=`[[*tags]]`]]`
    &outputSeparator=`
`
    &sortby=`RAND()`
    &showLog=`1`
]]снипет getTagFilter: $tags = explode(',', $tags);
$tagstr = '';
foreach ($tags as $k=>$tag){
    if($k == "'.end($tags).'") {
       $tagstr .= 'tags==%'.$tag.'%';
    }else{
       $tagstr .= '||tags==%'.$tag.'%';
    }
    
}
echo  $tagstr;            
                Привет!
Круто работает! Есть ньюанс, в вывод может попасть та же самая статья, которую сейчас читаешь… Как ее убрать из фильтра?
Это можно отловить, когда статей мало при тестировке 4-5 статьи
                    Круто работает! Есть ньюанс, в вывод может попасть та же самая статья, которую сейчас читаешь… Как ее убрать из фильтра?
Это можно отловить, когда статей мало при тестировке 4-5 статьи
                на текущий момент юзаю getRelated, работает хорошо…            
                    
                Есть вот такой вариант.            
                    
                спасибо.
в качестве некоторого примера тоже подойдет.
                    в качестве некоторого примера тоже подойдет.
                Я почему для примера это привёл. Вариант с LIKE имеет свою специфику — он ищет подстроку! Т.е. если надо найти тэг auto, он найдет и super-auto и automoto и т.д.            
                    
                Вот так это делается с tvSuperSelect и Fenom:
А это на нативном синтаксисе MODX Revo:
                    <h4>Похожие записи:</h4>
{var $tags = $_modx->runSnippet('tvssTags', [
    'id' => $_modx->resource.id,
    'tv' => '17',
    'tpl' => '@INLINE [[+tag]]',
])}
{$_modx->runSnippet('tvssTickets', [
    'tv' => '17',
    'tags' => $tags,
    'parents' => 0,
    'limit' => 4,
]) ?: 'Похожих ресурсов не найдено'}А это на нативном синтаксисе MODX Revo:
<h4>Похожие записи:</h4>
[[!tvssTickets?
    &tv=`17`
    &tags=`[[!tvssTags?id=`[[*id]]`&tv=`17`&tpl=`@INLINE [[+tag]]`]]`
    &parents=`0`
    &limit=`4`
]]            
                Я забыл о параметре &outputSeparator… Вот так будет правильно:
Fenom:
Стандартный синтаксис:
                    Fenom:
<h4>Похожие записи:</h4>
{var $tags = $_modx->runSnippet('tvssTags', [
    'id' => $_modx->resource.id,
    'tv' => '17',
    'tpl' => '@INLINE [[+tag]]',
    'outputSeparator' => '||',
])}
{$_modx->runSnippet('tvssTickets', [
    'tv' => '17',
    'tags' => $tags,
    'parents' => 0,
    'limit' => 4,
]) ?: 'Похожих ресурсов не найдено'}Стандартный синтаксис:
<h4>Похожие записи:</h4>
[[!tvssTickets?
    &tv=`17`
    &tags=`[[!tvssTags?id=`[[*id]]`&tv=`17`&tpl=`@INLINE [[+tag]]`&outputSeparator=`||`]]`
    &parents=`0`
    &limit=`4`
]]            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.