С помощью 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;
}