Forums / National / Russian / Сборка «Фриланс-биржа» / Вопрос по переменным в cot_getfoliolist

Kopusha
#43630 2018-08-10 15:31

С помощью function cot_getfoliolist($template = 'index', $count = 5, $sqlsearch = '', $order = "item_date DESC")
я могу в отдельном фолио выводить похожие фолио по условию. К примеру 
{PHP.item.item_city|cot_getfoliolist('from-location', 4, 'item_city=$this', "item_rating_real DESC")} - поймай локацию фолио и выведи еще 4 по шаблону from-location из этого же города. Все ок. Но хочется исключить из этой выборки саму себя. Что то наподобии item_id != {PRD_ID}, но два $this не будут работать.

В самой функции cot_getfoliolist я добавил 

$id = cot_import('id', 'G', 'INT'); (Вот тут я понимаю что скорее всего я не получаю реальное ID записи а всего лишь беру "текущее ID", как то так?)
$where_condition .= " AND item_id != $id";
и в $sqllist = $db->query добавил $where_condition

Все великолепно работает когда обращаешся к фолио по его ID (/folio/nature/198). Но если обратится по alias (/folio/nature/lena2) то естественно не работает. 

Подскажите как с этим навести порядок? 

Добавлено 18 минут спустя:

UPD
Сделал, не уверен что это оптимально.

{PRD_ID|get_item_city_and_id($this)|cot_getfoliolist('from-location', 4, 'item_id!=$this', "item_rating_real DESC")}

 

function get_item_city_and_id($item_id){
        global $db, $db_folio;
        $string = '';
        
		if($item_id){
			$string = $db->query("SELECT item_id FROM $db_folio WHERE item_id=".$item_id)->fetchColumn();
			$string = (int)$string;
		}
        
		if($item_id){
			$city = $db->query("SELECT item_city FROM $db_folio WHERE item_id=".$item_id)->fetchColumn();
			$string .= " AND item_city = $city";
		}
		return $string;
}

 

This post was edited by Kopusha (2018-08-30 10:10, 5 years ago)