我编写了下面的PHP函数,根据片段3的URL返回当前类别。
<?php
$this->EE =& get_instance();
$seg3 = $this->EE->uri->segment(3);
$categoriess = getCategory($seg3);
function getCategory($string)
{
switch ($string)
{
case "test1": return '16';
case "test2": return '52';
case "test3": return '18';
case "test4": return '29';
case "test5": return '37';
}
return '11';
}
?>
<?php echo $categoriess; ?>好吧,这个函数完成了这项工作,并返回正确的数字。然后,问题出在调用类别标记中返回的号码。
{exp:channel:entries channel=“news” dynamic=“no” category=”<?php echo $categoriess; ?>” orderby=“entry_date” disable=“member_data|trackbacks” sort=“desc” limit=“5”}在我看来一切都是正确的,但它就是不能工作…我真的很感谢你的帮助!
谢谢!
发布于 2014-09-04 23:02:35
检查您的解析顺序:在模板首选项中将"PHP parsing Stage“设置为"Input”。
默认设置是"Output",如果您想要从EE短码中获取一个值,并将其作为变量提供给PHP,那么这个设置非常有效。
但在本例中,您希望在PHP中运行一个函数,然后将返回的结果“提供”给EE。
因此,在这种情况下,EE将从PHP获取“输入”,这意味着 preferences 下的PHP解析阶段必须将特定的模板(不是一般首选项或其他任何地方)设置为Input。
我知道这是一个老问题了,但我希望有人能用上这个答案。我只是浪费了一整天的时间来做一些事情,如果我想先检查解析顺序,那么只需要不到5分钟的时间。
发布于 2013-02-20 19:56:10
<?php
function getCategory($string)
{
$data = array(
"test1" => 16,
"test2" => 52,
"test3" => 18,
"test4" => 29,
"test5" => 37
) ;
return (isset($data[$string])) ? $data[$string] : 11 ;
}
$this->EE =& get_instance();
$seg3 = $this->EE->uri->segment(3);
$categoriess = getCategory($seg3);
?>https://stackoverflow.com/questions/14979072
复制相似问题