Поиск ID ресурса по URI в MODx
Применение метода modX::findResource
для поиска ресурса по URI в MODx.
Оглавление
В данной статье я хочу показать вам, как в 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,1054 s
Количество запросов: 28
Источник: cache