Организация каталога
Здравствуйте, уважаемые участники проекта!
Зайду издалека, так как мысль досточно сложная, чтобы описывать ее двумя предложениями.
Есть документ «Услуги», который содержит дочерние документы с услугами. Дочерний документ представляет собой Название и TV параметр с кодом услуги. К примеру, «Чистка ковров» и TV параметр «100». Грубо говоря, это некий справочник, который связивает кодовое обозначение услуги и название.
Есть организации, которые в TV параметре содержат перечисление услуг через запятую, 100,101,102.
Необходимо на странице организации вывести перечень услуг, которая она оказывает, но не только код, а и название самой услуги.
Чешу голову и думаю как это лучше сделать.
Зайду издалека, так как мысль досточно сложная, чтобы описывать ее двумя предложениями.
Есть документ «Услуги», который содержит дочерние документы с услугами. Дочерний документ представляет собой Название и TV параметр с кодом услуги. К примеру, «Чистка ковров» и TV параметр «100». Грубо говоря, это некий справочник, который связивает кодовое обозначение услуги и название.
Есть организации, которые в TV параметре содержат перечисление услуг через запятую, 100,101,102.
Необходимо на странице организации вывести перечень услуг, которая она оказывает, но не только код, а и название самой услуги.
Чешу голову и думаю как это лучше сделать.
Комментарии: 9
Сам в PHP ноль, но по идее должен сработать такой костыль )):
И, естественно, нужен pdoTools.
Ну и вызываете:
<?php
$array = explode(",", $services);
foreach ($array as $value)
{
$y = $modx->runSnippet('pdoResources',array(
'parents'=>100,
'limit'=>0,
'includeTVs'=> ''.$field.'',
'tpl'=>'@INLINE [[+pagetitle]], ',
'tvFilters'=>''.$field.'==='.$value.''
));
$out .= $y;
}
return mb_substr($out, 0, -1);
100 тут — ID док-та «Услуги». И, естественно, нужен pdoTools.
Ну и вызываете:
[[!Snippet?
&services=`[[*TV_у_компании]]`
&field=`TV_у_услуги`
]]
Я сам не обогнал в развитии Буратино в этом вопросе :)
Вызываю сниппет, но ничего не происходит, журнал ошибок пуст :(
Вот небольшая схема текущей структуры
Вызываю сниппет, но ничего не происходит, журнал ошибок пуст :(
Вот небольшая схема текущей структуры
pdoTools установлен?
Если да, то делаете сниппет «getServices»:
А на странице организации вызываете:
Но я бы вообще по-другому сделал.
В TV tv-code-list у организаций просто бы перечислял ID тех услуг, которые нужны. То есть не 100,101, а 2,3.
Тогда вообще ничего мудрить не придется — просто вызываете любой сниппет, который поддерживает параметр &resources и скармливаете ему этот TV:
Если да, то делаете сниппет «getServices»:
<?php
$array = explode(",", $services);
foreach ($array as $value)
{
$y = $modx->runSnippet('pdoResources',array(
'parents'=>1,
'limit'=>0,
'includeTVs'=> 'tv-code',
'tpl'=>'@INLINE [[+pagetitle]], ',
'tvFilters'=>'tv-code==='.$value.''
));
$out .= $y;
}
return mb_substr($out, 0, -1);
А на странице организации вызываете:
[[!getServices? &services=`[[*tv-code-list]]`]]
Но я бы вообще по-другому сделал.
В TV tv-code-list у организаций просто бы перечислял ID тех услуг, которые нужны. То есть не 100,101, а 2,3.
Тогда вообще ничего мудрить не придется — просто вызываете любой сниппет, который поддерживает параметр &resources и скармливаете ему этот TV:
[[pdoResources?
&parents=`1`
&tpl=`@INLINE [[+pagetitle]]`
&resources=`[[*tv-code-list]]`
&limit=`0`
&outputSeparator=`, `
]]
и т. д.
Да, pdoTools установлен
Опять журнал пуст как и страница с результатами
Опять журнал пуст как и страница с результатами
Но я бы вообще по-другому сделал.Коды нужны, так как пользователь зная код может искать организации по нему
В TV tv-code-list у организаций просто бы перечислял ID тех услуг, которые нужны. То есть не 100,101, а 2,3.
Тогда вообще ничего мудрить не придется — просто вызываете любой сниппет, который поддерживает параметр &resources и скармливаете ему этот TV:
Тогда киньте в личку или на romanov_frilans.ru доступ к админке — гляну.
romanov_frilans.ru вместо "_" @ верно?
Все работает. Вы просто услуги не опубликовали )).
Отписал в почту.
Отписал в почту.
Большое спасибо!
А можно ли полученные данные записать в TV параметр данного документа?
А можно ли полученные данные записать в TV параметр данного документа?
Есть setTVValue:
$resource = $modx->getObject(‘modResource’, ID страницы);
$resource->setTVValue(‘ID нужного TV’, ‘значение, которое нужно вписать’);
$resource->save();
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.