Функция 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 minutes read Administrator

Comments (0)

No comments yet
Only registered users can post new comments

Article multicategories

Additional categories where this article is shown as similar.

Content author

Administrator

Offline

Administrator

Last logged: 2026-09-13 14:50

  • Page published: 2025-01-21 22:08
  • Last update: 2025-01-21 22:12