0

我编写了以下 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=”&lt;?php echo $categoriess; ?>” orderby=“entry_date” disable=“member_data|trackbacks” sort=“desc” limit=“5”}

一切对我来说看起来都是正确的,但它只是不起作用......我非常感谢你的帮助!

谢谢!

4

2 回答 2

1

检查您的解析顺序:在模板首选项中将“PHP Parsing Stage”设置为“Input”。

默认设置为“输出”,如果您想EE 短代码中获取值并将其作为变量可用于 PHP,则该设置非常有效。

但在这种情况下,您想在 PHP 中运行一个函数,然后将返回“馈送”EE。

因此,在这种情况下,EE 将从 PHP 获取“输入”,这意味着该特定模板(不是一般首选项或其他任何地方)的Preferences下的PHP Parsing Stage必须设置为Input

我现在看到这是一个老问题,但我希望无论如何有人会使用这个答案。如果我想先检查解析顺序,我只是浪费了一整天的时间来做一些不到 5 分钟的事情。

于 2014-09-04T15:02:35.330 回答
0
<?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);
?>
于 2013-02-20T11:56:09.647 回答