Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 2012-12-04 22:51:40

SFproG
Участник
Откуда Тюмень
Зарегистрирован: 2010-08-01
Сообщений: 132
Рейтинг :   
Сайт

Вывод результата xfilter в текущем шаблоне категории

Подскажите как вывести отфильтрованые новости прямо в текущей категории. т.е. в шаблоне news.table.tpl, используя плагин xfilter. Вот код плагина:

<?php

if (!defined('NGCMS')) die ('HAL');

include root.'includes/news.php';
add_act('index', 'xfilter');

function xfilter() {
global $twig, $template, $mysql, $tpl, $lang;
	$filter = array(); 
	$tVars = array();
	
	include  root.'conf/extras/xfields/config.php';
	foreach ($xarray['news'] as $id => $data) {
		switch ($data['type']) {
			case 'text'  : 	$val = '<input type="text" name="xfields_'.$id.'"  title="'.$data['title'].'" value="'.secure_html($data[$id]).'" />';
								break;
			case 'select': 	$val = '<select name="xfields_'.$id.'" >';
						if (!$data['required']) $val .= '<option value=""> Не важно</option>';
						if (is_array($data['options']))
								foreach ($data['options'] as $k => $v) {
										$val .= '<option value="'.secure_html(($data['storekeys'])?$k:$v).'"'.((($data['storekeys'] && ($xdata[$id] == $k))||(!$data['storekeys'] && ($xdata[$id] == $v) || ($_REQUEST["xfields_$id"] == $v)))?' selected':'').'>'.$v.'</option>';
								}
								$val .= '</select>';
						break;
			case 'textarea'	: 	$val = '';
							    break;
			case 'images'	:	$val = '';
								break;
		}
	
	$tVars["xfields_$id"] = $val;
	$xpaginparams["xfields_$id"] =  $_REQUEST["xfields_$id"];
	$tpath = locatePluginTemplates(array('xfilter','xfilter_form'), 'xfilter', 1);
	$xf = $twig->loadTemplate($tpath['xfilter_form'].'xfilter_form.tpl');
	$template['vars']['xfilter'] = $xf->render($tVars);	

		if ($_REQUEST["xfields_$id"]) {
				array_push($filter, array('DATA',"xfields_$id", '=', secure_html($_REQUEST["xfields_$id"])));	 
		}
	}

	$paginationParams = array('pluginName' => 'news', 'pluginHandler' => 'main', 'xparams' => $xpaginparams, 'paginator' => array('page', 1, false));
	$callingParams = array('style' => 'short', 'customCategoryTemplate' => true);
	
	if ($_REQUEST['page']) {
		 $callingParams['page'] = intval($_REQUEST['page']);
	}
	
	if ($filter) {
		 array_unshift($filter, 'AND'); 
		 $filtered = news_showlist($filter, $paginationParams, $callingParams);
	
	
		if ($filtered) {
			$template['vars']['mainblock'] = $filtered;
		}
		else {
			$template['vars']['mainblock'] = '';
			msg(array("type" => "info", "info" => $lang['msgi_no_news']));
		}
	}

}

В данный момент он выводит в main.tpl через переменную {mainblock}. Самостоятельно подправить пробовал, не получается... знаний не хватает.

Изменено SFproG (2012-12-05 16:35:20)

Не в сети

#2 2012-12-05 18:22:03

SFproG
Участник
Откуда Тюмень
Зарегистрирован: 2010-08-01
Сообщений: 132
Рейтинг :   
Сайт

Re: Вывод результата xfilter в текущем шаблоне категории

Ни кто не подскажет? как-то сюда надо вывести шаблон категории "$template['vars']['mainblock'] =" вместе с переменной $filtered. Исковырял news.php, ни чего правильно подходящего не нашел пока.

Не в сети

#3 2012-12-06 19:04:52

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: Вывод результата xfilter в текущем шаблоне категории

SFproG, есть фильтры onBeforeShow($mode) и onAfterShow($mode) в классе NewsFilter
Вызываются перед отображением полного списка и после.
В них можно изменять (добавлять что-то своё) в глобальной переменной $template['vars']['mainblock'].
Оно?

Не в сети

#4 2012-12-06 19:21:47

SFproG
Участник
Откуда Тюмень
Зарегистрирован: 2010-08-01
Сообщений: 132
Рейтинг :   
Сайт

Re: Вывод результата xfilter в текущем шаблоне категории

vitaly, Возможно. Гляну, поразбираюсь. Спасибо за ответ.

Не в сети

Подвал раздела

Работает на FluxBB