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

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

В курсе «Разработчик 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/.

Вывод элементов в шаблоне сайта по условию

При создании шаблона сайта возможно использование различных программных условий, влияющих на отображение тех или иных элементов шаблона для различных разделов сайта.
Для этого для раздела сайта нужно определить некоторое свойство, значение которого будет проверяться в шаблоне сайта. Это можно сделать, например, редактируя свойства директории из frontend-а.
Так, например, можно отключать показ включаемых областей или управлять показом навигационной цепочки, и т.п.

В шаблоне проверка по условию выглядит так:

if ($APPLICATION->GetProperty(“SECT_PROP”)==Y)

Мы можем добавить св-во для одной директории как описано выше, например. И можем — для всех папок сайта. Это делается в модуле «управление структурой»

Навигационная цепочка

Понравилось как написано про хлебные крошки.
Полная статья, рецепты, рассмотрены ошибки.
https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=3531&LESSON_PATH=3913.2704.2880.4927.3531

Механизм разноязычья

  1. В папке шаблона сайта создается папка с именем /lang/ /bitrix/templates/< идентификатор шаблона >/lang/
  2. В этой папке создаем подпапки языковые (ru, en, de)
  3. В них — файлы с именем шаблона, где этот языковой файл будет использоваться. Например, header.php
  4. В этом файле — записи типа

    $MESS ['COMPANY_NAME'] = "Company Name";
    $MESS ['MAIN_PAGE'] = "Home page";
  5. В самом шаблоне в начале вызываем

    Loc::loadMessages(__FILE__)
  6. А в тексте используем вместо текста

    Loc::getMessage('HELLO_WORLD');
  7. Существует механизм для загрузки-выгрузки языковых файлов ы ормате csv. Можно получтиь все текстовые значения, можно непенреведенные.
    Находится это счастье в Настройки > Локализация > Выгрузка и загрузка
  8. Существует «подвыверт» как менять стандартные фразы из модулей и системных компонент. Рецепт найдется по запросу: «Разработчик Bitrix Framework Изменение фраз в компонентах и модулях»

Тестовые версии

И у Битрикса и у Вебасиста есть возможность установки тестовых версий сайтов, для разработки.

Есди у Вебасиста слишком много условий (например — тестовый сайт должен быть размещен на поддомене существующего аккаунта, с тем же ip. А если места на хостинге мало?) , то у Битрикса ограничений меньше.

Создаем сайт где угодно, только галочку надо поставить в главном модуле что версия тестовая.

Битрикс. Включаемые области

Содержимое включаемых областей хранится в файлах с некоторым суффиксом.
Например, в поставляемых файлах продукта для страницы используется суффикс _inc (index_inc.php),
а включаемая область для раздела сайта сохраняется в файле с именем sect и добавлением к нему суффикса (например, sect_inc.php).
Файл с включаемой областью должен быть сохранен в той же директории, что и страница, для которой он был создан. Включаемая область для раздела — в папке этого раздела.
При настройке bitrix:main.include выбираем область откуда берем — из файла (одна на весь сайт) из раздела или из страницы.
Пример вызова областей в разделах:

<div id="header">
<?$APPLICATION->IncludeComponent("bitrix:main.include", ".default", array(
"AREA_FILE_SHOW" => "sect",
"AREA_FILE_SUFFIX" => "headerinc",
"AREA_FILE_RECURSIVE" => "Y", // подразделы показывают эту же шапку
"EDIT_TEMPLATE" => "sect_headerinc.php"
),
false
);?>
</div>