Доброе и бессонное утро соискателям приключений.
Столкнулся этой ночью я с такой казалось бы тривиальной задачей, которая немного подрезала мне крылья и подвернула ногу. Итак, допустим мой сайт посвящен тематике тортов и есть на нем страница "Заказать торт", на данной странице размещено 3 элемента , которые анонсят пользователю о том, что есть соответственно 5 разновидностей тортов - пускай будут "Вафельные", "Сахарные" и "Слоеные". Каждый подобный инфоблок представлен в виде записи в таблице и при клике на соответствующую запись, она раскрывается табличкой, в которой идет описание уже непосредственно конкретных тортов данного вида. Например, если кликнуть по "Вафельным" тортам, мы получим список "Причуда", "Вафельница" и тд. Ясное дело, что выводится еще и картинка для анонса и сделано все как надо и красиво. Допустим покупатель решил заказать себе торт "Причуда", тогда он переходит по тэгу и попадает на страницу с подробным описанием, а именно , где наблюдает этот торт с разных ракурсов и красочное к нему описание. Внизу таковой страницы красуется кнопка "Заказать", к которой уже неизбежно тянется его курсор и само собой кликается. Тут то он и попадает на страницу с элементом , в которой заполняет стандартную форму, то есть указывает свое ФИО и прочее, а так же в последний раз убеждается в том, что он хочет именно "Вафельный" торт и именно "Причуду". Необходимо, чтобы при переходе на данную страницу с формой в последних двух ComboBox-ах сразу же был указан тот самый ВИД и НАЗВАНИЕ торта, который он выбрал. С видом торта все было просто и гладко, но не с названием. Так как выбран вид торта "Вафельный", то в ComboBox-е не должно появляться тортов из других разделов, однако появляется и тебе слоеный "Наполеон" и все вместе с ним. Проблема, как вы верно заметили с фильтром, который заполняет мне тэг <select></select>.
В данный момент проблемный фильтр выглядит вот так и сугубо для того, чтобы пока что костыльно получить только вафельные торты и ничего лишнего:
Подставляется потом все это безобразие в CIBlockSection::GetList и простым while-ом выводится в парадном виде.
Однако, как видите, раз я сюда пишу, значит что то не так. В отчаянии пробовал IBLOCK_ID и некоторые другие критерии, однако все ни как.
Вот как выглядит описание компонента :

А вот так выглядит Array данного компонента:
И только сейчас мои не выспавшиеся глаза заметили, что по сути дела говоря и нет в этом Array-е ни одного параметра, который бы мне помог с фильрацией, кроме как IBLOCK_TYPE и IBLOCK_ID. И вот теперь вопрос, как же избавиться от "лишних" тортов?
Столкнулся этой ночью я с такой казалось бы тривиальной задачей, которая немного подрезала мне крылья и подвернула ногу. Итак, допустим мой сайт посвящен тематике тортов и есть на нем страница "Заказать торт", на данной странице размещено 3 элемента , которые анонсят пользователю о том, что есть соответственно 5 разновидностей тортов - пускай будут "Вафельные", "Сахарные" и "Слоеные". Каждый подобный инфоблок представлен в виде записи в таблице и при клике на соответствующую запись, она раскрывается табличкой, в которой идет описание уже непосредственно конкретных тортов данного вида. Например, если кликнуть по "Вафельным" тортам, мы получим список "Причуда", "Вафельница" и тд. Ясное дело, что выводится еще и картинка для анонса и сделано все как надо и красиво. Допустим покупатель решил заказать себе торт "Причуда", тогда он переходит по тэгу и попадает на страницу с подробным описанием, а именно , где наблюдает этот торт с разных ракурсов и красочное к нему описание. Внизу таковой страницы красуется кнопка "Заказать", к которой уже неизбежно тянется его курсор и само собой кликается. Тут то он и попадает на страницу с элементом , в которой заполняет стандартную форму, то есть указывает свое ФИО и прочее, а так же в последний раз убеждается в том, что он хочет именно "Вафельный" торт и именно "Причуду". Необходимо, чтобы при переходе на данную страницу с формой в последних двух ComboBox-ах сразу же был указан тот самый ВИД и НАЗВАНИЕ торта, который он выбрал. С видом торта все было просто и гладко, но не с названием. Так как выбран вид торта "Вафельный", то в ComboBox-е не должно появляться тортов из других разделов, однако появляется и тебе слоеный "Наполеон" и все вместе с ним. Проблема, как вы верно заметили с фильтром, который заполняет мне тэг <select></select>.
В данный момент проблемный фильтр выглядит вот так и сугубо для того, чтобы пока что костыльно получить только вафельные торты и ничего лишнего:
| Код |
|---|
$arFilter2 = Array( "ACTIVE"=>"Y", "IBLOCK_TYPE"=>"CAKES", "IBLOCK_NAME"=>"Вафельные", ); |
Однако, как видите, раз я сюда пишу, значит что то не так. В отчаянии пробовал IBLOCK_ID и некоторые другие критерии, однако все ни как.
Вот как выглядит описание компонента :

А вот так выглядит Array данного компонента:
| Код |
|---|
<?$APPLICATION->IncludeComponent(
"bitrix:news.list",
"cakes",
Array(
"AJAX_MODE" => "N",
"IBLOCK_TYPE" => "cakes",
"IBLOCK_ID" => "15",
"NEWS_COUNT" => "20",
"SORT_BY1" => "ACTIVE_FROM",
"SORT_ORDER1" => "DESC",
"SORT_BY2" => "SORT",
"SORT_ORDER2" => "ASC",
"FILTER_NAME" => "",
"FIELD_CODE" => array(),
"PROPERTY_CODE" => array("PIC"),
"CHECK_DATES" => "Y",
"DETAIL_URL" => "",
"PREVIEW_TRUNCATE_LEN" => "",
"ACTIVE_DATE_FORMAT" => "d.m.Y",
"SET_TITLE" => "Y",
"SET_STATUS_404" => "N",
"INCLUDE_IBLOCK_INTO_CHAIN" => "Y",
"ADD_SECTIONS_CHAIN" => "Y",
"HIDE_LINK_WHEN_NO_DETAIL" => "N",
"PARENT_SECTION" => "",
"PARENT_SECTION_CODE" => "",
"INCLUDE_SUBSECTIONS" => "Y",
"CACHE_TYPE" => "A",
"CACHE_TIME" => "36000000",
"CACHE_NOTES" => "",
"CACHE_FILTER" => "N",
"CACHE_GROUPS" => "Y",
"PAGER_TEMPLATE" => ".default",
"DISPLAY_TOP_PAGER" => "N",
"DISPLAY_BOTTOM_PAGER" => "N",
"PAGER_TITLE" => "Новости",
"PAGER_SHOW_ALWAYS" => "N",
"PAGER_DESC_NUMBERING" => "N",
"PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
"PAGER_SHOW_ALL" => "N",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "Y",
"AJAX_OPTION_HISTORY" => "N"
)
);? |