Функция cot_url_modify в Cotonti
создает измененную версию текущего URL, добавляя или заменяя указанные параметры. Она также учитывает постфиксы, флаги экранирования HTML-символов и глобальные параметры
Функция cot_url_modify создает измененную версию текущего URL, добавляя или заменяя указанные параметры $params. Она также учитывает постфиксы, флаги экранирования HTML-символов и глобальные параметры ($cot_url_appendix).
Код штатной функции котонти - cot_url_modify:
function cot_url_modify($params = [], $tail = '', $htmlspecialcharsBypass = false, $ignoreAppendix = false)
{
// Предобработка аргументов
if (is_string($params)) {
$params = cot_parse_str($params); // Преобразование строки параметров в массив
}
if (!is_array($params)) {
$params = []; // Если параметры не массив, создаем пустой массив
}
// Определение области (модуля или плагина)
$area = defined('COT_PLUG') ? 'plug' : Cot::$env['ext'];
// Объединение текущих GET-параметров с переданными
$params = array_merge($_GET, $params);
// Если не плагин, удаляем параметр 'e' (обозначение расширения)
if (!defined('COT_PLUG')) {
unset($params['e']);
}
// Удаляем параметр 'rwr' (обычно используется для обработки ЧПУ)
unset($params['rwr']);
// Возвращаем URL, сформированный с учетом обработанных параметров
return cot_url(
$area,
$params,
$tail,
$htmlspecialcharsBypass,
$ignoreAppendix
);
}
Подробное объяснение:
Преобразование параметров в массив:
if (is_string($params)) {
$params = cot_parse_str($params);
}
if (!is_array($params)) {
$params = [];
}
Если $params переданы строкой (например, 'param1=value1¶m2=value2'), они преобразуются в массив с помощью cot_parse_str. Если $params не массив или строка, создается пустой массив.
Определение области (модуля или плагина):
$area = defined('COT_PLUG') ? 'plug' : Cot::$env['ext'];
Функция определяет текущую область:
Если выполняется плагин (COT_PLUG определен), областью будет 'plug'.
В остальных случаях используется текущая область, хранящаяся в Cot::$env['ext'].
Объединение параметров:
$params = array_merge($_GET, $params);
Содержимое текущих GET-параметров ($_GET) объединяется с переданными $params. Если параметры совпадают, приоритет имеют значения из $params.
Удаление специфичных параметров:
if (!defined('COT_PLUG')) {
unset($params['e']);
}
unset($params['rwr']);
Удаляется параметр 'e' (если текущая область — не плагин). Этот параметр отвечает за идентификацию модуля или расширения в Cotonti.
Удаляется параметр 'rwr', который используется для обработки ссылок в формате ЧПУ (человеко-понятные URL).
Формирование ссылки:
return cot_url(
$area,
$params,
$tail,
$htmlspecialcharsBypass,
$ignoreAppendix
);
Финальный URL генерируется с использованием обработанных параметров, указанной области $area и дополнительных флагов ($tail, $htmlspecialcharsBypass, $ignoreAppendix).
Параметры функции:
$params (массив или строка)
Массив или строка с параметрами, которые нужно добавить или изменить в текущем URL.
$tail (строка)
Постфикс, добавляемый в конец URL (например, якорь #anchor).
$htmlspecialcharsBypass (булево)
Если true, отключается преобразование специальных символов в HTML (например, & в &).
$ignoreAppendix (булево)
Если true, игнорируется глобальная переменная $cot_url_appendix.
Итоги:
Функция позволяет динамически модифицировать текущий URL, добавляя или заменяя параметры, сохраняя гибкость и совместимость с Cotonti. Она полезна для генерации ссылок с учетом текущего состояния страницы.
Пример использования функции cot_url_modify в контексте фреймворка Cotonti:
Задача:
На странице с перечнем статей требуется создать ссылку, которая добавит или изменит параметр сортировки (sort) на date и укажет количество элементов на странице (limit) как 10. Ссылка также должна содержать якорь для прокрутки вниз к разделу с заголовком.
Пример использования:
// Исходный URL: index.php?e=page&cat=news&sort=title&limit=5
// Массив параметров, которые нужно изменить или добавить
$newParams = array(
'sort' => 'date', // Изменяем сортировку на 'date'
'limit' => 10 // Указываем, что на странице должно быть 10 элементов
);
// Указываем якорь для ссылки
$tail = '#articles'; // Якорь для раздела "articles"
// Генерируем ссылку с помощью cot_url_modify
$newUrl = cot_url_modify($newParams, $tail);
// Вывод ссылки
echo '<a href="' . $newUrl . '">Сортировать по дате</a>';
Объяснение:
Исходный URL: Допустим, текущий URL выглядит так:
index.php?e=page&cat=news&sort=title&limit=5
Параметр sort отвечает за сортировку статей (в данном случае сортировка по названию title).
Параметр limit определяет количество статей на странице (здесь 5).
Передаем параметры для модификации:
$newParams = array(
'sort' => 'date', // Меняем сортировку на 'date'
'limit' => 10 // Задаем новое значение для лимита
);
Добавляем якорь:
$tail = '#articles'; // Указываем якорь на раздел "articles"
Генерация нового URL:
$newUrl = cot_url_modify($newParams, $tail);
Эта строка создаст URL, объединяя текущие параметры из $_GET с новыми значениями, указанными в $newParams. Также добавится якорь из $tail.
Результат: На странице будет выведена ссылка:
<a href="index.php?e=page&cat=news&sort=date&limit=10#articles">Сортировать по дате</a>
При клике на неё пользователь будет перенаправлен на ту же категорию новостей, но уже с сортировкой по дате и отображением 10 элементов.
Итоги:
Функция cot_url_modify очень удобна, когда нужно изменить или добавить параметры в текущий URL без необходимости заново строить его с нуля. Она автоматически обрабатывает все параметры и корректно работает с ЧПУ (если включены).
Комментарии (0)
Автор контента
Оффлайн
Administrator
Последняя авторизация: 03.08.2026 13:51
- Страница размещена: 23.01.2025 22:54
- Последнее обновление: 23.01.2025 23:07