Включаемые области в 1С-Битрикс

 

На прошлом этапе, мы определились какие компоненты у нас будут отвечать за ту или иную область шаблона. В данном посте мы рассмотрим как реализовать “включаемые области.

 

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

 

Сначала, я немного расскажу, собственно, что это такое. Включаемые области это подключаемые к шаблону фрагменты HTML/PHP кода, хранящиеся в отдельных файлах. Зачем это надо? Объясню, на любом сайте есть области, которые повторяются от страницы к странице, например: логотип, название компании в шапке, номер телефона и т.п. Так если они повторяются, скажите вы, логично их встроить в шаблон сайта и бог с ними, но не все так очевидно. Представьте ситуацию, когда номер телефона или логотип компании изменился, а они у нас «защиты» в шаблон. Получаются, что для правки этих областей придется лезть в код шаблона, а будущий хозяин сайта, может быть человеком в web некомпетентным. Выходит, что заказчику мы не оставили «рычагов» для выхода из такой ситуации, мы принуждаем его лезть в механизмы сайта, что не есть хорошо.

Выход из этой ситуации — использовать «включаемые области». Повторюсь еще раз, что включаемые области это области где подключаются файлы с HTML/PHP кодом, редактируя которые  мы изменяем содержимое данных областей. Эти файлы, это и есть «рычаги», которые мы предоставляем заказчику. В режиме редактирования, заказчику надо два раза кликнуть на одну из предоставляемых нами включаемых областей и дальше править ее уже через встроенный в CMS текстовый редактор. Содержимое областей может быть, как просто текст, так и более сложные вещи. Если что-то пойдет не так, область всегда можно отключить, главное что шаблон не будет поломан.

 

Теперь меньше философии, ближе к практики…

 

Включаемую область в CMS 1С-Битрикс можно создать двумя способами:

  • более простым – с помощью метода «IncludeFile», мы подключаем файл по указанному пути, обычно эти файлы располагаются в www\bitrix\templates\books\include_areas
  • и посложнее – с помощью компонента «bitrix:main.include», здесь уже, мы можем подключать файлы в зависимости от раздела и страницы.

 

 

I. Рассмотрим, как применить метод «IncludeFile» в нашем случае

 

На этапе «подбор компонентов для шаблона», я обозначил места наиболее подходящих под роль включаемых областей:

одно место в шапке сайта

 

templeate_include_file2_small

 

и четыре в подвале

 

templeate_include_file_small

 

 

 

В качестве примера рассмотрим как реализовать включаемую область в шапке:

Создадим в директории шаблона сайта (www\bitrix\templates\имя_шаблона) папку «include_areas» и в ней создадим файл header_logo.php (вы можете назвать по иному, суть от этого не меняется).

 

Далее откроем www\bitrix\templates\test\header.php и найдем html код отвечающий за вывод логотипа, в моем случае это:

 

 

Вырежем этот html кусок и вставим в header_logo.php.

Далее установим в данном месте код включаемой области:

 

 

Если посмотреть в браузере, визуально ничего не изменится, только теперь html код для логотипа берется из файла header_logo.php, править который можно средствами CMS в режиме правки. Теперь осталось решить проблему с отсутствием изображения.

 

templeate_no_picture

 

 

Отсутствие изображения возникает из-за неправильных путей в атрибуте «src» тега «img», это происходит всегда после интеграции html кода в CMS, т.к. относительные адреса директорий и файлов изменяются для результирующей html страницы .

Исправим это, добавим в атрибут «src» PHP код печати переменной «$SITE_TEMPLATE_PATH», которая содержит путь до директории с шаблоном.

 

Было:

 

Должно стать:

 

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

 

templeate_include_file_result

 

 

Кликнув по ней два раза, откроется окно редактора, в котором можно править содержимое включаемой области:

 

CMS_editor_include_file_small

 

 

Собственно, чего мы и добивались.

 

 

II. Рассмотрим как использовать компонент «bitrix:main.include»

 

Пару слов о компоненте…

 

Во первых, компонент «bitrix:main.include» как и метод «IncludeFile» подключает файлы, но делает это более гибко. Подключаться файлы могут одним из трех способов:

 

  • простое подключение, указываем путь до файла, компонент в таком случае ничем не отличается от метода IncludeFile;
  • подключение в зависимости от раздела, в каждом разделе находится свой файл для подключения;
  • подключение в зависимости от страницы на которой вы находитесь, в разделе со страницей должен находится одноименный файл с определенным суффиксом через знак, который  задается при вызове компонента.

 

Во вторых, шаблон компонента «bitrix:main.include» вы вряд ли будете править,  битриксовый шаблон default данного компонента просто печатает результат работы контроллера, т.е. массив $arResult. Так что создавать свой пользовательский шаблон вам  скорее не понадобиться.

 

