Footer bitrix: Как изменить футер в 1c битрикс из админки? — Хабр Q&A
Страница и порядок её выполнения
Страница представляет из себя PHP файл, состоящий из пролога, тела страницы (основной рабочей области) и эпилога:
- header (/bitrix/header.php )
- workarea
- footer (/bitrix/footer.php)
Страница имеет определённую структуру, свойства и параметры. Она может использовать свои собственные шаблоны.
Порядок выполнения страницы:
№ | Операция | Определяемые константы и переменные | Примечание |
---|---|---|---|
1. Служебная часть пролога (/bitrix/modules/main/include/prolog_before.php) | |||
1.1 | Подключение
/bitrix/php_interface/dbconn.php | Подключаемый файл должен содержать определения переменных для соединения с базой данных, констант для отладки и прав доступа. | |
1.2 | Соединение с базой данных | $DB | В случае ошибки соединения будет подключен файл /bitrix/php_interface/dbconn_error.php. |
1.3 | Подключение
/bitrix/php_interface/after_connect.php | Подключаемый файл может содержать операции, необходимые для выполнения сразу после соединения с БД. | |
1.4 | Определение текущего сайта | $APPLICATION, SITE_ID, SITE_DIR, SITE_SERVER_NAME, SITE_CHARSET, FORMAT_DATE, FORMAT_DATETIME, LANGUAGE_ID,
Определяются все классы и функции Главного модуля. | Если к этому моменту определена константа с кодом сайта SITE_ID , то сайт не будет определяться по текущей папке и доменному имени, а все остальные константы будут определены для этого сайта. |
1.5 | Подключение
/bitrix/php_interface/init.php | Может содержать в себе инициализацию обработчиков событий, подключение дополнительных функций — общие для всех сайтов. | |
1.6 | Подключение
/bitrix/php_interface/ID сайта/init.php | Содержит параметры, определения функций для конкретного сайта. | |
1.7 | Открытие сессии | Все сессионные переменные $_SESSION | |
1.8 | Событие OnPageStart | ||
1.9 | Определение пользователя, авторизация пользователя, завершение сеанса, регистрация (в зависимости от параметров в запросе) | $USER | |
1.10 | Определение текущего шаблона сайта | SITE_TEMPLATE_ID | |
1.11 | Событие OnBeforeProlog | ||
1.12 | Проверка прав доступа уровня 1 | В случае если прав недостаточно, то выводится форма авторизации и страница завершает выполнение. | |
1.13 | Начало буфферизации вывода | После начала буферизации можно делать вывод, до установки куков и наоборот, устанавливать куки после вывода в поток. | |
1.14 | Событие OnProlog | ||
2. Визуальная часть пролога (/bitrix/modules/main/include/prolog_after.php) | |||
2.1 | Подключение
/bitrix/templates/ID шаблона сайта/header.php | ||
3. Тело страницы | |||
4. Визуальная часть эпилога (/bitrix/modules/main/include/epilog_before.php) | |||
4.1 | Подключение
/bitrix/templates/ID шаблона сайта/footer.php | ||
4.2 | Вызов функции CMain::ShowSpreadCookieHTML | Данная функция выводит набор невидимых IFRAME’ов используемых в Технология переноса посетителей | |
5. Служебная часть эпилога (/bitrix/modules/main/include/epilog_after.php) | |||
5.1 | Событие OnEpilog | ||
5.2 | Завершение буферизации страницы | Завершение и вывод в поток буффера инициализированного в п. 1.14 | |
5.3 | Событие OnAfterEpilog | ||
5.4 | Проверка агентов | ||
5.5 | Отправка E-Mail писем | Подробнее о E-Mail письмах можно прочитать в разделе «Почтовая система» | |
5.6 | Завершение соединения с базой данных | Переменная $DB больше недоступна |
См. также
6 Антон Долганин | ||
Давно уже используются картинки вместо фреймов а с версии 14.5 и вовсе JS. В связи с этим скорее всего комментарий Эльдара уже неактуален. | ||
4 Эльдар Рахимбердин |
ShowSpreadCookieHTML вызыватся в epilog_before.php до подключения /bitrix/templates/ID шаблона сайта/footer.php |
© «Битрикс»,
2001-2020,
«1С-Битрикс», 2020
Наверх
Битрикс. Создание простого компонента. Часть 1. Категория: Web-разработка • CMS Битрикс
Давайте создадим простой компонент, который умеет выводить элемент каталога (товар) по его идентификатору. В первую очередь нужно создать свое пространство имен, например demo
. Для этого создаем папку /bitrix/components/demo
, а внутри нее делаем папку компонента catalog.element
. И в ней, в свою очередь, создаем следующие папки и файлы:
- файл
component.php
- файл
.description.php
- файл
.parameters.php
- папка
templates
[bitrix] [components] [bitrix] [advertising.banner] .......... [demo] [catalog.element] [templates] [.default] template.php component.php .description.php .parameters.php
В файле component.php
размещаем код, получающий из базы данных элемент инфоблока по идентификатору:
<?php /* * Файл bitrix/components/demo/catalog.element/component.php */ if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true) die(); // массив результата работы компонента $arResult = array(); if (CModule::IncludeModule('iblock')) { // получаем из базы данных элемент инфоблока по идентификатору; // идентификатор получаем из входных параметров компонента $PRODUCT_ID = (int)$arParams['PRODUCT_ID']; $result = CIBlockElement::GetByID($PRODUCT_ID); if ($product = $result->GetNext()) { $arResult['GENERAL'] = $product; } } // подключаем шаблон компонента $this->IncludeComponentTemplate();
В файле .description.php
задаем имя и описание компонента и задаем расположение компонента в визуальном редакторе:
<?php /* * Файл bitrix/components/demo/catalog.element/.description.php */ if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true) die(); $arComponentDescription = array( 'NAME' => 'Товар каталога', 'DESCRIPTION' => 'Выводит товар каталога', 'PATH' => array( 'ID' => 'demo', 'NAME' => 'Мои компоненты', 'CHILD' => array( 'ID' => 'demo_catalog', 'NAME' => 'Каталог товаров' ) ), 'ICON' => '/images/icon.gif' );
Ключи массива $arComponentDescription
:
NAME
— название компонента;DESCRIPTION
— описание компонента;ICON
— путь к иконке компонента относительно папки компонента;PATH
— расположение компонента в виртуальном дереве компонента в визуальном редакторе. Значением этого элемента должен быть массив, имеющий ключи:ID
— код ветки дереваNAME
— название ветки дереваCHILD
— подчиненная ветка. В элементе с ключемCHILD
может быть задана подчиненная ветка дерева с той же структурой, что и родительская ветка. Названия первого уровняcontent
(контент),service
(сервисы),communication
(общение),e-store
(магазин),utility
(служебные) стандартизованы и их задавать не следует. Если ключPATH
не задан, то компонент не будет присутствовать в визуальном редакторе.
<?php /* * Файл bitrix/components/demo/catalog.element/.parameters.php */ if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true) die(); $arComponentParameters = array( 'GROUPS' => array(), 'PARAMETERS' => array( 'PRODUCT_ID' => array( 'PARENT' => 'BASE', // код группы, если отсутствует, подразумевается ADDITIONAL_SETTINGS 'NAME' => 'Идентификатор товара', // название параметра на текущем языке 'TYPE' => 'STRING', // тип элемента управления, в котором будет устанавливаться параметр 'MULTIPLE' => 'N', // одиночное/множественное значение (N/Y) 'DEFAULT' => '346', // значение по умолчанию 'REFRESH' => 'Y', // перегружать настройки или нет после выбора (N/Y) ), ), );
Параметры в визуальном параметре группируются, ключ GROUPS
задает массив групп параметров компонента. Имеется предопределенный набор групп:
Код | Сортировка | Название | Описание |
---|---|---|---|
BASE | 100 | Основные параметры | Базовые параметры для работы компонента |
DATA_SOURCE | 200 | Источник данных | Параметры, указывающие, откуда выбирать данные для компонента (к примеру, для компонент модуля Инфоблоки это тип и ID инфоблока). |
VISUAL | 300 | Настройки внешнего вида | Сюда предполагается размещать параметры, отвечающие за внешний вид. |
USER_CONSENT | 350 | Согласие пользователя | Настрйока параметров на получение согласия пользователя, согласно законодательству РФ. |
URL_TEMPLATES | 400 | Шаблоны ссылок | Служебная |
SEF_MODE | 500 | Управление адресами страниц | Группа для всех параметров, связанных с использованием ЧПУ. |
AJAX_SETTINGS | 550 | Управление режимом AJAX | Все, что касается использования AJAX. |
CACHE_SETTINGS | 600 | Настройки кеширования | Появляется при указании параметра CACHE_TIME . |
ADDITIONAL_SETTINGS | 700 | Дополнительные настройки | Эта группа появляется, например, при указании параметра SET_TITLE . |
Ключ PARAMETERS
задает массив параметров компонента. У нас единственный параметр, который задает идентификатор элемента инфоблока.
И наконец, файл шаблона компонента, который отвечает за показ элемента инфоблока:
<?php /* * Файл bitrix/components/demo/catalog.element/templates/.default/template.php */ if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true) die(); ?> <h2><?= $arResult['GENERAL']['NAME']; ?></h2> <?php if (!empty($arResult['GENERAL']['DETAIL_TEXT'])): ?> <div> <?= $arResult['GENERAL']['DETAIL_TEXT']; ?> </div> <?php endif; ?> <?php if (!empty($arResult['GENERAL']['DETAIL_PICTURE'])): ?> <?php $image = CFile::GetPath($arResult['GENERAL']['DETAIL_PICTURE']); ?> <img src="<?= $image; ?>" alt="" /> <?php endif; ?>
В принципе, компонент готов. Давайте создадим раздел сайта demo
и откроем страницу /demo/index.php
в визуальном редакторе:
После размещения компонента на странице появится форма параметров компонента:
А файл /demo/index.php
будет содержать код вызова компонента:
<?php require $_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"; ?> <?php $APPLICATION->IncludeComponent( "demo:catalog.element", "", Array( "PRODUCT_ID" => "346" ) ); ?> <?php require $_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php"; ?>
Поиск:
$arParams • $arResult • .description.php • .parameters.php • CMS • Web-разработка • Битрикс • Компонент • Шаблон компонента • Элемент инфоблока • $arComponentDescription • $arComponentParameters
Битрикс. SEO для инфоблока, раздела и страницы. Категория: Web-разработка • CMS Битрикс
Для тех, кто не в курсе: SEO (Search Engine Optimization, оптимизация для поисковых систем) — это комплекс мер для повышения позиций сайта в результатах выдачи поисковых систем (Яндекс, Google, MAIL.RU и других) по заранее определенным поисковым запросам.
SEO-настройки для инфоблока
Шаблоны SEO данных можно задавать как для всего инфоблока (т.е. для всех его разделов и элементов), так и для конкретных разделов, или элементов нужного раздела. Настройка может быть сделана для всего инфоблока, а потом для конкретного раздела/элемента переопределена на свою персональную. Все эти настройки выполняются на закладке «SEO» формы создания/редактирования соответственно инфоблока, раздела или элемента.
Настройки для всего инфоблока, раздела и элемента:
Содержимое закладки «SEO» для инфоблока и для раздела полностью идентично. В ней задаются шаблоны заголовков, ключевых слов, описаний для разделов и для элементов, а также шаблоны тегов для изображений разделов и элементов. На закладке SEO формы редактирования элементов присутствуют только те настройки, которые касаются самих элементов и их изображений.
Аналогичным образом происходит работа и с атрибутами картинок. Настройка шаблонов осуществляется как для анонсовых, так и для детальных изображений разделов и элементов инфоблока. Для картинок можно устанавливать атрибуты alt
, title
, а также делать шаблоны названий файлов.
Обратите внимание, что все настройки файлов работают только для тех файлов, которые были загружены в систему после выполнения настроек. Для ранее загруженных файлов настройки не применяются.
SEO-настройки для раздела и страницы
В Битрикс «создать раздел» — означает создать директорию и файл index.php
, а «создать страницу» — означает создать php-файл. Для раздела также могут быть заданы SEO-настройки. Причем, эти настройки будут наследоваться дочерними разделами и страницами. Мало того, есть возможность задать SEO-настройки для корневой директории, которые будут наследоваться всеми разделами и страницами.
Настройки для корневого раздела, раздела и страницы:
Настройки для раздела сохраняются не в базе данных, а в файле .section.php
:
<?php $sSectionName = "Торговый Дом Аврора"; $arDirProperties = Array( "keywords" => "поставка и монтаж холодильного оборудования, холодильные камеры, камеры шоковой заморозки", "description" => "Поставка и монтаж холодильного оборудования, холодильные камеры для магазинов и супермаркетов.", "title" => "Поставка и монтаж холодильного оборудования супермаркетов", "robots" => "index, follow" ); ?>
Настройки для страницы прописываются в самом php-файле страницы:
<?php require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); $APPLICATION->SetPageProperty( "title", "Поставка и монтаж холодильного оборудования супермаркетов" ); $APPLICATION->SetPageProperty( "keywords", "поставка и монтаж холодильного оборудования, холодильные камеры, камеры шоковой заморозки" ); $APPLICATION->SetPageProperty( "description", "Поставка и монтаж холодильного оборудования, холодильные камеры для магазинов и супермаркетов." ); $APPLICATION->SetTitle("Поставка и монтаж холодильного оборудования"); ?> <h2><?php $APPLICATION->ShowTitle(false); ?></h2> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore... </p> <?php require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php"); ?>
Столкнулся с тем, что компоненты, расположенные на странице, тоже могут устанавливать свойства страницы. Если вдруг вылезли непонятные заголовки или мета-теги, надо смотреть настройки всех компонентов на странице и снимать галочки:
- Устанавливать заголовок страницы
- Устанавливать заголовок окна браузера
- Устанавливать ключевые слова страницы
- Устанавливать описание страницы
Поиск:
CMS • SEO • Web-разработка • Битрикс • Инфоблок • Раздел инфоблока • Раздел сайта • Страница сайта • Элемент инфоблока • Настройка • Мета теги
Битрикс. Отложенные функции. Категория: Web-разработка • CMS Битрикс
Отложенные функции — технология, позволяющая задавать заголовок страницы, пункты навигационной цепочки, CSS стили, дополнительные кнопки в панель управления, мета-теги и т.п. с помощью функций, используемых непосредственно в теле страницы. Соответствующие результаты работы этих функций выводятся в прологе, то есть выше по коду, чем они были заданы.
Технология была создана в первую очередь для использования в компонентах, которые, как правило, выводятся в теле страницы, но при этом внутри них могут быть заданы заголовок страницы, добавлен пункт в навигационную цепочку, добавлена кнопка в панель управления и так далее. Отложенные функции нельзя использовать в файлах шаблона компонента template.php
и result_modifier.php
(так как результаты их выполнения кешируются).
Алгоритм работы
Любой исходящий поток из PHP скрипта буферизируется. Как только в коде встречается одна из следующих функций:
CMain::ShowTitle()
CMain::ShowCSS()
CMain::ShowNavChain()
CMain::ShowProperty()
CMain::ShowMeta()
CMain::ShowPanel()
Весь буферизированный до этого контент запоминается в очередном элементе стека КонтентСтраницы. И сразу полсе этого в стек КонтентСтраницы добавляется пустой элемент. В дальнейшем этот пустой элемент будет заполнен результатом выполнения отложенной функции. Имя этой отложенной функции запоминается в стеке ОтложенныеФункции. Буфер очищается и буферизация снова включается.
Таким образом, существует стек КонтентСтраницы, в котором находится весь контент страницы, разбитый на части. В этом же стеке есть пустые элементы, предназначенные для их дальнейшего заполнения результатами отложенных функций. Также существует стек ОтложенныеФункции, в котором запоминаются имена и параметры отложенных функции в порядке их следования в коде.
В конце страницы, в служебной части эпилога, выполняются следующие действия:
- все отложенные функции из стека ОтложенныеФункции начинают выполняться одна за другой;
- результаты их выполнения вставляются в специально предназначенные для этого места в стек КонтентСтраницы;
- весь контент из стека КонтентСтраницы «склеивается» (конкатенируется) и выводится на экран.
Таким образом, технология позволяет фрагментировать весь контент страницы, разбивая его на части с помощью специальных функций, обеспечивающих временное откладывание выполнения других функций. В конце страницы все отложенные функции выполняются одна за другой и результаты их выполнения вставляются в отведенные для этого места внутри фрагментированного контента страницы. Затем весь контент склеивается и отправляется браузеру посетителя сайта.
Пример использования
Давайте рассмотрим пример установки заголовка страницы и заголовка окна браузера.
<?php /* * Файл /local/templates/page/header.php */ if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); ?> <!DOCTYPE html> <html> <head> <title><?php $APPLICATION->ShowTitle(); /* показываем заголовок браузера */ ?></title> </head>
<?php /* * Файл /test/index.php */ require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); ?> <h2><?php $APPLICATION->ShowTitle(false); /* показываем заголовок страницы */ ?></h2> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore... </p> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore... </p> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore... </p> <?php require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php"); ?>
Поскольку мы нигде не вызываем методы SetTitle()
и SetPageProperty()
, заголовок браузера и заголовок страницы у нас пустые. Давайте установим значения заголовков:
<?php require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); // устанавливаем заголовок страницы $APPLICATION->SetTitle('Какой-то заголовок (старый)'); // устанавливаем заголовок браузера $APPLICATION->SetPageProperty('title', 'Какой-то заголовок (старый)'); ?> <h2><?php $APPLICATION->ShowTitle(false); /* показываем заголовок страницы */ ?></h2> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore... </p> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore... </p> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore... </p> <?php require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php"); ?>
Переопределим значения заголовков браузера и страницы ниже по коду:
<?php require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); // устанавливаем заголовок страницы $APPLICATION->SetTitle('Какой-то заголовок (старый)'); // устанавливаем заголовок браузера $APPLICATION->SetPageProperty('title', 'Какой-то заголовок (старый)'); ?> <h2><?php $APPLICATION->ShowTitle(false); /* показываем заголовок страницы */ ?></h2> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore... </p> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore... </p> <?php // устанавливаем заголовок страницы $APPLICATION->SetTitle('Какой-то заголовок (новый)'); // устанавливаем заголовок браузера $APPLICATION->SetPageProperty('title', 'Какой-то заголовок (новый)'); ?> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore... </p> <?php require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php"); ?>
В компонентах Битрикс часто можно увидеть такой код, который устанавливает значения заголовков и значенния мета-тегов keywords
и description
:
if ($this->StartResultCache(false, ($arParams['CACHE_GROUPS']==='N' ? false: $USER->GetGroups()))) { /* * Данных в кеше нет, выполняем запрос к БД */ /* ...получаем данные... */ if (isset($arResult['ID'])) { // данные успешно получены $this->SetResultCacheKeys( array( 'ID', 'NAME', 'IPROPERTY_VALUES' ) ); $this->IncludeComponentTemplate(); } else { // что-то пошло не так $this->AbortResultCache(); \Bitrix\Iblock\Component\Tools::process404( trim($arParams['MESSAGE_404']) ?: 'Элемент инфоблока не найден', true, $arParams['SET_STATUS_404'] === 'Y', $arParams['SHOW_404'] === 'Y', $arParams['FILE_404'] ); } } // кэш не затронет все действия ниже, здесь работаем уже с другим $arResult if (isset($arResult['ID'])) { if ($arParams['SET_PAGE_TITLE'] == 'Y') { // установить заголовок страницы? if ($arResult['IPROPERTY_VALUES']['ELEMENT_PAGE_TITLE'] != '') { $APPLICATION->SetTitle($arResult['IPROPERTY_VALUES']['ELEMENT_PAGE_TITLE']); } else { $APPLICATION->SetTitle($arResult['NAME']); } } if ($arParams['SET_BROWSER_TITLE'] == 'Y') { // установить заголовок окна браузера? if ($arResult['IPROPERTY_VALUES']['ELEMENT_META_TITLE'] != '') { $APPLICATION->SetPageProperty('title', $arResult['IPROPERTY_VALUES']['ELEMENT_META_TITLE']); } else { $APPLICATION->SetPageProperty('title', $arResult['NAME']); } } // установить мета-тег keywords? if ($arParams['SET_META_KEYWORDS'] == 'Y' && $arResult['IPROPERTY_VALUES']['ELEMENT_META_KEYWORDS'] != '') { $APPLICATION->SetPageProperty('keywords', $arResult['IPROPERTY_VALUES']['ELEMENT_META_KEYWORDS']); } // установить мета-тег description? if ($arParams['SET_META_DESCRIPTION'] == 'Y' && $arResult['IPROPERTY_VALUES']['ELEMENT_META_DESCRIPTION'] != '') { $APPLICATION->SetPageProperty('description', $arResult['IPROPERTY_VALUES']['ELEMENT_META_DESCRIPTION']); } return $arResult['ID']; }
Методы ShowViewContent и AddViewContent
Метод CMain::ShowViewContent()
добавляет в стек КонтентСтраницы пустой элемент. А метод CMain::AddViewContent()
добавляет в этот элемент контент, который формируется ниже:
<?php require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); ?> <h2>Случайные элементы</h2> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore... </p> <?php // здесь выводим контент с меткой «random-elements», который будет сфорирован ниже $APPLICATION->ShowViewContent('random-elements'); ?> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore... </p> <?php // включаем буферизацию вывода, все идет в отдельный буфер ob_start(); // вызываем компонент, который формирует список блок случайных элементов инфоблока $GLOBALS['APPLICATION']->IncludeComponent( "tokmakov:iblock.random", "", Array( "ELEMENT_COUNT" => "4", "ELEMENT_URL" => "#SITE_DIR#/#IBLOCK_CODE#/element/code/#ELEMENT_CODE#/", "IBLOCK_ID" => "5", "IBLOCK_TYPE" => "content" ) ); // выключаем буферизацию и помечаем этот контент меткой «random-elements» $APPLICATION->AddViewContent('random-elements', ob_get_clean()); ?> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore... </p> <?php require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php"); ?>
Методы SetViewTarget и EndViewTarget
В шаблоне компонента вместо функций ob_start()
и ob_get_clean()
можно использовать методы SetViewTarget()
и EndViewTarget()
:
<?php // включаем буферизацию и помечаем этот контент меткой «smart-filter» $this->SetViewTarget('smart-filter'); ?> <div> <?php $APPLICATION->IncludeComponent( 'bitrix:catalog.smart.filter', '', Array( // параметры компонента ), $component ); ?> </div> <?php // выключаем буферизацию $this->EndViewTarget(); ?>
В том месте, где нам нужно вывести контент, добавляем в стек КонтентСтраницы пустой элемент:
<div> <?php $APPLICATION->ShowViewContent('smart-filter'); ?> </div>
Поиск:
CMS • Web-разработка • Битрикс • Буферизация • Отложенные функции • ShowTitle • ShowCSS • ShowNavChain • ShowProperty • ShowMeta • ShowPanel • ShowViewContent • AddViewContent • SetViewTarget • EndViewTarget
Битрикс. Заголовок страницы. Категория: Web-разработка • CMS Битрикс
С заголовком страницы в Битрикс все очень запутано. Через панель управления можно установить «Заголовок страницы» и «Заголовок окна браузера». «Заголовок страницы» — это содержимое тега <h2>
страницы, а «Заголовок окна браузера» — содержимое тега <title>
. Однако, выводить на страницу и то и другое можно с помощью метода CMain::ShowTitle()
, только вызывать его надо по-разному.
Если совсем коротко:
<title><?php $APPLICATION->ShowTitle(); /* Выводим «Заголовок окна браузера» */ ?></title>
<h2><?php $APPLICATION->ShowTitle(false); /* Выводим «Заголовок страницы» */ ?></h2>
Чтобы установить заголовки страницы программно, существуют специализированные функции:
И более общие функции работы со свойствами страницы и раздела:
Метод SetTitle('…')
устанавливает «Заголовок страницы», а метод SetPageProperty('title', '…')
устанавливает «Заголовок окна браузера». При вызове ShowTitle()
без аргументов будет показан «Заголовок окна браузера», потому что фактически происходит вызов ShowTitle('title')
. Если нужно, чтобы ShowTitle()
выводил на страницу «Заголовок страницы», надо вызвать его с аргументом false
.
<?php require($_SERVER['DOCUMENT_ROOT'].'/bitrix/header.php'); ?> <?php $APPLICATION->SetTitle('Заголовок страницы'); $APPLICATION->SetPageProperty('title', 'Заголовок окна браузера'); ?> <?php $APPLICATION->ShowTitle(); ?> <br/> <?php $APPLICATION->ShowTitle(false); ?> <?php require($_SERVER['DOCUMENT_ROOT'].'/bitrix/footer.php'); ?>
Заголовок окна браузера <br/> Заголовок страницы
Вообще, с помощью ShowTitle()
можно вывести любое свойство страницы в качестве заголовка окна браузера. Для этого надо передать первым аргументом имя свойства, предварительно установленное с помощью SetPageProperty()
:
<?php $APPLICATION->SetPageProperty('heading', 'Мой заголовок'); ?> <title><?php $APPLICATION->ShowTitle('heading'); ?></title>
Метод GetTitle()
по умолчанию вызывается с аргументом false
и возвращает заголовок страницы, установленный с помощью метода SetTitle()
. Можно передать методу имя свойства страницы (предварительно установленное с помощью SetPageProperty()
), значение которого будет выведено в качестве заголовка, например GetTitle('title')
.
Столкнулся с тем, что компоненты, расположенные на странице, тоже могут устанавливать свойства страницы. Если вдруг вылезли непонятные заголовки или мета-теги, надо смотреть все компоненты и снимать галочки:
- Устанавливать заголовок страницы
- Устанавливать заголовок окна браузера
- Устанавливать ключевые слова страницы
- Устанавливать описание страницы
Поиск:
CMS • ShowTitle • Web-разработка • Битрикс • Отложенные функции • Заголовок
Страница и порядок её выполнения
Страница представляет из себя PHP файл, состоящий из пролога, тела страницы (основной рабочей области) и эпилога:
- заголовок ( /bitrix/header.php )
- рабочая зона
- нижний колонтитул (/bitrix/footer.php)
имеет определенную реакцию, свойства и параметры. Она может использовать свои собственные шаблоны.
Порядок выполнения страницы:
№ | Операция | Определяемые константы и переменные | Примечание | |
---|---|---|---|---|
1.Служебная часть пролога (/bitrix/modules/main/include/prolog_before.php) | ||||
1.1 | Подключение /bitrix/php_interface/dbconn.php | Подключаемый файл должен содержать определение числа для соединения с базой данных, констант для отладки и прав доступа. | ||
1.2 | Соединение с базой данных | $ DB | В случае ошибки соединения будет подключен файл / bitrix / php_interface / dbconn_error.php . | |
1,3 | Подключение /bitrix/php_interface/after_connect.php | Подключаемый файл может содержать операции, необходимые для выполнения сразу после соединения с БД. | ||
1.4 | Определение текущего сайта | $ APPLICATION, SITE_ID, SITE_DIR, SITE_SERVER_NAME, SITE_CHARSET, FORMAT_DATE, FORMAT_DATETIME, LANGUAGE_ID, Определяются все классы и функции Главного модуля. | Если к этому моменту определена константа кодом сайта SITE_ID, то сайт не будет определяться по текущему объекту и дому имени, а все остальные константы будут определены для этого сайта. | |
1,5 | Подключение /bitrix/php_interface/init.php | Может содержать в себе инициализацию обработчиков событий, подключение дополнительных функций — общие для всех сайтов. | ||
1.6 | Подключение / bitrix / php_interface / ID сайта /init.php | Содержит параметры, определения функций для конкретного сайта. | ||
1,7 | Открытие сессии | Все сессионные переменные $ _SESSION | ||
1,8 | Событие OnPageStart | |||
1,9 | Определение пользователя, авторизация пользователя, завершение сеанса, регистрация (в в зависимости от параметров в запросе) | $ ПОЛЬЗОВАТЕЛЬ | ||
1.10 | Определение текущего шаблона сайта | SITE_TEMPLATE_ID | ||
1,11 | Событие OnBeforeProlog | |||
1,12 | Проверка прав доступа уровня 1 | В случае если прав недостаточно, то выводится форма авторизации и страница завершает выполнение. | ||
1,13 | Начало буфферизации вывода | После начала буферизации можно делать вывод, до установки куков и наоборот, устанавливать куки после вывода в поток. | ||
1.14 | Событие OnProlog | |||
2. Визуальная часть пролога (/bitrix/modules/main/include/prolog_after.php) | ||||
2.1 | Подключение / bitrix / templates / ID шаблона сайта /header.php | |||
3. Тело страницы | ||||
4.Визуальная часть эпилога (/bitrix/modules/main/include/epilog_before.php) | ||||
4.1 | Подключение / bitrix / templates / ID шаблона сайта /footer.php | |||
4.2 | Вызов функции CMain :: ShowSpreadCookieHTML | Данная функция выводит набор невидимых IFRAME’ов в их отношении в Технология переноса посетителей | ||
5.Служебная часть эпилога (/bitrix/modules/main/include/epilog_after.php) | ||||
5.1 | Событие OnEpilog | |||
5.2 | Завершение буферизации страницы | Завершение и вывод страницы в поток буффера инициализированного в п. 1.14 | ||
5.3 | Событие OnAfterEpilog | |||
5.4 | Проверка агентов | |||
5.5 | Отправка E-Mail писем | Подробнее о E-Mail письмах можно прочитать в разделе «Почтовая система» | ||
5.6 | Завершение соединения с базой данных | Переменная $ DB больше недоступна |
См. также
6 Антон Долганин | ||
Давно уже используются картинки вместо фреймов с версии 14.5 и вовсе JS. В связи с этим скорее всего комментарий Эльдара уже неактуален. | ||
4 Эльдар Рахимбердин |
ShowSpreadCookieHTML вызыватся в epilog_before.php до подключения / bitrix / templates / ID шаблона сайта / footer.php |
© «Битрикс»,
2001-2020,
«1С-Битрикс», 2020
Наверх
.
Битрикс. Создание простого компонента. Часть 1. Категория: Web-разработка • CMS Битрикс
Давайте создадим простой компонент, который умеет выводить элемент каталога (товар) по его указатору. В первую очередь нужно создать свое пространство имен, например demo
. Для этого создайте папку / bitrix / components / demo
, а внутри нее делаем папку компонента catalog.element
. И в ней, в свою очередь, создаем следующие папки и файлы:
- файл
компонент.php
- файл
.description.php
- файл
.parameters.php
- папка
шаблона
[битрикс] [компоненты] [битрикс] [Advertising.banner] .......... [демо] [catalog.element] [шаблоны] [.дефолт] template.php component.php .description.php .parameters.php
В файле component.php
размещаем код, получающий из базы данных элемент инфоблока по контакатору:
Php / * * Файл bitrix / components / demo / catalog.element / component.php * / если (! определено ('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED! == true) die (); // массив результата работы компонента $ arResult = массив (); if (CModule :: IncludeModule ('iblock')) { // получаем из базы данных элемент инфоблока по указатору; // идентификатор получает из входных параметров компонента $ PRODUCT_ID = (int) $ arParams ['PRODUCT_ID']; $ result = CIBlockElement :: GetByID ($ PRODUCT_ID); if ($ product = $ result-> GetNext ()) { $ arResult ['GENERAL'] = $ product; } } // подключаем шаблон компонента $ this-> IncludeComponentTemplate ();
В файле .description.php
задает свойства компонента в визуальном редакторе:
Php / * * Файл bitrix / components / demo / catalog.element / .description.php * / если (! определено ('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED! == true) die (); $ arComponentDescription = массив ( 'NAME' => 'Товар каталога', 'DESCRIPTION' => 'Вывод товарного каталога', 'ПУТЬ' => массив ( 'ID' => 'демо', 'NAME' => 'Мои компоненты', 'CHILD' => массив ( 'ID' => 'demo_catalog', 'NAME' => 'Каталог товаров' ) ), 'ICON' => '/ images / icon.gif ' );
Ключи массива $ arComponentDescription
:
-
НАИМЕНОВАНИЕ
— название компонента; -
ОПИСАНИЕ
— описание компонента; -
ICON
— путь к иконке компонента относительно папки компонента; -
PATH
— расположение компонента в виртуальном дереве компонента в визуальном редакторе. Значением этого элемента должен быть массив, имеющий ключи:-
ID
— код ветки дерева -
НАИМЕНОВАНИЕ
— название ветки дерева -
РЕБЕНОК
— подчиненная ветка.В элементе с ключемРЕБЕНОК
может быть задана подчиненная ветка дерева с той же структурой, что и родительская ветка. Названия первогоконтент
(контент),сервис
(сервисы),коммуникация
(общение),электронный магазин
(магазин),утилита
(служебные) стандартизованы и их задавать не следует. Если ключPATH
не задан, то компонент не будет присутствовать в визуальном редакторе.
-
Php / * * Файл bitrix / components / demo / catalog.элемент / .parameters.php * / если (! определено ('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED! == true) die (); $ arComponentParameters = массив ( 'ГРУППЫ' => массив (), 'ПАРАМЕТРЫ' => массив ( 'PRODUCT_ID' => массив ( 'PARENT' => 'BASE', // код группы, если отсутствует, подразумевается ADDITIONAL_SETTINGS 'NAME' => 'Идентификатор товара', // название программы на текущем языке 'TYPE' => 'STRING', // тип управления, в котором будет устанавливаться параметр элемента 'MULTIPLE' => 'N', // одиночное / множественное значение (N / Y) 'DEFAULT' => '346', // значение по умолчанию 'REFRESH' => 'Y', // перегружать настройки или нет после выбора (N / Y) ), ), );
Параметры в визуальном параметре группируются, ключ GROUPS
задает массив групп параметров компонента.Имеется предопределенный набор групп:
Код | Сортировка | Название | Описание |
---|---|---|---|
ОСНОВАНИЕ | 100 | Основные параметры | Базовые параметры для работы компонента |
ИСТОЧНИК_ДАННЫХ | 200 | Источник данных | Параметры, указывающие, откуда выбирать данные для компонента (к примеру, для компонентного модуля Инфоблоки это тип и ID инфоблока). |
ВИЗУАЛЬНО | 300 | Настройки внешнего вида | Сюда записаны параметры, отвечающие за внешний вид. |
КОНСЕНТ_ПОЛЬЗОВАТЕЛЯ | 350 | Согласие пользователя | Настрйока параметров на получение согласия, согласно законодательству РФ. |
URL_ШАБЛОНЫ | 400 | Шаблоны ссылок | Служебная |
SEF_MODE | 500 | Управление адресами страниц | Группа для всех параметров, связанных с использованием ЧПУ. |
AJAX_SETTINGS | 550 | Управление режимом AJAX | Все, что касается использования AJAX. |
НАСТРОЙКИ КЭША | 600 | Настройки кеширования | Появляется при указании программы CACHE_TIME . |
ДОПОЛНИТЕЛЬНЫЕ_НАСТРОЙКИ | 700 | Дополнительные настройки | Эта группа появляется, например, при указании расписания SET_TITLE . |
Ключ ПАРАМЕТРЫ
задает массив параметров компонента. У нас единственный параметр, который задает идентификатор элемента инфоблока.
И наконец, файл компонента, отвечающий за показательный элемент инфоблока:
Php / * * Файл bitrix / components / demo / catalog.element / templates / .default / template.php * / если (! определено ('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED! == true) die (); ?>= $ arResult ['ОБЩЕЕ'] ['ИМЯ']; ?>
php if (! empty ($ arResult ['GENERAL'] ['DETAIL_TEXT'])):?>= $ arResult ['GENERAL'] ['DETAIL_TEXT']; ?>php endif; ?> php if (! empty ($ arResult ['GENERAL'] ['DETAIL_PICTURE'])):?> php $ image = CFile :: GetPath ($ arResult ['GENERAL'] ['DETAIL_PICTURE']); ?> " alt = "" /> php endif; ?>
В принципе, компонент готов.Давайте создадим раздел сайта demo
и откроем страницу /demo/index.php
в визуальном редакторе:
После размещения компонента на странице появится форма компонента:
А файл /demo/index.php
будет содержать код вызова компонента:
Php требуется $ _SERVER ["DOCUMENT_ROOT"]. "/ Bitrix / header.php"; ?> php $ APPLICATION-> IncludeComponent ( "демо: каталог.элемент", "", Массив ( "PRODUCT_ID" => "346" ) ); ?> php требуется $ _SERVER ["DOCUMENT_ROOT"]. "/ bitrix / footer.php"; ?>
Поиск:
$ arParams • $ arResult • .description.php • .parameters.php • CMS • Web-разработка • Битрикс • Компонент • Шаблон компонента • Элемент инфоблока • $ arComponentDescription • $ arComponentParameters
.
Битрикс. Отложенные функции. Категория: Web-разработка • CMS Битрикс
Отложенные функции — технология, позволяющая задавать заголовок страницы, меню навигационной цепочки, CSS стили, дополнительные кнопки в панель управления, мета-теги и т.п. с помощью функций, используемых непосредственно в теле страницы. Соответствующие результаты работы этих функций выведены в прологе, то есть выше по коду, чем они были заданы.
Технология была создана в первую очередь для использования в компонентах, которые, как правило, выводятся в тележки, но при этом внутри них могут быть заданы заголовки страницы, добавлен пункт в навигационную цепочку, добавлена кнопка в панели управления и так далее.Отложенные функции нельзя использовать в файлах шаблона компонента template.php
и result_modifier.php
(так как их выполнение кешируются).
Алгоритм работы
Любой исходящий поток из PHP скрипта буферизируется. Как только в коде встречается одна из следующих функций:
-
CMain :: ShowTitle ()
-
CMain :: ShowCSS ()
-
CMain :: ShowNavChain ()
-
CMain :: ShowProperty ()
-
CMain :: ShowMeta ()
-
CMain :: ShowPanel ()
Весь буферизированный до этого контента запоминается в очередном элементе стека КонтентСтраницы .И сразу полсе этого в стек КонтентСтраницы добавляется пустой элемент. В дальнейшем этот пустой элемент будет заполнен результатом выполнения отложенной функции. Имя этой отложенной функции запоминается в стеке ОтложенныеФункции . Буфер очищается и буферизация снова включается.
Таким образом, существует стек КонтентСтраницы , в котором находится весь контент страницы, разбитый на части. В этом же стеке есть пустые элементы, предназначенные для их заполнения результатов отложенных функций.Также стек ОтложенныеФункции , в котором запоминаются имена и параметры отложенных функций в порядке их следования в коде.
В конце страницы, в служебной части эпилога, выполняются следующие действия:
- все отложенные функции из стека41 ОтложенныеФункции Начало одна за другую;
- результаты их выполнения вставляются в специально предназначенные для этого места в стек КонтентСтраницы ;
- весь контент из стека КонтентСтраницы «склеивается» (конкатенируется) и выводится на экран.
Таким образом, технология позволяет фрагментировать весь контент страницы, разбивая его на части с помощью специальных функций, обеспечивающих временное откладывание других функций. В конце страницы все выполняемые функции выполняются одна за другим и результаты выполнения вставляются в отведенные для этого места внутри фрагментированного контента страницы. Затем весь контент склеивается и отправляется браузеру посетителя сайта.
Пример использования
Давайте рассмотрим пример установки заголовка страницы и заголовка окна.
Php / * * Файл /local/templates/page/header.php * / если (! определено ("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED! == true) die (); ?> <название> php $ APPLICATION-> ShowTitle (); / * показываем заголовок * /?>
Php / * * Файл /test/index.php * / require ($ _ SERVER ["DOCUMENT_ROOT"]. "/ bitrix / header.php"); ?>php $ APPLICATION-> ShowTitle (false); / * показываем заголовок страницы * /?>
Lorem ipsum dolor sit amet, conctetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore...
Lorem ipsum dolor sit amet, conctetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore ...
Lorem ipsum dolor sit amet, conctetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore ...
php требуется ($ _ SERVER ["DOCUMENT_ROOT"]. "/ bitrix / footer.php"); ?>
Методы SetTitle ()
и SetPageProperty ()
, заголовок и заголовок страницы у нас пустые.Давайте установим значения заголовков:
Php require ($ _ SERVER ["DOCUMENT_ROOT"]. "/ bitrix / header.php"); // устанавливаем заголовок страницы $ APPLICATION-> SetTitle ('Какой-то заголовок (старый)'); // устанавливаем заголовок $ APPLICATION-> SetPageProperty ('title', 'Какой-то заголовок (старый)'); ?>php $ APPLICATION-> ShowTitle (false); / * показываем заголовок страницы * /?>
Lorem ipsum dolor sit amet, conctetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore...
Lorem ipsum dolor sit amet, conctetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore ...
Lorem ipsum dolor sit amet, conctetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore ...
php требуется ($ _ SERVER ["DOCUMENT_ROOT"]. "/ bitrix / footer.php"); ?>
Переопределим значения заголовков и страницы ниже по коду:
Php требуется ($ _ SERVER ["DOCUMENT_ROOT"]."/bitrix/header.php"); // устанавливаем заголовок страницы $ APPLICATION-> SetTitle ('Какой-то заголовок (старый)'); // устанавливаем заголовок $ APPLICATION-> SetPageProperty ('title', 'Какой-то заголовок (старый)'); ?>php $ APPLICATION-> ShowTitle (false); / * показываем заголовок страницы * /?>
Lorem ipsum dolor sit amet, conctetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore ...
Lorem ipsum dolor sit amet, conctetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore...
php // устанавливаем заголовок страницы $ APPLICATION-> SetTitle ('Какой-то заголовок (новый)'); // устанавливаем заголовок $ APPLICATION-> SetPageProperty ('title', 'Какой-то заголовок (новый)'); ?>Lorem ipsum dolor sit amet, conctetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore ...
php требуется ($ _ SERVER ["DOCUMENT_ROOT"]. "/ bitrix / footer.php"); ?>
В компоненте Битрикс часто можно увидеть такой код, который устанавливает значения заголовков и значенния мета-тегов ключевые слова
и описание
:
if ($ this-> StartResultCache (false, ($ arParams ['CACHE_GROUPS'] === 'N'? False: $ USER-> GetGroups ()))) { / * * Данных в кеше нет, выполняем запрос к БД * / / *...получаем данные ... * / if (isset ($ arResult ['ID'])) {// данные успешно получены $ this-> SetResultCacheKeys ( массив ( 'Я БЫ', 'ИМЯ', "IPROPERTY_VALUES" ) ); $ this-> IncludeComponentTemplate (); } else {// что-то пошло не так $ this-> AbortResultCache (); \ Bitrix \ Iblock \ Component \ Tools :: process404 ( trim ($ arParams ['MESSAGE_404'])?: 'Элемент инфоблока не найден', правда, $ arParams ['SET_STATUS_404'] === 'Y', $ arParams ['SHOW_404'] === 'Y', $ arParams ['FILE_404'] ); } } // кэш не поддерживает все действия ниже, здесь работаем уже с другими $ arResult if (isset ($ arResult ['ID'])) { if ($ arParams ['SET_PAGE_TITLE'] == 'Y') {// установить заголовок страницы? if ($ arResult ['IPROPERTY_VALUES'] ['ELEMENT_PAGE_TITLE']! = '') { $ APPLICATION-> SetTitle ($ arResult ['IPROPERTY_VALUES'] ['ELEMENT_PAGE_TITLE']); } else { $ APPLICATION-> SetTitle ($ arResult ['ИМЯ']); } } if ($ arParams ['SET_BROWSER_TITLE'] == 'Y') {// установить заголовок окна? if ($ arResult ['IPROPERTY_VALUES'] ['ELEMENT_META_TITLE']! = '') { $ APPLICATION-> SetPageProperty ('название', $ arResult ['IPROPERTY_VALUES'] ['ELEMENT_META_TITLE']); } else { $ APPLICATION-> SetPageProperty ('название', $ arResult ['ИМЯ']); } } // установить мета-тег ключевые слова? if ($ arParams ['SET_META_KEYWORDS'] == 'Y' && $ arResult ['IPROPERTY_VALUES'] ['ELEMENT_META_KEYWORDS']! = '') { $ APPLICATION-> SetPageProperty ('ключевые слова', $ arResult ['IPROPERTY_VALUES'] ['ELEMENT_META_KEYWORDS']); } // установить мета-тег описание? if ($ arParams ['SET_META_DESCRIPTION'] == 'Y' && $ arResult ['IPROPERTY_VALUES'] ['ELEMENT_META_DESCRIPTION']! = '') { $ APPLICATION-> SetPageProperty ('описание', $ arResult ['IPROPERTY_VALUES'] ['ELEMENT_META_DESCRIPTION']); } return $ arResult ['ID']; }
Методы ShowViewContent и AddViewContent
Метод CMain :: ShowViewContent ()
в стек КонтентСтраницы пустой элемент.А метод CMain :: AddViewContent ()
в этом элементе, который формируется ниже:
Php require ($ _ SERVER ["DOCUMENT_ROOT"]. "/ bitrix / header.php"); ?>Случайные элементы
Lorem ipsum dolor sit amet, conctetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore ...
php // здесь выводим контент с меткой «random-elements», который будет сфорирован ниже $ APPLICATION-> ShowViewContent ('случайные элементы'); ?>Lorem ipsum dolor sit amet, conctetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore...
php // включаем буферизацию вывода, все идет в отдельный буфер ob_start (); // вызываем компонент, который формирует список блок-случайных элементов инфоблока $ GLOBALS ['ПРИЛОЖЕНИЕ'] -> IncludeComponent ( "токмаков: iblock.random", "", Массив ( "ELEMENT_COUNT" => "4", "ELEMENT_URL" => "#SITE_DIR # / # IBLOCK_CODE # / element / code / # ELEMENT_CODE # /", "IBLOCK_ID" => "5", "IBLOCK_TYPE" => "содержание" ) ); // выключаем буферизацию и помечаем этот контент меткой «random-elements» $ APPLICATION-> AddViewContent ('случайные элементы', ob_get_clean ()); ?>Lorem ipsum dolor sit amet, conctetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore...
php требуется ($ _ SERVER ["DOCUMENT_ROOT"]. "/ bitrix / footer.php"); ?>
Методы SetViewTarget и EndViewTarget
В шаблоне компонента вместо функций ob_start ()
и ob_get_clean ()
можно использовать методы SetViewTarget ()
и EndViewTarget ()
:
Php // включаем буферизацию и помечаем этот контент меткой «smart-filter» $ this-> SetViewTarget ('умный фильтр'); ?>php $ APPLICATION-> IncludeComponent ( Битрикс: каталог.smart.filter ', '', Массив ( // параметры компонента ), $ component ); ?>php // выключаем буферизацию $ this-> EndViewTarget (); ?>
В том месте, где нам нужно вывести контент, добавляем в стек КонтентСтраницы пустой элемент:
php $ APPLICATION-> ShowViewContent ('смарт-фильтр'); ?>
Поиск:
CMS • Web-разработка • Битрикс • Буферизация • Отложенные функции • ShowTitle • ShowCSS • ShowNavChain • ShowProperty • ShowMeta • ShowPanel • ShowViewContent • AddViewContent • SetViewTarget • EndViewTarget
.
Битрикс. SEO для инфоблока, раздела и страницы. Категория: Web-разработка • CMS Битрикс
Для тех, кто не в курсе: SEO (поисковая оптимизация, оптимизация для поисковых систем) — это комплекс мер для повышения эффективности сайтов в результатах выдачи поисковых систем (Яндекс, Google, MAIL.RU и других) по заранее определенным поисковым запросам.
SEO-настройки для инфоблока
Шаблоны SEO данных можно задавать как для всего инфоблока (т.е. для всех его разделов и элементов), так и для конкретных разделов, или элементовного раздела. Настройка может быть сделана для всего инфоблока, а потом для конкретного раздела / элемента переопределена на свою персональную. Все эти настройки выполняются на закладке «SEO» формы создания / редактирования соответственно инфоблока, раздела или элемента.
Настройки для всего инфоблока, раздела и элемента:
Содержимое закладки «SEO» для инфоблока и для раздела полностью идентично.В ней задаются шаблоны заголовков, ключевых слов, описаний для разделов и для элементов, а также шаблоны тегов для изображений разделов и элементов. В закладке SEO формы редактирования элементов принимают только те настройки, которые касаются самих элементов и их изображений.
Аналогичным образом происходит работа и с атрибутами картинок. Настройка шаблонов осуществляется как для анонсовых, так и для детальных изображений разделов и элементов инфоблока. Для картинок можно установить атрибуты alt
, title
, а также делать шаблоны названий файлов.
Обратите внимание, что все настройки файлов работают только для тех файлов, которые загружены в систему после выполнения настроек. Для ранее загруженных файлов настройки не применяются.
SEO-настройки для раздела и страницы
В Битрикс «создать раздел» — означает создать директорию и файл index.php
, а «создать страницу» — означает создать php-файл. Для раздела также могут быть заданы SEO-настройки. Причем, эти настройки будут наследоваться дочерними разделами и страницами.Мало того, есть возможность установить SEO-настройки для директории, которые будут наследоваться всеми разделами и страницами.
Настройки для корневого раздела, раздела и страницы:
Настройки для раздела сохраняются не в базе данных, а в файле .section.php
:
Php $ sSectionName = "Торговый Дом Аврора"; $ arDirProperties = Массив ( "keywords" => "поставка и монтаж холодильного оборудования, холодильные камеры, камеры шоковой заморозки", "description" => "Поставка и монтаж холодильного оборудования, холодильные камеры для магазинов и супермаркетов.", "title" => "Поставка и монтаж холодильного оборудования супермаркетов", "robots" => "index, follow" ); ?>
Настройки для страницы прописываются в самом php-файле страницы:
Php require ($ _ SERVER ["DOCUMENT_ROOT"]. "/ bitrix / header.php"); $ APPLICATION-> SetPageProperty ( "заглавие", "Поставка и монтаж холодильного оборудования супермаркетов" ); $ APPLICATION-> SetPageProperty ( "ключевые слова", "поставка и монтаж холодильного оборудования, холодильные камеры, камеры шоковой заморозки" ); $ APPLICATION-> SetPageProperty ( "описание", "Поставка и монтаж холодильного оборудования, холодильные камеры для магазинов и супермаркетов." ); $ APPLICATION-> SetTitle («Поставка и монтаж холодильного оборудования»); ?>php $ APPLICATION-> ShowTitle (false); ?>
Lorem ipsum dolor sit amet, conctetur adipiscing elit, sed do eiusmod tempor incididunt ut labore ...
php require ($ _ SERVER ["DOCUMENT_ROOT"]. "/ bitrix / footer.php"); ?>
Столкнулся с тем, что расположенные на странице, тоже размещены страницы. Если вдруг вылезли непонятные заголовки или мета-теги, надо смотреть настройки всех компонентов на странице и снимать галочки:
- Устанавливать заголовок страницы
- Устанавливать заголовок окна
- Устанавливать ключевые слова страницы
- Устанавливать описание страницы
Поиск:
CMS • SEO • Веб-разработка • Битрикс • Инфоблок • Раздел инфоблока • Раздел сайта • Страница сайта • Элемент инфоблока • Настройка • Мета теги
.