каталог товаров и фильтр

#
Re: каталог товаров и фильтр
я попутно извиняюсь, что так нещадно эксплуатирую службу поддержки ) но хостцмс мне очень нравится и в ней жутко интересно возиться поглубже спасибо за такую шикарную многофункциональность и вообще за вашу работу и отзывчивость!
со своей стороны, как следует разобравшись во free-версии, рассчитываю под определенные солидные бюджетные проекты использовать полные

даже скачала руководство по API, но так как всего лишь скромный дизайнер и не умею программировать классами, ничего не поняла может быть позже станет доступнее...
so I drift down... in my steep-sided un-reality...
#
Re: каталог товаров и фильтр
Значит, да, перенесите селект со списком всех значений свойств в код тип. дин. страницы перед показом содержимого инфосистемы текущей группы. С помощью API-методов класса инфосистем(например, метод GetPropertysInformationSystemItem) Вы можете получить значения нужных доп. свойств каждого инфоэлемента. А потом построить из этих значений селект т.о., чтобы значения не повторялись. Вы просто попробуйте воспользоваться этим методом(посмотрите по аналогии с другими методами инфосистем, например ShowInformationSystem), а при возникновении конкретных вопросов или ошибок - пишите.
#
Re: каталог товаров и фильтр
разбираюсь, в целом многое понятно, попутно:
метод
InformationSystem::select_information_items
select_information_items( int $id, [int $information_groups_id = false], [int $information_system_id = false] );

Принимаемые параметры
$id
идентификатор выбираемого информационного элемента, если $id = false – выбираем все информационные элементы данной информационной системы
$information_groups_id
идентификатор информационной группы, элементы которой необходимо выбрать, если $id = false (по умолчанию), то выбираются все элементы данной информационной системы
$information_system_id
идентификатор информационной системы

работает с ошибкой. при запросе
$gr = $GLOBALS['LA_InformationSystem']->select_information_items(false, $result['group'], $InformationSystem_id); (попытка выбрать все элементы инф.системы) то получается следующая оранжевая ошибка:
Ошибка выполнения запроса! - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and information_groups_id='80' and information_blocks_id='6'' a
а если указать int $id цифоркой - работает.
so I drift down... in my steep-sided un-reality...
#
Re: каталог товаров и фильтр
У меня есть фильтр в каталоге
правда, не совсем чистый - без одного запроса к БД не обошлось (как раз там где функция не работает - не нашла чем еще элементы вытащить) - пришлось через
$ressss = mysql_query("SELECT * FROM `information_items_table` WHERE `information_blocks_id` =".$InformationSystem_id." AND `information_groups_id` =".$result['group']);

Наталья, огромное СПАСИБО за терпение
в целом я не прощаюсь, наверняка еще найдется интересная задачка
so I drift down... in my steep-sided un-reality...
#
Re: каталог товаров и фильтр
Поздравляю!
helene, я сейчас обязательно проверю работу этого метода. Но у меня есть вопрос - зачем Вам именно этот метод понадобился? Ведь он не возвращает доп. свойства инфоэлементов?
Ну, а так - всегда пожалуйста
#
Re: каталог товаров и фильтр
В GetPropertysInformationSystemItem нужно было сообщить ид элементов группы по очереди, их соответственно где-то до этого взять... как обычно когда ничего не известно, изобретается велосипед из вязальных спиц
Сейчас вы мне наверняка скажете что именно этим занимается соответственная команда которую я не нашла
Или еще хлеще что GetPropertysInformationSystemItem умеет извлекать информацию для всех элементов (ну я через false так же попробовала - нет, не умеет)

вот смотрите какой блок получился (мне скорее всего за него должно быть стыдно но он работает):

if ($result['group'] != 0) {
   $ressss = mysql_query("SELECT * FROM `information_items_table` WHERE `information_blocks_id` =".$InformationSystem_id." AND `information_groups_id` =".$result['group']);
   $i=0;
   $elarr = array();
   while($els = mysql_fetch_array($ressss)) {
      $pr = $GLOBALS['LA_InformationSystem']->GetPropertysInformationSystemItem($els['information_items_id'], $InformationSystem_id);
      if (isset($pr[40]['information_propertys_items_value'])) {
         $elarr[$i] = $pr[40]['information_propertys_items_value'];
         $i++;
      }
   }
   $elarr = array_unique($elarr);
   $options = '';
   for ($i=0; $i<sizeof($elarr);$i++) {
      $fel = each($elarr);
      $options .= '<option';
      if (isset($_GET['type']) && $_GET['type'] == $fel['value']) $options .= ' selected';
      $options .= '>'.$fel['value'].'</option>';
   }
   echo '<div align="right">
<form action="." method="get">
<table border="0">
<tr>
<td>
<select name="type">'.$options.'</select>
</td>
<td><input type="submit" value="Выбрать" /></td>
<td><input type="button" value="Все модели" onClick="location.href=\'.\'" /></td>
</tr></table>
</form></div>';
}


я его щас еще дорабатываю в деталях
so I drift down... in my steep-sided un-reality...
#
Re: каталог товаров и фильтр
Вполне себе симпатично. Долго мучила сейчас наш API - так вот в методе select_information_items ошибка действительно есть. Уже исправили
Не волнуйтесь, метод GetPropertysInformationSystemItem все инфоэлементы получить не может, а сделать это(видит Бог, я этого не хотела) может другой метод
Вот пример(на будущее):
$a = $GLOBALS['LA_InformationSystem']->GetExternalInformationSystemItem(array('information_groups_id'=> $result['group'],  'information_blocks_id'=> $InformationSystem_id));
while($b = mysql_fetch_assoc($a))
{
print_r($b);
}
#
Re: каталог товаров и фильтр

примерно это я и имела в виду, когда утверждала что программировать не умею таким образом )) скормить методу массив, никогда бы не догадалась

буду разбираться! спасибо!
so I drift down... in my steep-sided un-reality...
#
Re: каталог товаров и фильтр
Пожалуйста.
Да, это в том случае, если в качетсве параметра метод принимает аргумент типа "массив"  
#
Re: каталог товаров и фильтр
на тот случай, если решение кому-то пригодится - к вышеописанному нужно добавить еще модификацию пейджинга в xls
добавить параметров в блок вызова ссылок на страницы примерно так
   <!-- Строка ссылок на другие страницы информационного блока -->
   <xsl:if test="ОтображатьСсылкиНаСледующиеСтраницы=1">
      <xsl:call-template name="for">
        <xsl:with-param name="items_on_page" select="blocks/items/items_on_page" />
        <xsl:with-param name="current_page" select="blocks/items/current_page" />
        <xsl:with-param name="count_items" select="blocks/items/count_items" />
        <xsl:with-param name="af" select="apply_filter" />
        <xsl:with-param name="aftype" select="blocks/items/item/item_propertys/item_property/type" />
      </xsl:call-template>
   </xsl:if>
соответственно дописав их в цикл для вывода и в рекурсивный вызов и использовать в построении ссылки
         <xsl:choose>
            <xsl:when test="$af">?type=<xsl:value-of select="$aftype" /></xsl:when>
            <xsl:otherwise></xsl:otherwise>
         </xsl:choose>
Поздравсяю команду HostCMS с праздниками! @}->--
so I drift down... in my steep-sided un-reality...
Авторизация