© Сделано на LiveStreet
Дизайн - ©2009 MODx RED Group

<?php
/*
Create TV of kind "DropDown List Menu", feel elements field with string:
@EVAL return $modx->runSnippet("DropDownTree",array('doc'=>0));
Here "0" is ID of parent document children of which will be displayed in DropDown menu.
*/
$depth= (isset($depth)) ? $depth : 1;
if(!function_exists("getItems")){
function getItems($p,$l,$space='') {
$l=$l-1;
global $modx,$modx_charset;
($modx_charset=='UTF-8') ? $nbsp=chr(0xC2).chr(0xA0) : $nbsp=chr(0xA0);
$c=$modx->getDocumentChildren($p);
$out=array();
foreach($c as $k) {
$title=empty($k['pagetitle']) ? $k['longtitle'] : $k['pagetitle'];
$id=$k['id'];
$out[]=$space.$title." ($id)==$id";
if ($l>0) {
$ret=getItems($k['id'],$l,$space.'---');
if (count($ret)>0) $out=array_merge($out,$ret);
}
}
return $out;
}
}
return implode(',||',getItems($doc,$depth));
?>
@EVAL return $modx->runSnippet("DropDownDocs",array('doc'=>2));
Комментарии (16)
RSS свернуть / развернутьЧего именно мы добиваемся, используя данный сниппет?
pitbull
Ааа, ну точно, т.е. мы выбираем что отображать в каталоге?
хм, а зачем отображать не все? Да и можно же играть статусом опубликован/не опубликован у конкретного документа.
pitbull
пример:
отображение различных свойств товара (текстур и т.п.) доступных для данного конкретного товара. Т.е. для одной двери может быть доступен только зеленый оттенок, а для другой зеленый и красный, а для третьей красный и фиолетовый… вот для таких дверей-документов заводится TV-параметр в котором прописывается доступные цвета.
grinant
grinant
@SELECT pagetitle, id FROM modx_site_content WHERE parent=2
«SELECT pagetitle, id» как раз формирует пары вида «pagetitle==id»
и еще, мне для таких случаев использовать тип checkbox удобнее (если конечно количество элементов — не несколько сотен)
antonkuzmin
скорее это не хороший код, т.к. если нужно будет что-то поменять, то менять придется везде, в сниппете по сути такой запрос скрыт от посторонних глаз, т.е. увеличивается уровень абстракции.
ну а по сути, мой сниппет выводит туда целое поддерево документов, а во-вторых использует дополнительное форматирование, например проставление, (запятой) после ID каждого документа. Это необходимо для формирования полноценного списка: 1,2,3,4…
а с checkbox-ами предложение хорошее :) спасибо
grinant
ну а если надо вывести поддерево, состоящее из нескольких уровней, тогда конечно это можно сделать только специальным сниппетом.
antonkuzmin
@SELECT id,pagetitle FROM modx_site_content WHERE parent=2
логика выполнения то испортится.
grinant
Andchir
grinant
grinant
Andchir
многие о нем не знают, а вещь хорошая, однако я так понимаю туда можно только добавлять, и никак не удалять.
grinant
Andchir
grinant
Andchir
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.