Добрый день, друзья.
У страниц есть кастомное свойство. Как мне его получить из компонента меню для каждой страницы?
Что-то совсем застрял здесь.
Спасибо!
UPD: свойство - аналог meta (keywords, description), задается для физической страницы. Такие свойства страниц вызываются методом GetPageProperty(). И тут проблем нет.
Также есть компонент меню (bitrix:menu), выводящий эти самые физические страницы.
Задача состоит в том, чтобы получить это свойство для каждой страницы в меню.
думаю просто так не собрать все разом, по крайней мере с лету не могу сказать. В голову приходят банальные идеи создать HL\ инфоблок и просто в меню в result_modifier.php вывести, а что бы установить эти свойства для страницы можно воспользоваться событиями типа OnAfterEpilog \ OnEpilog, про загрузку страницы посмотреть тут
Да вот в случае с ИБ тут задача решается просто, да. Но городить ИБ ради одного свойства - бред :( Завтра, видимо, ТП придется мучать весь день, ибо ни в документации, ни в гугле ничего подобного я не встретил..
Механик: разумных методов не могу придумать, так как свойства страницы хранятся в самой странице, и устанавливаются в APPLICATION только в момент загрузки страницы. в базу они не попадают.
Механик: Кстати, в компоненте меню есть такой параметр как "Откладывать выполнение шаблона меню" в доке сказано -> [Y|N] При отмеченной опции выполнение шаблона будет происходить после загрузки страницы. Очень удобен при включенном кешировании компонента, если нужно все же выполнять какие-то действия по модификации внешнего вида пунктов меню в зависимости от текущей страницы. Например, добавление пунктов меню в компонентах.
$GLOBALS['BX_MENU_CUSTOM']->AddItem('left', array('TEXT' => 'Моб. версия', 'LINK' => $APPLICATION->GetCurPage(false) . '?mobile'))
Первый параметр - тип меню. Второй - массив, описывающий пункт меню.
Никита: Да, только мне это не поможет, потому что сначала надо достучаться до свойств других страниц) Тут суть в чем.. в этом свойстве у страниц хранится css-класс для шрифтовой иконки (fontawesome и подобные). Я пойду, наверное, немного костыльным, но более простым путем - буду иконку подсовывать сразу в анкор пункта меню.
Никита: Я в принципе, так и хотел сделать в самом начале, но захотел более изящного решения. Оказалось, все далеко не так просто, как показалось на первый взгляд.
Механик: а почему нельзя засунуть это свойство в параметр элемента меню? когда редактируешь меню в расширеном виде там можно создать до 5 свойст на каждый элемент меню