User Tools

Site Tools


ru:components-depending-on-the_page

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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>​
ru/components-depending-on-the_page.txt · Last modified: 2013/10/09 12:20 by Arkady