Про картинки в Битриксе

Спорная идея, но сохраню.

В курсе «Разработчик Bitrix Framework» встретился совет размещать графические изображения, относящиеся к шаблону сайта, в папке /bitrix/templates/<имя_шаблона>/images

Обращаться к таким элементам так:


<img src="/images/image.jpg" alt="" />
<img src="/bitrix/templates//images/image.jpg" alt="" />

Меня, как любителя порядка, раздражают изображения, годами болтающиеся в прикорневой папке images и неизвестно где используемые. С другой стороны, размещая в темплейте графику, мы плодим ненужные дубли… И где тут рациональность…

Пожалуй, я склоняюсь к тому, чтобы хранить все компоненты в .default, описывая в комментах где используются (тогда они доступны всем сайтам и можно не заморачиваться), а все изображения — в корневой папке images с подпапками.
Картинки полезно называть по блокам, где они используются. Пример — list_brand_mts.png (логотип mts из списка брендов).

Битрикс. Про меню

  • Хранение меню
    Данные для каждого типа меню хранятся в отдельном файле, имя которого имеет следующий формат: .<тип меню>.menu.php. Например, для хранения данных меню типа left будет использоваться файл .left.menu.php, а для хранения данных меню типа top — файл .top.menu.php.

    Меню является иерархически наследуемым. Файлы меню размещаются в папках тех разделов сайта, где требуется показ соответствующих типов меню. Если для данного раздела не создан соответствующий файл меню, система производит поиск файла в каталоге уровнем выше.

    Например, т.к. основное меню (в демо-версии продукта, это меню типа top) должно выводиться во всех разделах, то файл данного меню помещается только в корневой каталог сайта.
    Соответственно меню второго уровня (например, меню left) выводится отдельно для каждого раздела сайта. Поэтому в папке каждого раздела создается свой файл для данного типа меню.

  • Как не отображать меню на странице?
    Если необходимо, чтобы в нижележащем разделе просто не отображалось вышестоящее меню, создайте меню в нужном разделе без создания в нем пунктов меню.
  • Динамическое меню
    Система Bitrix Framework позволяет также создавать меню динамического типа . Т.е. массив данных таких меню генерируется автоматически на основании некоторых данных, получаемых с помощью программного кода. Данный код должен храниться в папке соответствующего раздела сайта в файле с именем .<тип меню>.menu_ext.php.

    <?
    // пример файла .left.menu_ext.php - динамического меню
    if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); // эти команды должны встречаться для всех файлов которые не работают отдельно от битрикса
    global $APPLICATION;
    $aMenuLinksExt = $APPLICATION->IncludeComponent(
    "bitrix:menu.sections",
    "",
    Array(
    "ID" => $_REQUEST["ELEMENT_ID"],
    "IBLOCK_TYPE" => "books",
    "IBLOCK_ID" => "30",
    "SECTION_URL" => "/e-store/books/index.php?SECTION_ID=#ID#",
    "CACHE_TIME" => "3600"
    )
    );
    $aMenuLinks = array_merge($aMenuLinks, $aMenuLinksExt);
    ?>
  • Отображение пункта меню неавторизованным пользователям (или только авторизованным)
    В расширенном режиме редактирования меню необходимо установить следующее условие:
    Тип условия: выражение PHP
    Условие: !$USER->IsAuthorized()
  • Всплывающие подсказки для пунктов меню
    Для этого необходимо в расширенном режиме редактирования добавить дополнительный параметр A_TITLE, и записать в него содержание всплывающей подсказки.
    Название: A_TITLE
    Значение: текст_всплывающей_подсказки
    Ссылку в шаблоне меняем на

    <a href="<?=$arItem["LINK"]?>" title="<?=$arItem["PARAMS"]["A_TITLE"]?>"><?=$arItem["TEXT"]?></a>
  • Как поставить картинки рядом с пунктами меню?
    Для этого необходимо добавить в меню дополнительный параметр (редактирование в расширенном режиме), например IMG
    Название: IMG
    Значение: путь_к_картинке
    В шаблоне после

    <a href="<?=$arItem["LINK"]?>">

    добавить

    <img src="<?=$arItem["PARAMS"]["IMG"]?>" border="0" />

Настройка страницы-заглушки при закрытии сайта

Чтобы произвести настройку внешнего вида файла, подключаемого при закрытии публичной части сайта, следует скопировать файл: /bitrix/modules/main/include/site_closed.php и поместить его в /bitrix/php_interface/<язык>/ или в /bitrix/php_interface/include/.