2011-04-08 56 views
1

如何使用某個術語來標記某個節點,如何編寫一些條件PHP來執行某些操作?Drupal - 有條件的PHP如果節點被標記了某個分類術語

我想改變我的node-type.tpl.php文件,這段代碼是針對節點頁面的,而不是分類列表頁面。

理想情況下,id喜歡使用術語的文本名稱,而不是其數字名稱。當我稍後查看代碼時,這會讓我更容易。

具體而言,我真的想打印一些東西,除非節點有一個特定的標籤。

感謝

UPDATE

我得到了他從內容模板模塊代碼:

<?php print $node->taxonomy[2]->name ?> 

它打印術語名稱,如果術語ID爲2。所以可以將它進行修改,以打印如果術語ID是2,還有其他的東西嗎?

回答

1

得到它的工作:

<?php if ($node->taxonomy[5]): ?> 
    print stuff here 
<?php endif; ?> 

謝謝您的回答傢伙。他們可能是更強大的解決方案,或者以其他方式更好,但是他們超出我的知識範圍來實施。

0
function phptemplate_preprocess_node(&$variables){ 
    /* 
    * You can change $variables items 
    * or add own 
    * Then use defined variables in node-type.tpl.php 
    */ 
} 

我自己的預處理

/** 
* Override or insert PHPTemplate variables into the templates. 
*/ 
function phptemplate_preprocess_node(&$vars) { 
    $node = $vars['node']; 

    if ($node->build_mode === NODE_BUILD_NORMAL || $node->build_mode === NODE_BUILD_PREVIEW) { 
    $build_mode = $vars['teaser'] ? 'teaser' : 'full'; 
    } 
    elseif ($node->build_mode === NODE_BUILD_RSS) { 
    $build_mode = 'rss'; 
    } 
    else { 
    $build_mode = $node->build_mode; 
    } 
    $vars['template_files'][] = 'node--' . $build_mode; 
    $vars['template_files'][] = 'node-' . $node->type . '-' . $build_mode; 
    $vars['template_files'][] = 'node-' . $node->type . '-' . $build_mode . '-' . $node->nid; 

    $preprocess = array(
     'report_preprocess_node_' . $node->type, 
     'report_preprocess_node__' . $build_mode, 
     'report_preprocess_node_' . $node->type . '_' . $build_mode, 
     'report_preprocess_node_' . $node->type . '_' . $build_mode . '_' . $node->nid 
); 
    foreach (array_reverse($preprocess) as $function) { 
    if (function_exists($function)) { 
     $function($vars); 
     break; 
    } 
    } 
} 
+0

林假設第二代碼放在我的template.php,哪裏的第一個代碼去?那我怎麼才能在我的節點頁面上寫條件的php?謝謝 – Evans 2011-04-08 10:40:52

+0

這個代碼爲template.php 例如:$ variables ['my_var'] ='foo'; 在node- [type] .tpl.php中<?php print $ my_var; ?> – dobeerman 2011-04-08 11:06:01

+0

對不起,我還是不明白,我從來沒有做過這樣的主題之前。所以我將這兩個代碼添加到我的template.php,或只是第二?那麼如何將分類術語定義爲一個變量,以便我可以在我的頁面上調用它? – Evans 2011-04-08 11:24:10

0

這是很容易通過創建一個節點 - 【類型】要做到這一點.tpl.php文件在你的主題。使用純PHP,只需檢查節點是否具有特定的分類術語,並根據需要打印出某些內容或不打印內容。

您可以在主題中自定義/modules/node/node.tpl.php或node.tpl.php。

您可能會發現taxonomy_node_get_termstaxonomy_node_get_terms_by_vocabulary會很有用。

+0

我已經在使用節點 - [類型] .tpl.php,但我如何檢查分類術語與PHP?如果節點位於術語頁面上,我發現了很多關於如何識別分類術語的文章或文章,但我不知道如何從節點的頁面獲取標記術語。謝謝 – Evans 2011-04-08 10:43:07

+0

我用一些drupal API函數更新了我的答案,您可以使用它來獲取節點的分類術語。 – Finbarr 2011-04-08 10:50:30

+0

第二個鏈接聽起來很有前途,因爲描述是「在一個詞彙表中查找與給定節點相關的所有術語」,但是如何使用此代碼?第一篇文章'使用這個鉤子的例子'打印取決於使用什麼詞彙表的文本,但是如果使用了一個詞語,我需要打印一些東西。謝謝 – Evans 2011-04-08 11:05:37

0

在template.php文件

function phptemplate_preprocess_node(&$variables){ 
    $node = $variables['node']; 
    $taxonomy = $node->taxonomy; 

    $items = array(); 
    foreach($taxonomy AS $term){ 
    $items[] = l($term->name, taxonomy_term_path($term)); 
    } 
    $variables['my_term_links'] = theme_item_list($items); 
} 

在節點 - 【類型】.tpl.php

print $my_term_links; 
相關問題