This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Next revision Both sides next revision | ||
ru:components-depending-on-the_page [2013/10/01 09:13] Arkady [Исключение компонента] |
ru:components-depending-on-the_page [2013/10/01 09:20] Arkady [Функция для вывода разных компонентов на разных страницах] |
||
---|---|---|---|
Line 63: | Line 63: | ||
===Разные сайдбары на разных страницах=== | ===Разные сайдбары на разных страницах=== | ||
- | Оригинал статьи, по которому сделан перевод, можно почитать [[http://mvlcek.bplaced.net/how-to/sidebars/|здесь]]. | + | **Оригинал статьи, по которому сделан перевод, можно почитать [[http://mvlcek.bplaced.net/how-to/sidebars/|здесь]].** |
+ | Для вывода разных сайдбаров на разных страницах существует несколько способов. | ||
+ | Один из них – именование соответствующих компонентов таким образом, чтобы их имя содержало постоянную ссылку на страницу (slug), допустим, //sidebar-mypage//, и вызов соответствующего компонента в коду шаблона следующим образом: | ||
+ | <code><?php | ||
+ | if (return_i18n_component('sidebar-'.return_page_slug())) { | ||
+ | get_i18n_component('sidebar-'.return_page_slug()); | ||
+ | } else { | ||
+ | get_i18n_component('sidebar'); | ||
+ | } | ||
+ | ?></code> | ||
+ | Компонент с именем //sidebar// - наш сайдбар по умолчанию. Остальным компонентам присваиваются имена //sidebar-xxx//, где xxx - текстовый идентификатор страницы (slug), на которой предполагается замена сайдбара по умолчанию на предназначенный именно для этой страницы. | ||
+ | Другой способ – использование пользовательского поля (custom field) c именем «//sidebar//» - лучше применить выпадающий список с именами компонентов-сайдбаров. Допустимо и простое текстовое поле, но это не очень удобно из-за возможной ошибки при вводе имени компонента. | ||
+ | |||
+ | После формирования списка просто включаем выбранный компонент в шаблон: | ||
+ | |||
+ | <code><?php get_i18n_component(return_custom_field('sidebar')); ?></code> | ||
+ | |||
+ | При желании можно предварительно проверить пользовательское поле с компонентом на существование: | ||
+ | |||
+ | <code><?php | ||
+ | if (return_custom_field('sidebar')) { | ||
+ | get_i18n_component(return_custom_field('sidebar')); | ||
+ | } else { | ||
+ | get_i18n_component('sidebar'); | ||
+ | } | ||
+ | ?></code> | ||
+ | |||
+ | Если сайдбары необходимо выводить постранично, то есть для каждой страницы – свой сайдбар, можно создать пользовательское поле WYSIWIG, соответствующим образом отредактировать его на каждой странице, и вставить в файл шаблона следующий код: | ||
+ | |||
+ | <code><?php get_custom_field('sidebar'); ?></code> | ||
+ | |||
+ | Тот же результат, но с проверкой пользовательского поля с компонентом на существование: | ||
+ | |||
+ | <code><?php | ||
+ | if (return_custom_field('sidebar')) { | ||
+ | get_custom_field('sidebar'); | ||
+ | } else { | ||
+ | get_i18n_component('sidebar'); | ||
+ | } | ||
+ | ?></code> |