2014-01-28 55 views
0

我有一個關於page.tpl.php鏈接的列表,我希望有一個鏈接顯示在使用一個分類術語id的節點上。分類術語id是9.打印鏈接基於分類術語或ID在Drupal 7

Ex。

<ul class="top-menu-new upper-menu-new"> 
<li> <a>NEWS</a>&nbsp;&nbsp;|&nbsp;&nbsp; </li> 
<li> <a href="">BLOG</a>&nbsp;&nbsp;|&nbsp;&nbsp; </li> 
<li> <a href="">FAQ</a>&nbsp;&nbsp; | &nbsp;&nbsp;</li> 

<?php if the node is using taxonomy term id 9 
<li><a href=">PRIVATE PAGE</a> </li> 
<?php else: ?> 
<li><a href="">PUBLIC PAGE</a> </li> 
<?php endif; ?> 

任何人都可以幫忙嗎?

謝謝!

+0

Drupal有多種方式來控制對特定頁面的訪問,我不確定使用分類是最好的方式去... – PatrickS

回答

0

在你的主題template.php;使用template_preprocess_page(),你的代碼應該看起來像

function [YOUR_THEME]_preprocess_page(&$vars) 
{ 
    if(isset($vars['node'])) 
    { 
     $node = $vars['node']; 
     $nodeLanguage = "und"; // or use any language 
     if(isset($node->field_YOUR_FIELD_REFERENCE[$nodeLanguage])) 
     { 
      foreach($node->field_YOUR_FIELD[$nodeLanguage] as $key => $val) 
      { 
       if($val['tid'] == "9") 
        $vars['found_my_term'] = true; 
      } 
     } 
    } 
} 

然後,在你的頁面模板page.tpl.php

<?php if($found_my_term) { ?> 
<li><a href=">PRIVATE PAGE</a> </li> 
<?php } else { ?> 
<li><a href="">PUBLIC PAGE</a> </li> 
<?php } ?> 

的代碼是有關檢查,如果當前頁面是node page,則檢查node has your taxonomy field reference(在此代碼示例中,我使用field_YOUR_FIELD_REFERENCE作爲字段名稱),最後檢查它是否具有值9

如果是這樣,您將結果存儲在一個變量(我稱爲found_my_term)中,以便您可以在您的頁面模板中使用。

+0

謝謝,穆罕默德雷達。你的理解是正確的。我試過你的代碼,但由於某種原因,它只顯示「公共頁面」。注意我糾正了缺失的「在鏈接PRIVATE PAGE。我不確定術語ID,但這是該術語的截圖 - http://screencast.com/t/1eZ3i0ew。我可能錯了嗎?基本上術語」私人合作伙伴「has/content/private/*在URL中,而」PUBLIC PAGE「沒有。再次感謝您! – liza

+1

@liza;上面的代碼只有在分類術語時纔會顯示」PRIVATE PAGE「的鏈接9頁'YOUR_SITE_URL/taxonomy/term/9' –

+0

對不起,我輸入了錯誤的指示,我想實際上在所有使用分類術語「Partner Private」的頁面上顯示「PRIVATE PAGE」鏈接並顯示「PUBLIC PAGE」如果不是這樣,你還能幫我嗎?我在PHP中沒有什麼好處,謝謝! – liza

相關問題