2012-01-19 29 views
1

我想要的「ID =」背景」的屬性添加到實際的圖像標籤。如何HTML屬性添加到CCK像場

<?php print render($content['field_bg_image']); ?> 

我擡頭噸的文章和他們都關心hook_form_alter,這不是一個窗體,這只是一個圖像字段,我只需要一個ID屬性就可以使用背景值。我知道我可以使用JavaScript,但我想使用Drupal,而不是添加任何更多的javascript。

回答

5

圖像渲染運行通過theme_image_formatter(),它不讓你設置屬性。

您可以通過手動建立圖像起來解決這個問題:

$img = theme('image', array(
    'path' => $content['field_bg_image'][0]['#item']['uri'], 
    'alt' => $content['field_bg_image'][0]['#item']['alt'], 
    'attributes' => array('id' => 'background') 
)); 

$content['field_bg_image'][0] = array(
    '#markup' => $img 
); 

echo render($content['field_bg_image']); 

這是未經測試,所以讓我知道,如果你有任何問題

+0

這工作完美,謝謝! – josephleon

+0

如果確實如此,請給他投票並選擇他的答案作爲獲獎答案。 – pthurmond

0

你可以使用一個模板,你CCK場,你的情況此文件的名稱可能是field--field-bg-image.tpl.php,應該把你當前的主題文件夾中,那麼你可以添加你id屬性是這樣的:

// in field--field-bg-image.tpl.php 
<div id="your-id" class="<?php echo $classes; ?>"> 
    <?php print render($items); ?> 
</div>  

看一看field.tpl.php

如果您wan't設置實際img標籤,你可以做這些方針的東西在你的field--field-bg-image.tpl.php文件id

$object = $element['#object']; 
$data = $object->field_bg_image[$object->language][0]; 
$fid = $data['fid']; 
$width = $data['width']; 
$height = $data['height']; 
print '<img id="your-id" src="'.file_create_url(file_load($fid)->uri).'" width="'.$width.'" height="'.$height.'" />'; 

您也可以結帳theme_image()和這樣做:

print theme_image(
     array('path'=>file_load($fid)->uri, 
       'attributes'=> 
        array('alt'=>'','id'=>'your-id') 
     ) 
    ); 
+0

我只是建議使用模板作爲處理這個問題的首選方法。 – pthurmond

+0

@pthurmond:在這種情況下模板不起作用,OP想要爲圖像標籤本身添加一個ID而不是字段容器。你可以重寫主題註冊表,但我不確定這是值得的努力,它只是一個孤立的事件,如頁面背景 – Clive

+0

@Clive:我已經在類似的情況下做過這一點,你幾乎總是可以創建一個足夠低的模板覆蓋添加到單個標籤。這實際上取決於輸出的圖像標籤是存在於模板中還是構建在控制代碼中。我將不得不查看它,但我非常肯定CCK的模板足夠低以實現這一目標。 – pthurmond

相關問題