2013-02-20 63 views
0

我寫了下面的PHP函數來根據段3 URL返回當前類別。Expressionengine PHP調用

<?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」} 

一切看起來正確的我,但它只是不工作... 我將非常感謝您的幫助!

謝謝!

+0

Wtf是那些引號? ''test5「',''37'?寫如:case「test5」:return 37;' – vikingmaster 2013-02-20 11:51:38

+0

語法錯誤,意外的T_LNUMBER如果我從返回中刪除引號 – user2090983 2013-02-20 11:55:48

+0

由於什麼時候返回通常的整數應該是錯誤? – vikingmaster 2013-02-20 11:57:58

回答

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); 
?> 
+0

同樣的問題。返回數字的空白頁。 – user2090983 2013-02-20 12:04:09

+0

你想顯示什麼? – vikingmaster 2013-02-20 12:06:20

+0

頁面的內容。整個事情是基於如果 category = test1,然後只顯示該類別的條目。 我有一個顯示主要類別的索引頁面,但如果URL類似於index/maincateogory/test1,則只顯示test1類別的條目 – user2090983 2013-02-20 12:08:44

1

檢查解析順序:集「PHP解析階段」模板中的首選項「輸入」。

默認設置爲「輸出」,如果您想從獲得一個值爲的EE短代碼並使其可用於PHP作爲變量,則該方法運行良好。

但是在這種情況下,您希望在PHP中運行一個函數,然後將「回饋」返回到 EE。

因此,在這種情況下,EE將採取從PHP「輸入」,這意味着該PHP解析階段特定模板(不是一般的喜好或其他地方)必須設置爲輸入

我現在看到這是一個老問題,但我希望有人會使用這個答案。如果我想先檢查解析順序,我只是浪費了一整天的時間試圖做一些不到5分鐘的事情。