Сниипет для использования alias вместо ID в Modx Revolution

Столкнулся с проблемой, решения которой в интернете найти не смог, пришлось обращаться за помощью к знатокам Modx, в результате чего и родился этот сниппет. В чем суть проблемы?

Большинство плагинов Modx Revo используют в качестве источников для вывода значений, сортировки и т.п. ID ресурсов. Но как быть, когда хочется использовать не безликие ID, а понятные alias? Например указать в PdoMenu что мы хотим получить вывод из категории "Хлебные изделия" документов лепешка и пирожок? Раньше надо было писать что то типа:

pdoMenu? &level=`1` &parents=`75` &resources=`218, 436`

где все цифры надо было выискать глазами в дереве ресурсов. С помощью плагина, представленного ниже, это можно сделать как:

pdoMenu? &level=`1`&parents=`имя_сниппета &alias=`hleb`&resources=`имя_сниппета &alias=`lepeshka pirozhok`

А вот и код самого плагина:

<?php
if(!isset($scriptProperties['alias'])){
return "";
}
if(!isset($scriptProperties['regSepFrom']) || empty($scriptProperties['regSepFrom'])){
$scriptProperties['regSepFrom'] = "/\s+/";
}
if(!isset($scriptProperties['sepTo']) || empty($scriptProperties['sepTo'])){
$scriptProperties['sepTo'] = ",";
}
$scriptProperties['alias'] = preg_split($scriptProperties['regSepFrom'], trim($scriptProperties['alias']));
foreach($alias as $k => $v){
$v = trim($v);
if(!empty($v)){
$scriptProperties['alias'][$k] = $v;
}
}

if(!isset($scriptProperties['context']) || empty($scriptProperties['context'])){
$scriptProperties['context'] = $modx->resource->context_key;
}
if(empty($scriptProperties['alias'])){
return "";
}
$aliasRes = $modx->getCollection('modResource', array('alias:IN' => $scriptProperties['alias'], 'context_key' => $scriptProperties['context']));
$result = array();
if($aliasRes){
foreach($aliasRes as $res){
$result[] = $res->get("id");
}
$result = implode($scriptProperties['sepTo'], $result);
}
return $result;

Оптимизировано для работы в рамках контекста!

Оставить комментарий

Читать комментарии к статье

Оставить комментарий:

Текст на изображении: Дайте понять, что вы не спамер Если вам не понятен текст на изображении обновите страницу, нажав F5

К этой новости нет комментариев.

Возможно, ваш будет первым?

Заметки схожей тематики:

ТО в Тибете. Окончание истории

10 мая 2008 года - новое начало

Стартовала англоязычная часть проекта