Как-то раз, на проекте корпоративного сайта по бухгалтерскому обслуживанию возникла необходимость сделать страницу услуги в обычном корпоративном сайте по типу лендинга, дополнив страницу соответствующими блоками.
Обычная страница состоит из блоков:
- заголовок
- изображение
- анонс
- блок призыва к действию
- детальное описание
- отзывы
- услуги
- и т.д.
Появилась необходимость дополнить страницу блоками:
- почему стоит выбрать именно нас?
- с какими сферами работаем?
- как работаем?
- сколько стоит?
Причем данные блоки должны быть «красиво» оформлены соответствующей инфографикой и должны размещаться в произвольном месте в детальном тексте.
Из-за того, что аналогичных услуг много и данные блоки должны быть размещены в каждой из них, я подумал, а почему бы не сделать это подключением отдельных областей файлов.
Задача:
Создать отдельные файлы с html блоками, выводить в теле элемента инфоблока через «тег», «маркер», «шоткод» в нужных местах.
Входные данные:
1С-Битрикс + Решение Аспро: Корпоративный сайт 2.0
Решение:
Создать 4 файла:
/include/content_pochemu.php /include/content_sfery.php /include/content_kak.php /include/content_skolko.php
Исходники:
20230511 битрикс коды в элемент
Далее в файле component_epilog.php шаблона услуг:
/bitrix/templates/aspro-allcorp2/components/bitrix/news.detail/services/component_epilog.php
Внести правки до вывода содержимого поля ‘DETAIL_TEXT’:
<?//Записываем содержимое файла в переменную ?> <?$content_pochemu = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/include/content_pochemu.php');?> <?//Заменяем тег #CONTENT_POCHEMU# на содержимое загруженного файла ?> <?$templateData["DETAIL_TEXT"] = str_replace("#CONTENT_POCHEMU#", $content_pochemu, $templateData["DETAIL_TEXT"]);?> <?$content_sfery = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/include/content_sfery.php');?> <?$templateData["DETAIL_TEXT"] = str_replace("#CONTENT_SFERY#", $content_sfery, $templateData["DETAIL_TEXT"]);?> <?$content_kak = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/include/content_kak.php');?> <?$templateData["DETAIL_TEXT"] = str_replace("#CONTENT_KAK#", $content_kak, $templateData["DETAIL_TEXT"]);?> <?$content_skolko = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/include/content_skolko.php');?> <?$templateData["DETAIL_TEXT"] = str_replace("#CONTENT_SKOLKO#", $content_skolko, $templateData["DETAIL_TEXT"]);?> <?//Вывод детального описания ?> <?=$templateData['DETAIL_TEXT'];?>
В данном коде:
1) в каждую переменную загружается содержимое соответствующего файла внутри которого html блоки с инфографикой и описанием.
2) внутри поля ‘DETAIL_TEXT’ производится замена найденного тега #TUT_TAG# на соответствующее содержимое.
3) и в конце осуществляется вывод поля ‘DETAIL_TEXT’.
Изначальный вид обычной страницы услуги:
https://allcorp2.aspro-demo.ru/services/avtomatizatsiya/avtomatizatsiya-otdela-prodazh/
Модифицированный вид:
https://unitbuh.ru/services/bukhgalterskie-uslugi/bukhgalterskoe-obsluzhivanie/
Спасибо за внимание.
…