Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Как создать шаблон сайта в зависимости от настроек разделов и страниц ?

00 голосов
6
Здравствуйте!

Имею дизайн, в котором некоторые блоки должны выводится/не выводится на произвольных страницах. Показ блоков регламентируется свойствами сайта/раздела/страницы.
А вот как заставить работать это в шаблоне, в частности, в прологе ?

Дело в том, что в зависимости от значения свойства страницы в блоке может выводится как текст, так и, например, подключаться меню как компонент.

Отложенные функции перечитал не один раз, но результата не добился. либо выводится текст(значение свойства, меню целиком) до доктайпа, либо внутри отложенных функций определяются дополнительные переменные (причем они выводятся также до доктайпа), но в прологе их не видно.

Только начал знакомство с БУСом. Пригодятся любые советы.
Заранее благодарю за помощь.
спросил 06 Июнь, 13 от marcel (160 баллов)

6 Ответы

00 голосов
Попробуйте использовать просто включаемые области. Что мудрить-то?
ответил 06 Июнь, 13 от ZakonD3D (600 баллов)
00 голосов
Модифицируйте файлы скелета шаблона сайта:
/bitrix/templates/*/header.php или
/bitrix/templates/*/footer.php
где * - имя вашего шаблона сайта.

Код
<?if ($APPLICATION->GetCurDir()=='/news/'):?>
<div class="add1">
дополнительный блок для раздела новостей
</div>
<?else:?>
<div clas="add2">
дополнительный блок для прочих разделов
</div>
<?endif;?>
Код
<?if ($APPLICATION->GetCurPage()=='/news/omg.php'):?>
<div class="add3">
дополнительный блок для страницы /news/omg.php
</div>
<?else:?>
<div class="add4">
дополнительный блок для прочих страниц
</div>
<?endif;?>
Если надо еще и гет анализировать, используйте GetCurUri или GetCurPage/GetCurDir совместно с $_GET
ответил 14 Июнь, 13 от Eddie (2,060 баллов)
00 голосов
Цитата
Виталий Соков пишет:
Попробуйте использовать просто включаемые области. Что мудрить-то?


Дело не в том, чтобы замудрить...
А в том, чтобы показывать общие элементы дизайна на определенных страницах, т.е. НЕ НА ВСЕХ.
Самым разумным способом задания таких условий мне видится через свойства страницы/раздела.
Как это реализовать с помощью включаемых областей я не представляю.
Буду Вам очень признателен, если подскажите.
ответил 17 Сен, 13 от marcel (160 баллов)
00 голосов
Цитата
Дмитрий Якинцев пишет:
Модифицируйте файлы скелета шаблона сайта:
/bitrix/templates/*/header.php или
/bitrix/templates/*/footer.php
где * - имя вашего шаблона сайта.

Код
<?if ($APPLICATION->GetCurDir()=='/news/'):?>
<div class="add1">
дополнительный блок для раздела новостей
</div>
<?else:?>
<div clas="add2">
дополнительный блок для прочих разделов
</div>
<?endif;?>
Код
<?if ($APPLICATION->GetCurPage()=='/news/omg.php'):?>
<div class="add3">
дополнительный блок для страницы /news/omg.php
</div>
<?else:?>
<div class="add4">
дополнительный блок для прочих страниц
</div>
<?endif;?>
Если надо еще и гет анализировать, используйте GetCurUri или GetCurPage/GetCurDir совместно с $_GET


Спасибо за подробное объяснение.

Но это весьма прямолинейный способ. Один раз можно так написать, но его модификация очень затруднительна.
ответил 16 Дек, 13 от marcel (160 баллов)
00 голосов
Поясню проблему.

В центральной части шаблона сайта помимо контента имеется еще два блока (пока два). Описываются блоки в прологе. Но, согласно дизайну, на сайте имеются страницы (их немного), где один или оба этих блока отсутствуют.

Вариант создания нескольких шаблонов и по условию прикреплять их к сайту не подходит, т.к. отличия у шаблонов будут минимальны, а при изменении верстки общей части придется править несколько шаблонов. К тому же заранее неизвестно сколько еще будет таких страниц и сколько блоков.

Поэтому создан один шаблон и производится попытка его динамического изменения в зависимости от свойств страницы/раздела.
ответил 31 Март, 14 от marcel (160 баллов)
00 голосов
Volkodaff, используйте идею Дмитрия Якинцева, но используйте не текущие параметры GET или текущую директорию, а используйте свойства страниц разделов.
Используйте GetProperty, GetPageProperty, GetDirProperty для получения значения свойств.
А SetDirProperty и SetPageProperty для установки.
ответил 24 Июль, 14 от Almarea (3,760 баллов)

Похожие вопросы

0 голосов
0 ответов
0 голосов
2 ответов
0 голосов
3 ответов