| Alex300 |
|
|---|---|
|
Ок. Задачу то мы полностью не знаем и предлагаем разные варианты решений. Вернемся к изначальному вопросу ). Что такое хуки почитать можно тут. По сути это реализация событийной системы. Нужно сделать обработчик события (хука). Для этого в корень расширения video добавте файл video.urleditor.rewrite.first.php следующего содержания:
<?php
/* ====================
[BEGIN_COT_EXT]
Hooks=urleditor.rewrite.first
[END_COT_EXT]
==================== */
/**
* @var string[] $path части пути в URL
* @var int $count количество частей
* @var string $rwr
*/
if (empty($path)) {
return;
}
if (!in_array($path[0], ['serials', 'films', 'trailer'])) {
// Это не наше расширение
return;
}
$_GET['e'] = 'video';
// После выполнения этого обработчика продолжать разбирать URL не надо
$rwr_continue = false;
if ($count == 1) {
// Это категория
$_GET['c'] = $path[0];
} else {
$last = $count - 1;
if ((isset(\Cot::$structure['video'][$path[$last]]))) {
// Это категория
$_GET['c'] = $path[$last];
} else {
$_GET['c'] = $path[$last - 1];
$_GET['al'] = $path[$last];
}
}
// Тут можно сравнить cot_structure_parents($_GET['c')) и path и в случае несовпадения отдать 404
// Это нужно для того чтобы https://domain.tld/serials/good-omens/postalias/?bar=baz была доступна только по этому адресу, а не
// https://domain.tld/good-omens/postalias/?bar=baz и поисковики не индексировали дубли страниц
// Ну или можно так
if (!isset($_GET['m']) || !in_array($_GET['m'], ['add', 'edit'])) {
$tmpUrl = cot_url(
'video',
['c' => $_GET['c'], (!empty($_GET['al']) ? 'al' : 'id') => $path[$last]]
);
if ($rwr != $tmpUrl && $rwr != urldecode($tmpUrl)) {
cot_url_usertheme_files();
cot_die_message(404, true);
}
}
Обновите свое расширение в панели администратора.
P.S. код писался навскидку, в качестве примера и может потребоваться отладка Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english... Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/ Відредаговано: Alex300 (20.09.2023 07:40, 2 року тому) |