Дата публикации
22 Июля 2020
Дата изменения
25 Июля 2020
Уникальных просмотров
1.872

Оглавление

В данной статье я хочу показать вам, как в MODx программно находить ресурсы по их полю URI (не путать с alias). Для этого мы можем воспользоваться отличным методом modX::findResource. К сожалению, поиск данного метода не выдает нужный результат с документацией в поисковиках, по этой причине, я и решил написать эту статью в библиотеку готовых решений работы с ресурсами в MODx.

Описание метода

Много писать про данный метод нет смысла. Он принимает два аргумента, первый — значение URI по которому будет произведен поиск ресурса, и второй — контекст в котором будет произведен поиск ресурса. Выглядит метод так:

$id = $modx->findResource($uri, 'web');

Искомый ресурс не должен быть помечен на удаление, иначе ресурс не будет найден, даже если он существует. На выходе данный метод выдаст вам идентификатор найденного ресурса.

Рабочий пример метода

Не так давно у меня была задача, найти все идентификаторы ресурсов по их URI. SEO-оптимизаторы прислали мне список урлов, я вырезал из путей домен и с помощью данного метода спокойно составил себе массив идентификаторов ресурсов для дальнейшей работы. Код выглядит примерно так:

<?php
$res = '';
$ids = '';

$uris = [
    'index',
    'uri1',
    'uri2'
];

foreach ($uris as $uri) {
    $ids .= $modx->findResource($uri, 'web') . ',';
}

print_r($ids);

В переменной $ids лежит строка с найденными идентификаторами. Далее мы можем разбить эту строку по разделителю и составить массив, с которым можно легко работать. Например, можно пометить на удаление найденные ресурсы через процессор MODx:

<?php
$idsArray = explode(',', ($ids));

foreach ($idsArray as $id) {
    $response = $modx->runProcessor('resource/delete', ['id' => $id]);
    if ($response->isError()) {
        return print_r($modx->error->failure($response->getMessage()));
    }
}

Отдельно хочу отметить, что разработчик pdoTools Василий Наумкин, внес данный метод в коробку своего компонента. Так что, благодаря ему и шаблонизатору Fenom, для поиска ресурса по URI даже необязательно прибегать к программированию на PHP, можно обойтись шаблонизатором.

Благодарность автору

Если по какой-либо причине вы хотите поблагодарить автора данного ресурса, вы можете это сделать одним из удобных для вас способов ниже.

Один из самых популярных способов поблагодарить автора, воспользоваться сервисом Яндекс.Деньги.

Время работы: 0,2032 s
Время запросов: 0,2032 s
Количество запросов: 30
Источник: cache