Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Не показываются поля фильтрации для объектов на вкладке в админке

Автор arbuzzzРаздел Разработка модулей

Ответов: 7
Просмотров: 2534
Последний ответ 03 Августа 2016, 14:42:06
от e.ioffe
Вывод разделов, а не объектов каталога при фильтрации.

Автор CubesРаздел Custom макросы

Ответов: 14
Просмотров: 2964
Последний ответ 20 Января 2016, 00:39:58
от crazygeorgio
Погрешности в методах фильтрации less, more [selector]

Автор AlexeyРаздел Настройка системы и модулей

Ответов: 2
Просмотров: 2244
Последний ответ 13 Февраля 2013, 21:18:56
от admin
Связанные справочники для фильтрации

Автор fAcknetРаздел Настройка системы и модулей

Ответов: 15
Просмотров: 8389
Последний ответ 29 Октября 2011, 14:59:11
от fAcknet
Проблемы фильтрации и сортировки

Автор admin2@pomdv.comРаздел Шаблоны XSLT

Ответов: 1
Просмотров: 1143
Последний ответ 07 Сентября 2016, 11:41:49
от aghigay

0 Пользователей и 1 Гость просматривают эту тему.

*

korogan

  • ***
  • 188
  • +3/-0
    • Просмотр профиля
Описание при фильтрации
« : 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/

Заполнял доп свойство для производителя Луидор
« Последнее редактирование: 09 Июня 2012, 15:34:01 от korogan »

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Описание при фильтрации
« Ответ #1 : 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]

*

korogan

  • ***
  • 188
  • +3/-0
    • Просмотр профиля
Re:Описание при фильтрации
« Ответ #2 : 09 Июня 2012, 16:26:40 »
Я вот только не могу понять как его посмотреть.
Вывожу все правильно как вы говорите.
в блоке <div class="1"> тут должно быть описание </div>

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

Да же если я в ручную ставлю %data getProperty('836', 'proizvoditel_2', 'templ')% 
Я не получаю описания что в носил для справочника Луидор
« Последнее редактирование: 09 Июня 2012, 16:41:11 от korogan »

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Описание при фильтрации
« Ответ #3 : 09 Июня 2012, 17:01:43 »
выложи сюда код шаблона где вставил %data getProperty('836', 'proizvoditel_2', 'templ')%  , код файла 'templ.tpl скриншот страницы с производителем и описанием при редактировании внутри справочника

*

korogan

  • ***
  • 188
  • +3/-0
    • Просмотр профиля
Re:Описание при фильтрации
« Ответ #4 : 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;

?>

*

Vladimir

  • ****
  • 279
  • +48/-0
    • Просмотр профиля
Re:Описание при фильтрации
« Ответ #5 : 09 Июня 2012, 17:46:54 »
Ну давайте рассуждать логически. Откуда в диве, которые встроен в тело страницу постоянно, возьмется описание переменного элемента справочника? Как вы себе представляете страница может узнать, что у вас выбран какой-то элемент?
Как только вы ответите на этот вопрос, вы решите задачу.

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

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

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

Лично мне больше нравится второй путь, кажется более простым.

*

korogan

  • ***
  • 188
  • +3/-0
    • Просмотр профиля
Re:Описание при фильтрации
« Ответ #6 : 09 Июня 2012, 17:50:15 »
Смысл я уловил, спасибо!!!

Только вот как это сделать не представляю.
Если можно помогите пожалуйста разобраться.
Я не так силен в разработке. Можно сказать только учусь.

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Описание при фильтрации
« Ответ #7 : 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'];
}

*

korogan

  • ***
  • 188
  • +3/-0
    • Просмотр профиля
Re:Описание при фильтрации
« Ответ #8 : 09 Июня 2012, 18:04:23 »
_http://dvernoycenter.ru/katalog/mezhkomnatnye_dveri/shponirovannye/?fields_filter[proizvoditel_2]=836

Сделал все как написано. Ни чего не ввелось

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Описание при фильтрации
« Ответ #9 : 09 Июня 2012, 18:51:20 »
ага, я не то написал, вместо
%data getProperty('%id%', 'proizvoditel_2', 'templ')%

написать
%data getPropertyOfObject('%custom requestC()%', 'opisanie_proizvoditelej')%

*

korogan

  • ***
  • 188
  • +3/-0
    • Просмотр профиля
Re:Описание при фильтрации
« Ответ #10 : 09 Июня 2012, 18:58:34 »
Огромное спасибо!!!
Все отлично работает.
Надеюсь это еще кому то пригодится.