UMIhelp

Разработка сайта на UMI.CMS => Шаблоны TPL => Тема начата: korogan от 09 Июня 2012, 14:42:11

Название: Описание при фильтрации
Отправлено: korogan от 09 Июня 2012, 14:42:11
Здравствуйте!

Подскажите пожалуйста как сделать вывод описание при результатах фильтрации.
Есть справочник Производители. Требуется что бы при фильтрации по определенному производителю выводилось именно его описание.

Нашел Вот это. http://wiki.umisoft.ru/%D0%92%D1%8B%D0%B2%D0%BE%D0%B4_%D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%BE%D0%BB%D1%8F_%D0%B8%D0%B7_%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%B0_TPL

Не работает.
В справочнике создал доп поле Описание. В нем свойство для HTML редактора.

Потом в справочнике для наименования справочника заполнил это поле.

Иду на сайт, но при фильтрации у меня ничего дополнительного не отображается
_http://dvernoycenter.ru/katalog/mezhkomnatnye_dveri/shponirovannye/

Заполнял доп свойство для производителя Луидор
Название: Re:Описание при фильтрации
Отправлено: admin от 09 Июня 2012, 16:16:27
я так понимаю %data getProperty(%id%, 'название_характеристики', 'templ')%
 вы вставляете в блок objects_block шаблона /tpls/catalog/default.tpl

если, да то в таком случае %id% который у вас должен быть на странице с фитьрацией по Луидор должен быть равен 836, а у вас скорее всего %id% в вызове %data getProperty(%id%, 'название_характеристики', 'templ')% равен id странице каталога на которой происходит фильтрация, проверте выведите %id% в том месте, где пытаетесь сделать вывод макроса %data getProperty(%id%, 'название_характеристики', 'templ')% и сравните равен ли он тому id который виден в адресной строке у параметра fields_filter[proizvoditel_2]
Название: Re:Описание при фильтрации
Отправлено: korogan от 09 Июня 2012, 16:26:40
Я вот только не могу понять как его посмотреть.
Вывожу все правильно как вы говорите.
в блоке <div class="1"> тут должно быть описание </div>

как получить на этой странице id =836 &

Да же если я в ручную ставлю %data getProperty('836', 'proizvoditel_2', 'templ')% 
Я не получаю описания что в носил для справочника Луидор
Название: Re:Описание при фильтрации
Отправлено: admin от 09 Июня 2012, 17:01:43
выложи сюда код шаблона где вставил %data getProperty('836', 'proizvoditel_2', 'templ')%  , код файла 'templ.tpl скриншот страницы с производителем и описанием при редактировании внутри справочника
Название: Re:Описание при фильтрации
Отправлено: korogan от 09 Июня 2012, 17:16:25
Шаблон /tpls/data/templ.tpl

<?php
$FORMS = Array(); 
       
$FORMS['relation'] = <<<END

%data getPropertyOfObject('%object_id%', 'opisanie_proizvoditelej')%

END;

?>

Шаблон /tpls/catalog/default.tpl

<?php
$FORMS = Array();

$FORMS['category'] = <<<END

%catalog getCategoryList('default', '%category_id%', 100, 1)%
%catalog getObjectsList('default', '%category_id%', '%custom getcount()%')%

END;


$FORMS['category_block'] = <<<END

<div class="price_box" umi:module="catalog" umi:method="object" umi:element-id="%id%" umi:button-position="bottom left">
%lines%                                                                                                                 
</div>
<br>
<div umi:element-id="%pid%" umi:field-name="descr">%data getProperty('%id%', 'descr', 'string')%</div>

END;


$FORMS['category_block_empty'] = "";


$FORMS['category_block_line'] = <<<END

%catalog viewObject(%id%, 'catalog_full')%

END;




$FORMS['objects_block'] = <<<END

<div class="creators">
%catalog search('%category_id%', 'proizvoditel', 'proizvoditel_search')%

<div class="sort">
<h6>Сортировать по:</h6>
<ul>                         
%system numpages(%total%, %per_page%, 'default')%
%system numpages(%total%, %per_page%, 'default_2')%
</ul>
</div>

