Tramp1357 30 июля 2013 0 1
Предлагаю для большего удобства в использовании modxSmarty добавить в функции расширений processor, chunk и snippet возможность передавать в них стандартные наборы параметров.

На данный момент это делается в коде:

{snippet name=«Wayfinder» params=«startId=`12`&outerClass=`myclass`»}

или сначала формируем массив или строку в JSON и передаем в функцию.

Но ведь в MODX есть прекрасный механизм наборов параметров с удобным интерфейсом в админке. Ведь удобнее было бы написать так:

{snippet name=«Wayfinder» propset=«set1,set2,set3» params=«some_params»}
где set1,set2,… — это наборы параметров PropertySet.

Для того, чтобы это добавить требуется внести некоторые изменения в функции
core/components/modxsmarty/smarty_plugins/function.chunk.php
core/components/modxsmarty/smarty_plugins/function.snippet.php
core/components/modxsmarty/smarty_plugins/function.processor.php

Во всех этих функциях нужно сразу после блока
if(isset($params['params'])){
        $scriptProperties = $params['params'];
        // Check if String
        if(is_string($scriptProperties)){
            $scriptProperties = $modx->parser->parseProperties($scriptProperties);
        }
    }  

добавить блок
if (isset($params['propset'])) {  //есть параметр propset
        $p=$params['propset']; 
        $psets=explode(" ,@",$p); //разобьем на составляющие
        $sp=array();
        foreach($psets as $p) {
         $props=$modx->getObject('modPropertySet',array('name'=>$p))->getProperties();
         if(is_array($props)){
            $sp=$props+$sp; //наборы параметров, указанные правее в списке, более значимы
         }
        $scriptProperties+=$sp; //добавим свойства
        }
    }


И мы имеем все удобства пользования наборами параметров.
1 комментарий
Fi1osof1
Fi1osof 08 августа 2013г в 00:05 #
Извиняюсь! Как-то пропустил топик…

По поводу наборов параметров в чанках и сниппетах: как я говорил ранее, это и сейчас имеется. То есть просто вызываем {snippet name=«mysnippet@propset1@propset2@...»} или {chunk name=«mychunk@propset1@propset2@...»}.
А вот в процессорах этого действительно изначально нет. То есть вообще изначально сам MODX не предусматривал вызова процессоров с наборами параметров.
Буду вносить этот функционал в modxSmarty. Создал себе тикет.
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.