Функция cot_structure_buildpath в Cotonti

Функция cot_structure_buildpath строит путь категории для использования в функции cot_breadcrumbs(), создавая массив ссылок, которые представляют иерархию категорий для указанной области и категории.

Код функции

/**
 * Builds category path for cot_breadcrumbs()
 *
 * @param string $area Area code
 * @param string $cat Category code
 * @return array
 * @see cot_breadcrumbs()
 */
function cot_structure_buildpath($area, $cat, $extrafield = 'title')
{
    global $structure;
    $tmp = array();
    if (isset(Cot::$structure[$area][$cat]['path'])) {
        $pathcodes = explode('.', Cot::$structure[$area][$cat]['path']);
        foreach ($pathcodes as $x) {
            if ($x != 'system') {
                $tmp[] = array(cot_url($area, 'c=' . $x), Cot::$structure[$area][$x][$extrafield]);
            }
        }
    }
    return $tmp;
}


Параметры:
$area (string): Код области (например, page, forum и т.д.). Это определяет, из какой области данных будут извлечены категории.
$cat (string): Код категории, для которой нужно построить путь.
$extrafield (string): Поле для получения дополнительной информации о категории (по умолчанию это поле title), например, название категории.

Пример в статьях

$pagepath = cot_structure_buildpath('page', $page_data['page_cat']);

// влаживаем переменную $pagepath

$catpath = cot_breadcrumbs($pagepath, $pagepath_home, false);

передаем в шаблон через массив тегов:

'CAT_PATH' => $catpath,


Логика работы:


Проверка наличия пути в структуре: Вначале функция проверяет, существует ли путь для заданной категории $cat в структуре категорий области $area.

Это делается через

Cot::$structure[$area][$cat]['path']

 

Разделение пути: Если путь существует, то строка пути (представляющая иерархию категорий) разделяется по точке с помощью explode('.', ...), чтобы получить все коды категорий, составляющие путь.

Формирование массива с ссылками: После этого функция перебирает все коды категорий в пути и для каждого из них формирует ссылку. Для каждой категории извлекается ссылка с помощью cot_url($area, 'c=' . $x) и соответствующее название категории из структуры, используя значение поля $extrafield (например, title).

Возврат результата: В результате получается массив, в котором каждый элемент — это массив с двумя значениями: URL и название категории.

Пример:


Если структура категорий для области page и категории tech выглядит так:


$structure['page']['tech']['path'] = 'root.pages.articles';


То для вызова функции

cot_structure_buildpath('page', 'tech')

результат будет выглядеть так:

[
    [cot_url('page', 'c=root'), 'Root'],
    [cot_url('page', 'c=pages'), 'Pages'],
    [cot_url('page', 'c=articles'), 'Articles']
]


Возвращаемое значение:
Функция возвращает массив, состоящий из пар [ссылка, название категории], которые будут использованы для формирования хлебных крошек.

 

2 минут чтения Administrator

Комментарии (0)

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

Автор контента

Administrator

Оффлайн

Administrator

Последняя авторизация: 05.07.2026 18:32

  • Страница размещена: 21.01.2025 22:08
  • Последнее обновление: 21.01.2025 22:12