<?php
if(!isset($docId) || empty($docId)) return;
$sql = "SELECT
tvs.*,
sc.template as templateid,
tvs.id as id,
tvrank.rank as rank,
tvssource.value as value
FROM ".$modx->getFullTableName('site_tmplvars')." tvs
LEFT OUTER JOIN " .$modx->getFullTableName('site_tmplvar_contentvalues') ." tvssource ON tvssource.tmplvarid=tvs.id AND tvssource.contentid=".$docId."
LEFT OUTER JOIN " .$modx->getFullTableName('site_tmplvar_templates') ." tvrank ON tvrank.tmplvarid=tvs.id
LEFT OUTER JOIN " .$modx->getFullTableName('site_content') ." sc ON sc.id=".$docId."
WHERE (tvs.category=19 OR tvs.category=24) AND tvrank.templateid=sc.template ORDER BY tvrank.rank ASC";
$sqlQ = $modx->db->query($sql);
$output = '';
$paramsArr = array();
$hiddenCount = 0;
$i_full = 0;
$i_short = 0;
while($ds = $modx->db->getRow($sqlQ)) {
$isHidden = (strpos($ds[name], '_hidden')) ? 'hidden-param' : '';
$valID = $ds[value];
$value = $ds[value];
if($ds[display] == 'custom_widget')
{
$value = explode('||', $value);
if(in_array(287, $value) && count($value) > 1)
{
$delKey = array_search(287, $value);
unset($value[$delKey]);
}
$tmpVal = array();
foreach($value as $val)
{
$tmpVal[] = $modx->runSnippet('DocInfo', array('docid' => $val, 'field' => 'pagetitle'));
}
$value = implode(', ', $tmpVal);
}
//$value = ($ds[display] == 'custom_widget') ? : $ds[value];
if($type == '__l__') {
$label = $ds[caption];
if((strpos($ds[name], $type) || strpos($ds[name], '__s__')) && !empty($ds[value])) {
if($valID == 343) $value = 'модиф.';
if($valID == 883) $value = 'сл.-гр. вода';
if($valID == 884) $value = 'гр. вода';
$output .= '<li class="'.$ds[name].'"><span class="param-icon"></span>'.$label.': <span class="param-value">'.$value.'</span></li> ';
}
} elseif($type == '__s__') {
if($valID == 343) $value = 'модиф.';
if($valID == 883) $value = 'сл.-гр. вода';
if($valID == 884) $value = 'гр. вода';
$description = explode(':', $ds[description]);
$label = $description[0];
$unit = (isset($description[1]) && !empty($description[1])) ? $description[1] : '';
if((strpos($ds[name], $type) || strpos($ds[name], '__ss__')) && !empty($ds[value])) {
$output .= '<span class="param '.$isHidden.'">'.$label.': <b>'.$value.'</b>'.$unit.'</span> ';
}
} elseif($type == 'full') {
$label = $ds[caption];
if(strpos($ds[name], '__') && !empty($ds[value])) {
$short_class = ($i_short % 2 == 0) ? ' short_even ' : ' short_odd ';
$full_class = ($i_full % 2 == 0) ? ' full_even ' : ' full_odd ';
$outputHidden .= '<tr data-rank="'.$ds[rank].'" class="'.$isHidden.$short_class.$full_class.'"><td>'.$label.'</td><td>'.$value.'</td></tr>';
if(!empty($isHidden)) {
$hiddenCount++;
//$outputHidden .= '<tr data-rank="'.$ds[rank].'" class="'.$isHidden.'"><td>'.$label.'</td><td>'.$value.'</td></tr>';
} else {
$i_short++;
}
$i_full++;
}
}
}
if($type == 'full') {
//$modx->setPlaceholder('params_count', $hiddenCount);
if($i_full < 1) return;
$outputWrp = '
<!-- <div class="section">
<h2>Технические характеристики</h2> -->
<table class="table-params toggle-table">
'.$output = $output . $outputHidden.'
</table>';
if($hiddenCount > 0)
$outputWrp .= '<p class="show-all-params"><a href="#" class="toggle-btn icon ic-passport">Показать все характеристики</a></p>';
//$outputWrp .= '</div>';
$output = $outputWrp;
//$output = $output . $outputHidden;
}
return $output;
?>
Основные проблемные строки
$sqlQ = $modx->db->query($sql);
и
while($ds = $modx->db->getRow($sqlQ))