%catalog search('%category_id%', ' ', 'search')%

</div>

<div class="1">
%data getProperty('%id%', 'proizvoditel_2', 'templ')%       
</div>

<div class="price_box" umi:module="catalog" umi:method="object" umi:element-id="%id%" umi:button-position="bottom left">
%lines%
</div>
%system numpages(%total%, %per_page%, 'catalog')%
<br>
<div umi:element-id="%pid%" umi:field-name="descr">%data getProperty('%id%', 'descr', 'string')%</div>


END;


$FORMS['objects_block_search_empty'] = <<<END


<div class="price_box">
<p>По Вашему запросу ничего не найдено.</p>
</div>



END;


$FORMS['objects_block_line'] = <<<END

%catalog viewObject(%id%, 'tovar')%


END;

$inst = umiObjectsCollection::getInstance();
//umiObjectProperty
$element_id = cmsController::getInstance()->getCurrentElementId();
//$curr_category_id = cmsController::getInstance()->getCurrentElementId();
$hierarchy = umiHierarchy::getInstance();
$page = $hierarchy->getElement($element_id);
if ($page->getValue('pokraska_dverej_po_shkale_ral')){
$style="display:inline;";
}
else{$style=='';}

//var_dump($page->getValue('pokraska_dverej_po_shkale_ral'));
//echo $element_id;exit;
//$object = $inst->getObject($element_id);
 // var_dump($object);exit;
//var_dump($object);
//exit;
 // $id_value = $object->getValue($ide);

$FORMS['view_block'] = <<<END

<div id="product">
<div class="zag" umi:element-id="%pid%" umi:field-name="name">%name%</div>
<div class="product_box">
<div class="product_info">
<table width="100%" cellspacing="0" cellpadding="0" border="0">
%data getPropertyGroup('%id%', 'polnoe_opisanie', 'catalog_polnoe_opisanie')%
</table>

<div class="product_price">
<label>Цена:</label>
<p class="tovar_price">%data getProperty(%id%, 'price', 'string_price')%</p>
<a href="#" class="submit_btn">Заказать</a>
%webforms add('128', '459', 'zakaz')%
</div><!--class="product_price"-->
<div umi:element-id="%pid%" umi:field-name="polnoe_opisanie">%data getProperty('%id%', 'polnoe_opisanie', 'string')%</div>
</div><!--class="product_info"-->
                       
<div class="product_image">
<div id="big_photo">
<a href="#">
%data getProperty('%id%', 'izobrazhenie_tovara', 'foto_1')%
</a>
</div>

<ul id="small_photos">
<li>
%data getProperty('%id%', 'izobrazhenie_tovara_2', 'foto_2')%
</li>
<li>
%data getProperty('%id%', 'izobrazhenie_tovara_3', 'foto_2')%
</li>
<li>
%data getProperty('%id%', 'izobrazhenie_tovara_4', 'foto_2')%
</li>
</ul>
</div><!--class="product_image"-->
</div><!--class="product_box"--> 
%data getProperty('%id%', 'varianty_otdelki', 'catalog_full')%
                   
<div class="colors" style="{$style}">
<h6>Покраска дверей по шкале RAL</h6>
<!-- <p><a href="#" class="more">Показать / скрыть доступные цвета</a></p>
<img src="/templates/dvernoy_centr/images/color.jpg" alt="" />  -->
</div>
</div><!--id="product"--> 

END;

$FORMS['search_block'] = <<<END

<form method="get" action="%content get_page_url(%category_id%)%">
<div>
<div style="padding-bottom:5px;">Фильтр по товарам</div>

%lines%

<div style="clear:both;"></div>
</div>

<p style="padding-left:9px;"><input type="submit" class="filter_btn" value="Подобрать" />&nbsp;&nbsp;&nbsp;<input class="filter_btn" type="button" onclick="javascript: window.location = '%content get_page_url(%category_id%)%';" value="Сбросить" class="filter_btn" /></p>
</form>


END;


$FORMS['search_block_line'] = <<<END

<table border="0" cellpadding="0" cellspacing="0" style="float:left;" id="search_block" rules="rows">
%selector%
</table>

