Forums / National / Russian / Тех. поддержка / [Решено] URL in Page module cloned

Alex300
#47090 2023-09-20 05:44

Ок. Задачу то мы полностью не знаем и предлагаем разные варианты решений.

Вернемся к изначальному вопросу ). Что такое хуки почитать можно тут. По сути это реализация событийной системы.

Нужно сделать обработчик события (хука). Для этого в корень расширения 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/
This post was edited by Alex300 (2023-09-20 07:40, 7 months ago)