Created
October 19, 2012 07:32
-
-
Save AgelxNash/3916738 to your computer and use it in GitHub Desktop.
HtmlFromNabor
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/**************************************/ | |
/** HtmlFromNabor snippet for MODX Revo | |
* | |
* @version 0.2 | |
* @author Borisov Evgeniy aka Agel Nash (agel-nash@xaker.ru) | |
* @date 18.12.2012 | |
* | |
* @category snippet | |
* @internal @modx_category System | |
* | |
* @cangelog | |
* version 0.2 [18.12.2012] | |
* - Получение значения параметра (subparam) из набора параметров имя которого указано в значении другого параметра (param) набора параметров (id) | |
* - Получение сразу нескольких значений параметров | |
* - Действия (сложение чисел и текстов) над значениями (запрещается использовать символ :) | |
* | |
* version 0.1 [10.10.2012] | |
* - Получение значения параметра (param) из набора параметров (id) | |
* | |
* | |
* @example | |
* [[HtmlFromNabor? &id=`aero` ¶m=`money`]] | |
* взять значение параметра money из набора aero | |
* | |
* [[HtmlFromNabor? &id=`aero,product` ¶m=`money`]] | |
* взять значение параметра money из наборов aero и product, а результат вывести слитным текстом (без разделителей и пробелов) | |
* | |
* [[HtmlFromNabor? &id=`aero,product` ¶m=`money` &sep=`, `]] | |
* взять значение параметра money из наборов aero и product, а результат вывести через разделитель ", " | |
* | |
* [[HtmlFromNabor? &id=`aero` ¶m=`money` &action=`math:2`]] | |
* взять значение параметра money из набора aero и сложить с числом 2 | |
* | |
* [[HtmlFromNabor? &id=`aero` ¶m=`money` &action=`math:-2`]] | |
* взять значение параметра money из набора aero и сложить с числом -2 | |
* | |
* [[HtmlFromNabor? &id=`aero` ¶m=`money` &action=`text:Стоимость - `]] | |
* взять значение параметра money из набора aero и добавить в начало текст "Стоимость - " | |
* | |
* [[HtmlFromNabor? &id=`aero` ¶m=`money` &action=`text:Стоимость|.. `]] | |
* взять значение параметра money из набора aero и добавить в начало текст "Стоимость: " | |
* | |
* [[HtmlFromNabor? &id=`aero` ¶m=`money` &action=`text:Стоимость - : рублей`]] | |
* взять значение параметра money из набора aero и добавить в начало текст "Стоимость - " , а в конец " рублей" | |
* | |
* [[HtmlFromNabor? &id=`aero` ¶m=`product` &subparam=`money` &action=`math:2`]] | |
* запустить сниппет [[HtmlFromNabor? &id=`взять значение из параметра product из набора aero` ¶m=`money` &action=`math`]] | |
* а результат сложить с числом 2. | |
* | |
*/ | |
/*************************************/ | |
$id = isset($id) ? $id : ''; | |
$param = isset($param) ? $param : ''; | |
$subparam = isset($subparam) ? $subparam : ''; | |
$action = isset($action) ? $action : ''; //Символ : используется только в служебных целях | |
$sep = isset($sep) ? $sep : ''; //разделитель для action='text' | |
$data=array(); | |
if($id!='' && $param!=''){ | |
$id=explode(",",$id); | |
foreach($id as $name){ | |
$propSet = $modx->getObject('modPropertySet',array('name'=>$name)); | |
if($propSet!==NULL){ | |
$value = $propSet->getProperties(); | |
$data[]=isset($value[$param])?$value[$param]:''; | |
} | |
} | |
} | |
if($action !=''){ | |
$action=explode(":",$action); | |
} | |
if($subparam!=''){ | |
$name=$data; | |
$data=array(); | |
foreach($name as $item){ | |
$data=$modx->runSnippet("HtmlFromNabor", array("id"=>$item,"param"=>$subparam,"sep"=>$sep,"action"=>$action[0])); | |
} | |
} | |
switch($action[0]){ | |
case 'math':{ | |
if(!is_array($data)) $data=array($data); | |
$out = isset($action[1]) ? $action[1] : 0; | |
foreach($data as $item){ | |
$out=eval('return (int)$item+(int)$out;'); | |
} | |
break; | |
} | |
case 'text': | |
default:{ | |
if($modx->resource->get('id')==267){ | |
print_r($out); | |
} | |
$out = isset($action[1]) ? $action[1] : ''; | |
$out .= implode($sep,$data); | |
$out .= isset($action[2]) ? $action[2] : ''; | |
$out=str_replace("|..",":",$out); | |
} | |
} | |
return $out; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment