2011-10-12 69 views
0

Hokay,所以。這裏是我的嵌入式模板,讓人不寒而慄:如何在我的ExpressionEngine模板中使用PHP變量進行計數?

<? $i=0; ?> 

{exp:channel:entries 
    channel="products" 
    dynamic="no" 
    entry_id="{embed:ids}" 
} 

    <? $i++; ?> 

    {exp:playa:parents 
     field_id="25" 
     limit="1" 
    } 

     <!-- product --> 

     {if no_parents} 
      <? $i--; ?> 
     {/if} 

    {/exp:playa:parents} 

    {if no_results} 
     No results! 
    {/if} 

{/exp:channel:entries} 

<? if ($i === 0) { echo 'No products found!'; } ?> 

我對這個$i變量的邏輯是得到的任何結果是否已經輸出精確的讀數。這個意義上的「結果」指的是普拉亞輸出的結果。

exp_channel_entriesno_results只有在{embed:ids}爲空或者嵌入的ID不對應於通道中的條目時纔會觸發測試。如果entries方法返回條目但沒有結果具有父條目,則沒有結果輸出 - 我需要一種方法來確定這一點,並且我認爲「嗯,PHP應該能夠做到這一點,對不對?」

期望得到的結果是,'No products found!'獲取輸出時$i = 0但由於某些原因,$i總是0不管得到什麼吐了條目。

哦,而且在你問:是的,PHP確實啓用。例如:{embed:ids} = 41|78|79|80|81|87|106。當設置爲輸出時,PHP代碼一下就印在了源:

<? $i=0; ?> 
<? $i++; ?> 
<!-- product --> 
<? $i++; ?> 
<!-- product --> 
<? $i++; ?> 
<!-- product --> 
<? $i++; ?> 
<!-- product --> 
<? $i++; ?> 
<? $i--; ?> 
<? $i++; ?> 
<!-- product --> 
<? if ($i === 0) { echo 'No products found!'; } ?> 

如果我切換PHP解析輸入標籤得到處理,但每次$i = 0

我在$i=0,$i++$i--之後加了一個echo $i;。如前所述,PHP將設置爲OUTPUT,這些語句只是在頁面源中獲得輸出。隨着PHP設置爲輸入,我得到這個字符串值:0 1 1 1 1 1 01

所以我的問題給你,StackOverflow的社會,是:
1)爲什麼PHP輸出模式只輸出PHP代碼,而無需處理它們?
2)我怎樣才能保持輸出產品父母的數量?

回答

0

當切換到輸出我不能告訴你爲什麼你的PHP沒有被解析(從來沒有看到過),但我認爲有一個簡單的方法來做到這一點:

{exp:query sql="SELECT child_entry_id FROM exp_playa_relationships WHERE parent_field_id = 25 AND child_entry_id IN({embed:ids})"} 
    {exp:playa:parents field_id="25" entry_id="{child_entry_id}" limit="1"} 
    <!-- product --> 
    {/exp:playa:parents} 
    {if no_results}<p>No products found!</p>{/if} 
{/exp:query} 

這個查詢只會返回確實有父母的條目的ID。你必須做的唯一的事情就是將通過嵌入的ids從使用管道改爲逗號。

你也可以試試這個:

{exp:channel:entries channel="products" entry_id="0{exp:query sql="SELECT parent_entry_id FROM exp_playa_relationships WHERE parent_field_id = 25 AND child_entry_id IN({embed:ids})"}|{parent_entry_id}{/exp:query}" dynamic="no"} 
    <!-- product --> 
    {if no_results}<p>No products found!</p>{/if} 
{/exp:channel:entries} 
0

我知道這線程是舊的,但我張貼以防萬一別人有類似的問題,不能按照德里克的真棒解決由於結構性問題。

  1. 添加完整的PHP開始標記(用PHP)
  2. 刪除所有括號,並與替代語法

    foreach(items as item): 
    
        ... 
    
    endforeach; 
    
  3. 更改的權限去 -

    我的問題,用解決文件爲755.

  4. 更改文件的組所有者默認的Web用戶

  5. 刪除所有模板管理條目(如果不工作,只需編輯模板管理器本身的文件)

希望這有助於。

相關問題