Иногда нужно вывести описание непосредственно на странице рубрики. В MaxSite CMS удобней всего оперировать короткой ссылкой, то есть алгоритм во всех случаях простой: вначале получаем короткую ссылку, после этого находим данные рубрики с помощью массива функции mso_cat_array_single();
1. Получение описания. (category.php в шаблоном /type/).
Например нам нужно вывести вверху страницы описание текущей рубрики.
# получаем все рубрики в одном массиве $all_cats = mso_cat_array_single('page', 'category_menu_order'); # текущая рубрика $current_slug = mso_segment(2); # проходимся по массиву и сравниваем slug foreach ($all_cats as $all_cat) { if ($all_cat['category_slug'] == $current_slug) # совпали - это наша рубрика { # выводим описание, если есть if ($all_cat['category_desc']) echo '<div class="category_desc">' . $all_cat['category_desc'] . '</div>'; break; # больше нам ничего не нужно, выходим из цикла } }
Функция mso_cat_array_single() возвращает массив всех рубрик. Причем функция «легкая»: она использует всего один SQL-запрос к базе данных, а также кэширует результат. Поэтому используйте эту функцию без опаски.
Для того, чтобы просмотреть структуру массива, выполните
pr(mso_cat_array_single());
2. Выделение текущей рубрики.
Предположим на страницу рубрики вы выводите список всех рубрик (в одной линии), а текущую следует оформить в span.current.
Задача решается с помощью mso_cat_array_single(). Выводим все рубрики и сравниваем текущий slug. Если он совпал, значит это текущая рубрика.
$all_cats = mso_cat_array_single('page', 'category_menu_order'); echo '<div class="category">'; foreach ($all_cats as $all_cat) { $class = ''; if (is_type_slug('category', $all_cat['category_slug'])) $class = ' class="current"'; echo '<span' . $class . '><a href="' . getinfo('siteurl') . 'category/' . $all_cat['category_slug'] . '">' . $all_cat['category_name'] . '</a></span> '; } echo '</div>';
Функция is_type_slug() проводит сравнение указанного типа данных (category) и указанного slug (из $all_cat) и если они равны текущей странице, то возвращает true.
ПРИМЕЧАНИЕ. В общем-то данный код практически аналогичен явному сравнению: «$all_cat['category_slug'] == $current_slug» из первого примера.