ExpressionEngine:将参数传递给变量标记对并在函数中获取
ExpressionEngine: Pass parameter into variable tag pair and fetch in the function
我需要将参数传递给内部标签,例如。
{exp:myplugin:func}
{last_year subject="xxx"}
{/last_year}
{/exp:myplugin:func}
如何在函数中获取该参数?
这是我为 return 模板标记对内变量对的参数编写的函数:
private function get_variable_parameters($tagData, $varName) {
$parameters = array();
if (strpos($tagData, LD."/".$varName.RD) !== FALSE) {
//### Closing variable tag exists ###
if (preg_match_all("/".LD.$varName."(.*?)".RD."(.*?)".LD."\/".$varName.RD."/s", $tagData, $matches)) {
for ($num = 0; $num < count($matches[0]); $num++){
$allParams = explode(" ", trim($matches[1][$num]));
foreach($allParams as $value) {
$value = str_replace(array('"', "'"), '', $value);
$param = explode("=", $value);
if (!empty($param[1]))
$parameters[$param[0]] = $param[1];
}
}
}
}
return $parameters;
}//### End of get_variable_parameters function ###
因此,根据您的 func 方法中的示例代码:
$tagData = ee()->TMPL->tagdata;
$varParameters = $this->get_variable_parameters($tagData, "last_year");
echo $varParameters["subject"];
虽然回顾我的代码,但我认为它不能处理在同一循环内多次使用同一变量对,因此如果需要,可能需要更改此行:
$parameters[$param[0]] = $param[1];
至:
$parameters[$num][$param[0]] = $param[1];
然后计算出同一循环中变量对的实例。虽然未经测试,可能需要更多工作!
我需要将参数传递给内部标签,例如。
{exp:myplugin:func}
{last_year subject="xxx"}
{/last_year}
{/exp:myplugin:func}
如何在函数中获取该参数?
这是我为 return 模板标记对内变量对的参数编写的函数:
private function get_variable_parameters($tagData, $varName) {
$parameters = array();
if (strpos($tagData, LD."/".$varName.RD) !== FALSE) {
//### Closing variable tag exists ###
if (preg_match_all("/".LD.$varName."(.*?)".RD."(.*?)".LD."\/".$varName.RD."/s", $tagData, $matches)) {
for ($num = 0; $num < count($matches[0]); $num++){
$allParams = explode(" ", trim($matches[1][$num]));
foreach($allParams as $value) {
$value = str_replace(array('"', "'"), '', $value);
$param = explode("=", $value);
if (!empty($param[1]))
$parameters[$param[0]] = $param[1];
}
}
}
}
return $parameters;
}//### End of get_variable_parameters function ###
因此,根据您的 func 方法中的示例代码:
$tagData = ee()->TMPL->tagdata;
$varParameters = $this->get_variable_parameters($tagData, "last_year");
echo $varParameters["subject"];
虽然回顾我的代码,但我认为它不能处理在同一循环内多次使用同一变量对,因此如果需要,可能需要更改此行:
$parameters[$param[0]] = $param[1];
至:
$parameters[$num][$param[0]] = $param[1];
然后计算出同一循环中变量对的实例。虽然未经测试,可能需要更多工作!