Функция 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']
]
Возвращаемое значение:
Функция возвращает массив, состоящий из пар [ссылка, название категории], которые будут использованы для формирования хлебных крошек.
Комментарии (0)
Автор контента
Оффлайн
Administrator
Последняя авторизация: 05.07.2026 18:32
- Страница размещена: 21.01.2025 22:08
- Последнее обновление: 21.01.2025 22:12