Как определить первую родительскую категорию в Котонти Сиена

При создании и HTML верстке темы оформления для Котонти Сиена нередко приходится работать с кодом первой родительской категории. Как его определить?

Определение категорий в иерархии страницы - полезная и часто используемая работа при подготовке макета сайта. Получить непосредственного "родителя" несложно: в соответствующих модулях и плагинах для этого есть свои теги и переменные, формируемые через системную функцию cot_generate_pagetags. Однако получить таким образом можно только первую категорию.

Напомним, что в страницах за это отвечают теги:

{PAGE_CAT} и {PAGE_CATTITLE}

В разделах (листах) можно использовать:

{LIST_CAT} и {LIST_CATEGORY}

В регулярном блоке списка страниц:

{LIST_ROW_CAT} и {LIST_ROW_CATTITLE}

Аналогичным образом формируются теги в других плагинах, использующих страничную структуру, например News или Recent Items.

Но что делать если нам необходимо получить и сравнить первого "родителя" в сайте с развернутой структурой, вроде "Раздел 1" / "Раздел 1.1" / "Раздел 1.1.1" / "Конечная страница"? Это можно сделать при помощи несложной функции, которую мы разместим в PHP-файле темы (themename.php):

if (!function_exists(get_root_cat))
{
	function get_root_cat($code)
	{
		global $structure;
		return mb_substr($structure['page'][$code]['path'], 0, mb_strpos($structure['page'][$code]['path'], '.'));
	}
}

Теперь в HTML коде темы можно производить операции с получением и сравнением кода, например:

<!-- IF {PHP.pag.page_cat|get_root_cat($this)} == accessories -->
{FILE "{PHP.cfg.themes_dir}/{PHP.theme}/inc/page-shop-accessories.tpl"}
<!-- ENDIF -->

Аналогичным способом можно получить и использовать название первого родительского раздела:

if (!function_exists(get_root_title))
{
function get_root_title($code)
	{
		global $structure;
		$cat = mb_substr($structure['page'][$code]['path'], 0, mb_strpos($structure['page'][$code]['path'], '.'));
		return $structure['page'][$cat]['title'];
	}
}

Удачной вам верстки!

Обсудить на форумах сообщества Котонти. 

Заинтересовались? Звоните нам по телефонам +375 (29) 774-35-89 и +375 (44) 774-35-89 в Минске. Мы будем рады помочь Вам в реализации Вашего проекта.

К посту «Как определить первую родительскую категорию в Котонти Сиена» комментариев пока нет
Добавление комментариев доступно только зарегистрированным пользователям