2010-07-25 171 views
0

我想通過檢查節點(或未來的分類術語)的'nid'將自定義圖像添加到Drupal的日曆視圖中。我正在編寫這個自定義代碼在views-view-field-calendar-nid.tpl中。將自定義圖像添加到日曆視圖

問題是,view-view-field-calendar-nid.tpl輸出的內容也被插入div標籤的'id'屬性中。請參閱第div標記。

254是輸出,它也被插入'id'屬性中。

<div class="view-item view-item-calendar"> 
    <div class="calendar monthview" id="calendar: 
254:changed:0:0"> 
       <div id="nid" class="view-field view-data-nid"> 


254  </div> 
     </div>  

所以,當觀點視場 - 日曆 - nid.tpl輸出IMG標籤,它也插入到了「id」屬性,它打破了第二DIV標籤。

請參閱下面的輸出

<div class="view-item view-item-calendar"> 
    <div class="calendar monthview" id="calendar: 
<img src="http://www.programmingnature.com/stackoverflow_32.png"> </img>255:changed:0:1"> 
       <div id="nid" class="view-field view-data-nid"> 


<img src="http://www.programmingnature.com/stackoverflow_32.png"> </img>255  </div> 
     </div>  
</div> 

截圖:

alt text http://img201.imageshack.us/img201/3140/calendarproblem.png

請注意,日曆視圖試圖插入 'id' 屬性裏面有IMG標籤輸出現在的一切都搞砸了......

如何防止Calender將輸出插入到'id'屬性中?或者有沒有其他的方式在Calender視圖中插入圖像?

以下是視圖,視圖場的代碼 - 日曆 - nid.tpl

<?php 

$results = $variables['view']->result; 
$nid=$output; 

$newOutput=""; 

foreach ($results as $key => $value) { 
//Find the matching nid 

if ($nid==255) { 

$newOutput.= '<img src="http://www.programmingnature.com/stackoverflow_32.png"> </img>'; 
} 

$newOutput.=$nid; 


    } 

print $newOutput; 

?> 

回答

1

日曆的非常愚蠢的。發生的事情是,日曆視圖根據視圖中的所有可用字段創建一個ID,並將它們串在一起以創建唯一的ID。理論上很好,但它假設很多(比如你沒有做你想做的事情)。

你可以在theme/theme.inc中看到它在template_preprocess_calendar_node()中試圖做什麼。解決方案是創建自己的預處理函數mytheme_preprocess_calendar_node(&$vars),並將$vars['fields']['id']設置爲更加理智的方式,例如可能是'calendar-' . $vars['node']->nid

+0

所建議的模塊還可以實現'hook_preprocess_calendar_node()'。使用實現這種功能的自定義模塊會更好,因爲您可以使用任何主題而無需爲每個主體添加'template_preprocess_calendar_node()'。 – kiamlaluno 2010-07-25 23:49:14

+0

我一定會嘗試編寫我自己的預處理函數。我可以在同一個模板文件中添加此功能嗎? @kiamlaluno,感謝提示,編寫自定義模塊看起來更好選項 – 2010-07-26 18:14:57

+0

@Ajinkya Kulkarni,您可以將它添加到您的主題template.php中。只要記住刷新你的主題緩存。 – 2010-07-26 18:59:27

0

暫時的,因爲我只是想顯示一個節點一個單一的形象,我改變

$newOutput.= '<img src="http://www.programmingnature.com/stackoverflow_32.png"> </img>'; 

$newOutput.= "<img src=http://www.programmingnature.com/stackoverflow_32.png> </img>"; 

注意,我只是刪除從字符串引號。

因此,由日曆產生下面的輸出,

<div class="calendar monthview" id="calendar:<img src=http://www.programmingnature.com/stackoverflow_32.png> </img>255:changed:0:1"> 

    <div id="nid" class="view-field view-data-nid"> 

    <img src=http://www.programmingnature.com/stackoverflow_32.png> </img>255 

    </div> 
</div> 

好,IMG標籤仍然插入ID屬性,但DIV標籤不破,我也得到了正確的輸出。

alt text http://img687.imageshack.us/img687/4607/calendarproblemsolved.png

更好永久解決方案是使用預處理功能由馬克kiamlaluno