END;



$FORMS['search_block_line_relation'] = <<<END

<tr id="hat">
<td style=" width: 100px;">
%title%
</td>
</tr>
<tr>
<td>
<select name="fields_filter[%name%]" class="textinputs" style="width:100px; height: 18px;"><option />%items%</select>
</td>
</tr>
END;


$FORMS['search_block_line_text'] = <<<END

<tr id="hat">
<td>
%title%
</td>
</tr>
<tr>
<td>
<input type="text" name="fields_filter[%name%]" class="textinputs" value="%value%" />
</td>
</tr>

END;

$FORMS['search_block_line_price'] = <<<END


<tr id="hat">
<td>
%title% от &nbsp;до
</td>
</tr>
<tr>
<td>
<input type="text" name="fields_filter[%name%][0]" class="textinputs" style="width:40px;" value="%value_from%" size="12" /> <input type="text" name="fields_filter[%name%][1]" class="textinputs" style="width:40px;" value="%value_to%" size="12" />
</td>
</tr>


END;

$FORMS['search_block_line_boolean'] = <<<END

<tr id="hat">
<td>
<label for="fields_filter[%name%]" style="">%title%</label>
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="fields_filter[%name%]" id="fields_filter[%name%]" %checked% value="1" />
</td>
</tr>

END;

?>
Название: Re:Описание при фильтрации
Отправлено: Vladimir от 09 Июня 2012, 17:46:54
Ну давайте рассуждать логически. Откуда в диве, которые встроен в тело страницу постоянно, возьмется описание переменного элемента справочника? Как вы себе представляете страница может узнать, что у вас выбран какой-то элемент?
Как только вы ответите на этот вопрос, вы решите задачу.

------------------------

А узнать может так:
1) сперва я долго тыкался в ваш выпадающий список, пока не догадался, что без яваскрипта ничего не работает. Ладно. Включаю яваскрипт. Все фильтруется. Вывод. Если без яваскрипта страница уже не рабочая, то почему бы не читать описание яваскриптом и подставлять его в нужный блок?
Откуда взять описание? Подгружать аяксом, поскольку id объекта выбранного элемента выпадающего списка вам известен.

2) заранее подставить в див кастомный макрос, который читает строку запроса, получает из нее id выбранного элемента выпадающего списка, получает описание. Либо ничего не делает, если строка запроса пуста.

Лично мне больше нравится второй путь, кажется более простым.
Название: Re:Описание при фильтрации
Отправлено: korogan от 09 Июня 2012, 17:50:15
Смысл я уловил, спасибо!!!

Только вот как это сделать не представляю.
Если можно помогите пожалуйста разобраться.
Я не так силен в разработке. Можно сказать только учусь.
Название: Re:Описание при фильтрации
Отправлено: admin от 09 Июня 2012, 17:58:19
в блоке $FORMS['objects_block'] = <<<END

заменяем строчку
%data getProperty('%id%', 'proizvoditel_2', 'templ')%

на
%data getProperty('%custom requestC()%', 'proizvoditel_2', 'templ')%

затем в файл /classes/modules/custom.php добавляем кастомную функцию вида
public function requestC() {
if(isset($_REQUEST['fields_filter']['proizvoditel_2']))
return $_REQUEST['fields_filter']['proizvoditel_2'];
}
Название: Re:Описание при фильтрации
Отправлено: korogan от 09 Июня 2012, 18:04:23
_http://dvernoycenter.ru/katalog/mezhkomnatnye_dveri/shponirovannye/?fields_filter[proizvoditel_2]=836

Сделал все как написано. Ни чего не ввелось
Название: Re:Описание при фильтрации
Отправлено: admin от 09 Июня 2012, 18:51:20
ага, я не то написал, вместо
%data getProperty('%id%', 'proizvoditel_2', 'templ')%

написать
%data getPropertyOfObject('%custom requestC()%', 'opisanie_proizvoditelej')%
Название: Re:Описание при фильтрации
Отправлено: korogan от 09 Июня 2012, 18:58:34
Огромное спасибо!!!
Все отлично работает.
Надеюсь это еще кому то пригодится.