На время проведения реконструкции сайт переведён в режим "ТОЛЬКО ЧТЕНИЕ" (Read only). Приносим свои извинения!
MaxHub
Полезности по Maxsite CMS

Функция проверки типа страницы

Статьи / 13 июля 2014

В большинстве задач, решаемых с помощью maxSite CMS, вебмастеру не приходится сталкиваться с использованием возможности создания альтернативных типов страниц (т.е. ещё типы кроме blog и static). Однако, в более-менее серьёзных задачах (как, например, построение интернет-магазина) эта возможность активно используется.

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

if( !function_exists('is_page_type') )
{
    function is_page_type($type = '')
    {
        global $page, $mso_page_current;
        if( is_type('page') && isset($mso_page_current) && isset($mso_page_current['page_type_name']) && $type == $mso_page_current['page_type_name'] )
        {
            return true;
        }
        elseif( is_type('page') && isset($page) && isset($page['page_type_name']) && $type == $page['page_type_name'] )
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

Код простой. Суть работы функции сводится к проверке наличия и значения ключа page_type_name глобальной переменной $page, в которой хранится информация о текущей выводимой странице. Чтобы избежать возможного конфликта со стандартной функцией, которая может появится в движке в будущем, сделана специальная обёртка-проверка существования функции is_page_type. Чтобы использовать приведённую функцию вам достаточно целиком скопировать код в файл \custom\my_functions.php, который находится в подпапке custom вашего шаблона (актуально для D3). Для более старых версий шаблонов/движка можно добавить функцию в файл functions.php, в корне папки шаблона.

Пример использования функции можно увидеть на следующем скриншоте - текстовый виджет будет выводится на страницах каталога и на страницах типа soft.

Приветствуются любые идеи по доработке и использованию функции.

UPD: добавил определение по глобальной переменной $mso_page_current.

Комментариев: 2
  1. http://max-3000.com/page/uslovija-otobrazhenija-vidzheta

    Вроде же есть такая функция - is_type()

  2. Yuriy, функция is_type() проверяет тип страницы в шаблоне. А тип записи это другое. По сути, у is_type("page") могут быть ещё разные типы - blog, static и др.