We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 53092
    • 2 Posts
    <?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))