pdotools + tvsuperselect
Здравствуйте!
Есть дерево след. вида:
Врачи
— Врач 1 (ТВ тэг Уролог || Хирург)
— Врач 2 (ТВ тэг Хирург)
— Врач 3 (ТВ тэг ЛОР)
Нужно вывести врачей по категориям, из выше изложенного дерева должно получится:
Хирург — Врач 1, Врач 2
Уролог — Врач 1
Лор — Врач 3 и тд.
Подскажите пожалуйста, как решить данную задачу посредством pdotools и tvsuperselect?
P.S. делаю из-за того, что в Collections нельзя вывести ТВ параметры (изображении) во втором вложении
как в примере,
Врачи
— Уролог
|____ Врач 1
|____ Врач 2
— Хирург
|____ Врач 1
— Лор
|____ Врач 3
и не сделать Вывод ТВ в документах (кастомазации форм) в как в примере ilyaut.ru/tips-and-tricks/customization-of-forms-in-modx-revolution/
Выводит только на предмет проверки, что документ является потомком «parent» первого уровня.
Есть дерево след. вида:
Врачи
— Врач 1 (ТВ тэг Уролог || Хирург)
— Врач 2 (ТВ тэг Хирург)
— Врач 3 (ТВ тэг ЛОР)
Нужно вывести врачей по категориям, из выше изложенного дерева должно получится:
Хирург — Врач 1, Врач 2
Уролог — Врач 1
Лор — Врач 3 и тд.
Подскажите пожалуйста, как решить данную задачу посредством pdotools и tvsuperselect?
P.S. делаю из-за того, что в Collections нельзя вывести ТВ параметры (изображении) во втором вложении
как в примере,
Врачи
— Уролог
|____ Врач 1
|____ Врач 2
— Хирург
|____ Врач 1
— Лор
|____ Врач 3
и не сделать Вывод ТВ в документах (кастомазации форм) в как в примере ilyaut.ru/tips-and-tricks/customization-of-forms-in-modx-revolution/
Выводит только на предмет проверки, что документ является потомком «parent» первого уровня.
Комментарии: 12
Параметр фильтрации:
Как вставлять в вызов слово «Хирург» зависит от реализации каталога. Если есть страница с таким pagetitle, то на ней так:
Если через GET-запрос (page.html?doctor=Хирург), то так:
В Collections есть кнопка «Открыть», которая открывает следующий уровень (если речь об этом):
[[pdoResources?
&tvFilters=`tvname==%Хирург%`
...
]]
Как вставлять в вызов слово «Хирург» зависит от реализации каталога. Если есть страница с таким pagetitle, то на ней так:
&tvFilters=`tvname==%[[*pagetitle]]%`
Если через GET-запрос (page.html?doctor=Хирург), то так:
&tvFilters=`tvname==%[[!#GET.doctor]]%`
В Collections есть кнопка «Открыть», которая открывает следующий уровень (если речь об этом):
так и сделано, мне нужен первый уровень, т.к. в настройке форм параметр «Ограничивающее поле:parent» работает только с первым уровнем, а в коллекции вывод ТВ с типом «изображение» не выводит данные ТВ изображение если открыть второй уровень, как показано на картинке.
Фильтры как работают я знаю.
Мне нужно перебрать по тегам и вывести врачей по специальностям по отдельности, т.к. врач может иметь несколько специальностей, пример я выше указал.
Здравствуйте!
Когда я добавляю &tvFilters=`companytype==mfo` к запросу pdoResources, то ничего не выводит, убираю tvFilters, снова выводит список ресурсов. Подскажите пожалуйста, где моя ошибка, почему tvFilters не работает? Спасибо!
Когда я добавляю &tvFilters=`companytype==mfo` к запросу pdoResources, то ничего не выводит, убираю tvFilters, снова выводит список ресурсов. Подскажите пожалуйста, где моя ошибка, почему tvFilters не работает? Спасибо!
[[pdoResources:default=`Ничего не найдено`?
&parents=`47`
&includeTVs=`address,tel,logo,companytype`
&tvFilters=`companytype==mfo`
&processTVs=`1`
&limit=`10`
&loadModels=`easycomm`
&where=`{"class_key":"modDocument"}`
&leftJoin=`{
"ecThread": {
"class": "ecThread",
"on": "modResource.id = ecThread.resource"
}
}`
&select=`{
"modResource": "*",
"ecThread": "ecThread.rating_simple AS rating, ecThread.count AS reviews"
}`
&tpl=`topcompanies`
&sortby=`{"rating":"DESC", "reviews":"DESC"}`
]]
Надеюсь, кому-нибудь пригодится. Оказывается если в ТВ стоит значение по умолчанию, то при нем tvFilters не будет работать, даже после сохранения и смены на другое значение, не пишется в бд. Я убрала значение по умолчанию, и вручную указала значения ТВ в ресурсах. После все сработало.
Вывожу всех врачей у кого есть значение в ТВ, используя компонент TvSuperSelect
Врачи (Коллекция)
— Уролог ( tvsuperselect)
|____ Врач 1 (документ)
|____ Врач 2 (документ)
— Хирург (tvsuperselect)
|____ Врач 1 (документ)
— Лор ( tvsuperselect)
|____ Врач 3 (документ)
{$_modx->runSnippet('pdoPage', [
'element' => 'tvssResources',
'tv' => '7',
'tags' => $_modx->runSnippet('pdoResources' , [
'loadModels' => 'tvsuperselect','class' => 'tvssOption',
'sortby' => '{ "value":"ASC" }'
'groupby' => 'value', 'tpl' => '@INLINE {$value}', 'tplWrapper' => '@INLINE {$output}',
'limit'=>0,'outputSeparator'=>'||'
]),
'parents' => 10, 'limit' => 0,
'tpl' => '@INLINE <div>{$pagetitle}{$tags}</div>',
])}
Подскажите пожалуйста как вывести значение в tvsuperselect в ввиде:Врачи (Коллекция)
— Уролог ( tvsuperselect)
|____ Врач 1 (документ)
|____ Врач 2 (документ)
— Хирург (tvsuperselect)
|____ Врач 1 (документ)
— Лор ( tvsuperselect)
|____ Врач 3 (документ)
Есть контент:
и таблица modx_tvss_options c заполненными значениями компонента tvsuperselect:
Код выборки:
Результат:
Лор (3)
Врач4
Уролог (1)
Врач5
Фонитар (1)
Врач3
Хирург (1)
Врач6
Эндокринолог (1)
Врач1
Подскажите пожалуйста как сделать выборку join, так чтобы выводило id документов с одинаковыми значениями в superselect, не могу сообразить как сделать несколько id значения, который имеют tvsuperselect:
Например:
Лор (3)
Врач4 (25), Врач7 (26), Врач5 (15)
Уролог (1)
Врач5
Фонитар (1)
Врач3
Хирург (1)
Врач6
Эндокринолог (1)
Врач1
и таблица modx_tvss_options c заполненными значениями компонента tvsuperselect:
Код выборки:
{'pdoResources' | snippet : [ 'parents' => 10, 'limit' => 0,
'groupby' => 'val', 'sortby'=> 'val', 'sortdir' => 'ASC',
'select' => '{"modResource":"id,pagetitle","tvss":"count(value) as cnt, value as val"}',
'innerJoin'=>'{ "tvss": {"class":"tvssOption","alias":"tvss","on":"tvss.resource_id=modResource.id"}}',
'tpl'=> '@INLINE {$val} ({$cnt}) <p>{$pagetitle}</p>',
'showLog'=> 1
]}
Лог:0.0001180: pdoTools loaded
0.0000310: xPDO query object created
0.0005209: innerJoined tvssOption as tvss
0.0000041: Grouped by val
0.0001049: Added selection of modResource: SQL_CALC_FOUND_ROWS `id`, `pagetitle`
0.0000241: Added selection of tvssOption: count(value) as cnt, value as val
0.0017450: Processed additional conditions
0.0020249: Added where condition: modResource.parent:IN(10,14,15,18,25,30,19,26,24,16,17), modResource.published=1, modResource.deleted=0
0.0000939: Sorted by val, ASC
0.0013371: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`pagetitle`, count(value) as cnt, value as val FROM `modx_site_content` AS `modResource` JOIN `modx_tvss_options` `tvss` ON tvss.resource_id=modResource.id WHERE ( `modResource`.`parent` IN (10,14,15,18,25,30,19,26,24,16,17) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 ) GROUP BY val ORDER BY val ASC "
0.0014529: SQL executed
0.0001609: Total rows: 5
0.0000231: Rows fetched
0.0002599: Created inline "modChunk" with name "1530b8d8924dfc8cb34a1caeaa0cf9b0"
0.0185289: Compiled Fenom chunk with name "modchunk/1530b8d8924dfc8cb34a1caeaa0cf9b0"
0.0190470: Returning processed chunks
0.0251350: Total time
6 291 456: Memory usage
Результат:
Лор (3)
Врач4
Уролог (1)
Врач5
Фонитар (1)
Врач3
Хирург (1)
Врач6
Эндокринолог (1)
Врач1
Подскажите пожалуйста как сделать выборку join, так чтобы выводило id документов с одинаковыми значениями в superselect, не могу сообразить как сделать несколько id значения, который имеют tvsuperselect:
Например:
Лор (3)
Врач4 (25), Врач7 (26), Врач5 (15)
Уролог (1)
Врач5
Фонитар (1)
Врач3
Хирург (1)
Врач6
Эндокринолог (1)
Врач1
Решил следующим образом:
{'pdoResources' | snippet : [ 'parents' => 10, 'limit' => 0,
'groupby' => 'val', 'sortby'=> 'val', 'sortdir' => 'ASC',
'select' => '{"modResource":"id,pagetitle","tvss":"count(value) as cnt, value as val, (select GROUP_CONCAT(resource_id) as t from modx_tvss_options where value = val) as idv " }',
'innerJoin'=>'[{"class":"tvssOption","alias":"tvss","on":"tvss.resource_id=modResource.id"}]',
'tpl'=> '@INLINE {$val} ({$cnt}) <p>
{set $ar = $idv |split}
{foreach $ar as $row}
[[#{$row}.pagetitle]]
{/foreach}
</p>',
'showLog'=> 1,
'return' => 'null'
]}
Всем доброго! Господа подскажите как вывести список всех тегов.
[[!tvssTags?
&tv=`71`
&id=`[[+parent]]`
&pageId=`1485`
&tpl=`@INLINE <a class="btn btn-default btn-xs" href="[[+link]]" role="button"><i class="fa fa-tag" aria-hidden="true"></i> [[+tag]]</a> `
]]
Такой код не отрабатывает…
попробуй:
[[tvssCloud? &id=`[[+parent]]` &tv=`71` &tpl=`@INLINE <a class="btn btn-default btn-xs" href="[[+link]]" role="button"><i class="fa fa-tag" aria-hidden="true"></i>[[+tag]]</a>`]]
Точна! Не заметил что имеется еще один снипет. в доках про это ни слова.
Почему при выводе тегов через pdoPage не работает toPlaceholder?
Поправил сниппет, заработало.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.