User Tools

Site Tools


ru:components-depending-on-the_page

This is an old revision of the document!


Вывод компонентов в зависимости от страницы

Как вывести компонент только на одной странице

Если вам требуется показать компонент только на одной странице, это можно сделать с помощью следующего кода в файле шаблона template.php:

<?php if (return_page_slug()=='PAGE') get_component('COMPNAME'); ?>

Соответственно – ‘PAGE’ – постоянная ссылка на страницу (slug), ‘COMPNAME’ – имя вашего компонента.

Вывод компонента в зависимости от родителя страницы

Похожий метод работает для вывода определенного компонента на страницу в зависимости от ее родителя:

<?php if (get_parent(0)=='PAGE') get_component('COMPNAME'); ?>

Здесь ‘PAGE’ – постоянная ссылка на страницу-родитель (slug), ‘COMPNAME’ – имя вашего компонента.

Исключение компонента

Для исключения компонента из определенной страницы или в зависимости от родителя поменяйте в приведенном выше коде “==“ на ”!=“.

Функция для вывода разных компонентов на разных страницах

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

Для постраничного вывода компонентов необходимо создать в вашей теме файл functions.php, если его там еще нет, и добавить туда следующую функцию:

<?php
if (!function_exists('component_exists')) {
    function component_exists($id) {
        global $components;
        if (!$components) {
             if (file_exists(GSDATAOTHERPATH.'components.xml')) {
                $data = getXML(GSDATAOTHERPATH.'components.xml');
                $components = $data->item;
            } else {
                $components = array();
            }
        }
        $exists = FALSE;
        if (count($components) > 0) {
            foreach ($components as $component) {
                if ($id == $component->slug) {
                    $exists = TRUE;
                    break;
                }
            }
        }
        return $exists;
    }
}
?>

Создайте компонент, который будет использоваться по умолчанию. Дайте ему имя, допустим, default. Создайте компоненты для других страниц. Имя компонента должно включать в себя постоянную ссылку (slug) той страницы, на которой их предполагается вызывать, допустим: content-about, content-contact. Затем разместите в шаблоне следующий код:

<?php  if (component_exists('content-'.get_page_slug(false)))
	  {get_component('content-'.get_page_slug(false));}
     else {get_component('default');}	?>

Разные сайдбары на разных страницах

Оригинал статьи, по которому сделан перевод, можно почитать здесь.

ru/components-depending-on-the_page.1380618793.txt.gz · Last modified: 2013/10/01 09:13 by Arkady