© Сделано на LiveStreet
Дизайн - ©2009 MODx RED Group
@SELECT description, name FROM site_htmlsnippets WHERE category = 36Пытаюсь понять какую конструкцию рациональнее использовать.[[$[[*tv]]]]$modx->getChunk($tv)[[snippet?input=`[[*tv]]`]][+phx:if=`[[GetField? &docid=`[*mainProjectID*]` &field=`longtitle`]]`:ne=``:then=`1`:else=`2`+]
<div class="addit-data">
[*addit:is=``:then=``:else=`
<fieldset>
<legend>Дополнительные опции</legend>
[*addit:shk_widget=`checkbox:addit:desc_page:br:price`*]
</fieldset>
`*]
</div><?php
// Проверяем входные данные, если TV параметр не указан, ничего не делаем
if(empty($tv)) {return '';}
// Получаем TV
$tvValue = $modx->getTemplateVar($tv);
// Если значение TV параметра пустое, ничего не делаем
if(empty($tvValue['value'])) {return '';}
// Каждый параметр располагаем с новой строки
$br = isset($br) ? '<br />' : '';
// Идентификатор документа
$docid = '[*id*]';
// Будет ли выбран первый элемент
$first_selected = isset($first_selected) ? true : false;
// Функция на событие onclick
$function = 'jQuery.additOpt(this)';
// Определяем переменную в которой будет располагаться результат работы сниппета, т.е. доп. параметры
$shk_output = '';
// Контейнер для дополнительных параметров (обертка)
$otag = '<div class="addit-data"><fieldset><legend>Дополнительные опции</legend>';
$ctag = '</fieldset></div>';
// Задаем значение TV параметра
$value = !empty($tvValue) ? explode("||",$tvValue['value']) : array();
// Выставляем счетчик на 0
$cnt = 0;
// Добавили к переменной открывающий тег обертки
$shk_output .= $otag;
// Разбираем массив параметров
foreach($value as $val){
list($item,$itemvalue) = explode("==",$val);
// Если цена доп. параметра меньше 0
if ($itemvalue<0) {$price = ' <span style="font:700 11px tahoma;color:red">('.$itemvalue.' грн.)</span>';}
// Если цена доп. параметра равна 0
elseif ($itemvalue==0) {$price = '';}
// Если цена доп. параметра больше 0
else {$price = ' <span style="font:700 11px tahoma;color:red">(+'.$itemvalue.' грн.)</span>';}
// Выставляем отмеченные параметры
$selected = $cnt==0 && $first_selected ? ' checked="checked"' : '';
// Формируем доп. параметр
$shk_output .= "\n".'<label><input class="addparam" type="checkbox" name="'.$tv.'__'.$docid.'__'.$cnt.'" value="'.$cnt.'__'.$itemvalue.'" id="'.$tvname.$docid.$cnt.'"'.$selected.' onclick="'.$function.'" /> '.$item.$price.'</label>'.$br;
// Увеличиваем счетчик на 1
$cnt++;
}
// Добавляем к переменной закрывающий тег обертки
$shk_output .= $ctag;
// Возвращаем готовый результат
return $shk_output;
?>[[addit_params?&tv=`addit`&br=``]][!main_search_seo? &_params=`[*seo_rooms*]|[*seo_min_cost*]|[*seo_max_cost*]|[*seo_district*]|[*seo_metro*]|[*seo_date*]|[*seo_otdelka*]|[*seo_ipoteka*]|[*seo_subs*]|[*seo_disc*]`!]<?php
$res = $modx->db->select('*', 'modx_img', 'parent_id = '.$ses.'','pr');
if( $modx->db->getRecordCount( $res ) < 1 ) {
echo 'uploads/empty/empty.jpg';
}
while($tmp = $modx->db->getRow($res, 'assoc')) {
echo 'uploads/'.$tmp['parent_id'].'/min_'.$tmp['pic'].'';
}
?>[[getpics? &ses=`[*ses*]`]]