Перейдем к практики…

На этапе «подбор компонентов для шаблона», я отметил розовой рамкой те включаемые области, которые можно решить с помощью метода IncludeFile, они просты и не требует применения компонента, их содержимое не меняются в зависимости от раздела и страниц. В качестве примера использования компонента «bitrix:main.include» я буду использовать не данные области.

А какие?

Если вы пользуетесь редакцией 1С-Битрикс «Малый бизнес», то у вас в системе нет такого модуля как  «Реклама» и вы не можете использовать компонент «bitrix:advertising.banner», который я указал на этапе «подготовка к интеграции компонентов» в качестве предполагаемого к использованию.

Я напомню вам, ниже на рисунке я обозначил синим области, которые предполагается использовать в качестве «bitrix:advertising.banner»:

 

templeate_component_banner

 

 

Некоторая альтернатива в данной ситуации (если в вашей редакции нет модуля «Реклама») это использовать включаемые области. Мы поместим html код отвечающий за вывод баннеров в отдельные файлы, раскидаем их по разделам. В шаблоне сайта вызовем компонент «bitrix:main.include» с параметрами указывающие на «подключение файлов в зависимости от раздела». Таким образом мы можем чередовать показ рекламы или менять их местами в зависимости от раздела.

Как будем делать:

  1. Создадим в www и в каждом разделах сайта (подпаки www) по файлу «sect_inc_banner1.php» и «sect_inc_banner2.php», это будут файлы с содержимым для включаемой области.
  2. Откроем www\bitrix\templates\test\header.php и найдем html код отвечающий за вывод баннера в левом колонке сайта, в моем случае это

    Также найдем html код отвечающий за вывод баннера в правой колонке сайта, но уже в www\bitrix\templates\test\footer.php (правая колонка у нас относиться к футеру), в моем случае это

     
  3. Скопируйте в «sect_inc_banner1.php» html код левого баннера, а в «sect_inc_banner2.php» html код правого баннера и так для каждого раздела, меняя содержимое местами, т.е. в следующем разделе в «sect_inc_banner1.php» скопируйте код правого баннера, а в «sect_inc_banner2.php» код левого.(также не забудьте заполнить данные два файла в главном разделе www). P.S. В файле «sect_ inc_banner1.php» и «sect_inc_banner2.php», для правильного отображения изображений, поставьте в src тега img печать переменной SITE_TEMPLATE_PATH, т.е. должно быть так: <img src=»<?=SITE_TEMPLATE_PATH?>/images/bann2.jpg»
  4. Теперь установим вызов компонента «включаемые области» в местах где ранее был html код баннера.Для баннера в www\bitrix\templates\test\header.php:

     

    И для баннера в www\bitrix\templates\test\footer.php:

     

    Параметр «AREA_FILE_SHOW» со значением «sect» обозначает что включаемая область устанавливается для всего раздела (т.е. для всех страниц раздела).

    «AREA_FILE_SUFFIX» указывает с каким суффиксом подключать файл. Подключаемый файл должен иметь имя «sect_суффикс.php».

    В AREA_FILE_RECURSIVE значение «Y» обозначает, что данная включаемая область работает для все подразделов (подпапок) данного раздела.

 

Теперь рекламные баннеры, выводятся в зависимости от раздела, т.е. в каждом разделе подключаются свои «sect_ inc_banner1.php и sect_inc_banner2.php».

Редактировать данные баннеры, как и все включаемые области, можно в режиме редактирования, находясь в бубличной части сайта. Это удобно, как будущему владельцу сайта и так называемым «контент-менеджерам», т.е. людям которые будут наполняют и следить за содержимым сайта.

 


 

В данном примере мы рассмотрели как подключать файлы в зависимости от раздела, если вам нужно подключать файлы в зависимости от страницы, тогда код вызова компонента будет следующий:

 

 

Подключаемый файл должен находиться в одном разделе со страницей и иметь имя «имястраницы_суффикс.php».




Буду признателен если вы поделитесь данным постом

Комментарии
  1. Любовь пишет:

    Подскажите как в этом компоненте поменять ссылку на группу ВК ? На этой странице он уже установлен , но группу не выводит http://anap

  2. admin пишет:

    Добрый день Любовь!

    Для того, что-бы установить ссылку на группу в контакте, я должен посмотреть что за компонент установлен и как с ним работать. Удаленно и сразу к сожалению сказать не возможно.
    Если вас интересует помощь, я могу её оказать.



Ваш комментарий


Ответ в цифрах

 
© s-engineer.ru, 2012-2017 | Все права защищены