Современная, быстрая и удобная система управления сайтом

Информация о рубрике

Центр помощиКомментарии: 0Просмотров: 10060

Иногда нужно вывести описание непосредственно на странице рубрики. В 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» из первого примера.