Фильтрация по производителям

#
Re: Фильтрация по производителям
не понятен xsl, было бы на пхп то без проблем бы все сделал, а костыли в виде xsl все время тормозят любую разработку на hostcms

Цитата:
внятнее будет только предоставление готового кода, разработка которого даже в рамках технической поддержки не осуществляется.


ну для этого форум и существует, я вот взял и выложил готовое решение для php.
да и потом я что захотел что то из ряда вон выходящее??? какой магазин не возьми (кроме hostcms) везде есть фильтрация сразу по нескольким производителям
#
Re: Фильтрация по производителям
vrtc писал(а):
не понятен xsl, было бы на пхп то без проблем бы все сделал
- так ведь формирование дополнительного XML-а и его передачу в метод вам как раз средствами PHP и нужно сделать. До XSL-шаблона дело еще не дошло.
#
Re: Фильтрация по производителям
вот и не понятно что должно содержать $param['external_xml'] и в каком месте вообще нужно делать эту передачу
#
Re: Фильтрация по производителям
vrtc писал(а):
что должно содержать $param['external_xml']
- он должен содержать XML, который по сути является обычной строкой. Пример такой строки я вам приводила на стр. http://www.hostcms.ru/forums/17/5682/page-1/ в восьмом сообщении сверху.
vrtc писал(а):
и в каком месте вообще нужно делать эту передачу
- присвоение значения(т.е. строки) этому элементу массива нужно производить в коде тип. дин. страницы магазина перед вызовом метода ShowShop(ведь массив $param передается в него в стандартном коде этой типовой).
#
Re: Фильтрация по производителям
сделал так:

                $param['external_xml'] = '<producers_selected>';
                foreach ($_GET['producer_id'] as $key => $value) {
                   $param['external_xml'] = '<producer>'.$value.'</producer>';
               }
                $param['external_xml'] = '</producers_selected>';

      $shop->ShowShop($current_shop_id, $xsl_catalog, $param, $external_propertys);


в итоге получаю ошибку Opening and ending tag mismatch: shop line 2 and producers_selected in Entity, line: 3
#
Re: Фильтрация по производителям
Вместо:
foreach ($_GET['producer_id'] as $key => $value) {
                   $param['external_xml'] = '<producer>'.$value.'</producer>';
               }
                $param['external_xml'] = '</producers_selected>';

используйте:
foreach ($_GET['producer_id'] as $key => $value) {
                   $param['external_xml'] .= '<producer>'.$value.'</producer>';
               }
                $param['external_xml'] .= '</producers_selected>';
#
Re: Фильтрация по производителям
что теперь делать в xml? как этот список получать?
#
Re: Фильтрация по производителям
по всему форуму ни одного примера как получить xml из php нет
#
Re: Фильтрация по производителям
vrtc писал(а):
что теперь делать в xml?
- в XML - ничего. В XSL-шаблоне нужно делать.
vrtc писал(а):
как этот список получать?
- нужно работать с ним, как с XML-тегами, в коде XSL-шаблона.
vrtc писал(а):
как получить xml из php нет
- что значит "получить"? С какой целью вам его получать? Перед вами стояла задача дополнить генерируемый методом ShowShop XML-код своим блоком, с чем вы и справились, видимо. Теперь с XML-ом можно сделать следующее: просмотреть его в клиентской части сайта с целью проверки добавленного блока(о просмотре XML-а см. на стр. 7 нашего руководства по интеграции), а также добавить в код XSL-шаблона обработку этих новых тегов: сделать выделение тех элементов списка, идентификаторы которых имеются в доп. блоке XML-а.
#
Re: Фильтрация по производителям
сделал так
      
<xsl:variable name="produ"><xsl:value-of disable-output-escaping="yes" select="/shop/producers_selected"/></xsl:variable>
         <option value="{@id}">
            <xsl:if test="@id = $produ">
               <xsl:attribute name="selected"></xsl:attribute>
            </xsl:if>
            
            <xsl:value-of disable-output-escaping="yes" select="shop_producers_list_name"/>
         </option>

но условие @id = $produ не отрабатывает

Авторизация