Не все знают, что у стандартных компонентов 1С-Битрикс есть много красивых шаблонов, которые практически никогда не используются.
Например, один начинающий разработчик спросил, как сделать такое же прикольное голосование как вот здесь (в виде 5-ти квадратиков и выбора через AJAX). Проблема не нова - я , что многие возможности 1С-Битрикс остаются за кадром разработчиков.
Не претендуя на лавры мега-программиста, хочу рассказать совсем о другом:
1. Что у стандартных компонентов часто есть другие шаблоны, а не только .default
2. Что комплексные компоненты "Новости" и "Каталог" иногда похожи, а иногда сильно различаются.
[spoiler]
Итак, задача:
1. Выдать голосовалку не в детальном товаре, а на странице со списком товаров.
2. Выдать ее на AJAX стандартными средствами
Ррешение (для среднеподготовленного человека, методом копипасты):
В каталоге нет голосования. Зато оно есть в комплексном компоненте "Новости", в детальном просмотре элемента. Идем в этот шаблон и видим такой код:
Собственно. он нам и нужен. Копируем его куда-нибудь.
Теперь решаем задачу выдачи его в списке элементов. Например, в ТОП элементов каталога.
Вставляем данный код в шаблон компонента "bitrix:catalog.top" куда-нибудь, где он должен выводиться. Я вставил его в таблицу после вывода <?=$arElement["PREVIEW_TEXT"]?>.
Теперь нужно сделать, чтобы голосование выводилось для нужного нам элемента.
Меняем строку
на
и - ура - голосовалка работает!
Теперь внешний вид. Идем в папку с шаблонами компонента bitrix:iblock.vote и видим там два шаблона: по-умолчанию (страшненький выпадающий список) и ajax. Вторая проблема тоже решена.
В итоге вызов компонента получился вот таким:
Для любопытствующих вопрос: знаете ли вы, что шаблон постраничной навигации имеет аж пять шаблонов:
.default
arrows
js
modern
orange
???
Например, один начинающий разработчик спросил, как сделать такое же прикольное голосование как вот здесь (в виде 5-ти квадратиков и выбора через AJAX). Проблема не нова - я , что многие возможности 1С-Битрикс остаются за кадром разработчиков.
Не претендуя на лавры мега-программиста, хочу рассказать совсем о другом:
1. Что у стандартных компонентов часто есть другие шаблоны, а не только .default
2. Что комплексные компоненты "Новости" и "Каталог" иногда похожи, а иногда сильно различаются.
[spoiler]
Итак, задача:
1. Выдать голосовалку не в детальном товаре, а на странице со списком товаров.
2. Выдать ее на AJAX стандартными средствами
Ррешение (для среднеподготовленного человека, методом копипасты):
В каталоге нет голосования. Зато оно есть в комплексном компоненте "Новости", в детальном просмотре элемента. Идем в этот шаблон и видим такой код:
<?$APPLICATION->IncludeComponent( "bitrix:iblock.vote", "", Array( "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"], "IBLOCK_ID" => $arParams["IBLOCK_ID"], "ELEMENT_ID" => $ElementID, "MAX_VOTE" => $arParams["MAX_VOTE"], "VOTE_NAMES" => $arParams["VOTE_NAMES"], "CACHE_TYPE" => $arParams["CACHE_TYPE"], "CACHE_TIME" => $arParams["CACHE_TIME"], ), $component );?> |
Теперь решаем задачу выдачи его в списке элементов. Например, в ТОП элементов каталога.
Вставляем данный код в шаблон компонента "bitrix:catalog.top" куда-нибудь, где он должен выводиться. Я вставил его в таблицу после вывода <?=$arElement["PREVIEW_TEXT"]?>.
Теперь нужно сделать, чтобы голосование выводилось для нужного нам элемента.
Меняем строку
"ELEMENT_ID" => $ElementID, |
"ELEMENT_ID" =>$arElement["ID"], |
Теперь внешний вид. Идем в папку с шаблонами компонента bitrix:iblock.vote и видим там два шаблона: по-умолчанию (страшненький выпадающий список) и ajax. Вторая проблема тоже решена.
В итоге вызов компонента получился вот таким:
<?$APPLICATION->IncludeComponent( "bitrix:iblock.vote", "ajax", Array( "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"], "IBLOCK_ID" => $arParams["IBLOCK_ID"], "ELEMENT_ID" =>$arElement["ID"], "MAX_VOTE" => $arParams["MAX_VOTE"], "VOTE_NAMES" => $arParams["VOTE_NAMES"], "CACHE_TYPE" => $arParams["CACHE_TYPE"], "CACHE_TIME" => $arParams["CACHE_TIME"], ), $component );?> |
Для любопытствующих вопрос: знаете ли вы, что шаблон постраничной навигации имеет аж пять шаблонов:
.default
arrows
js
modern
orange
???