2010-04-06 68 views
0

你好,我是一個使用Drupal的新手,並且在我的進展中碰到過一個塊。我一直在使用CCK爲我的表單添加新的內容類型。我想知道是否有任何方法添加到生成的表單,以便我可能包含元素,並插入可視的html代碼,如頭等規則等。我已經涉足hook_form_alter(),它似乎並沒有幫助我在我的努力。我已經通過調整tpl.php文件等,並沒有取得任何進展。如果網絡中有任何人對這個問題有所瞭解,請不吝賜教。在Drupal中添加HTMl到CCK

這裏只是什麼,我會希望在表單中做一個例子: 1.含DIV的 2.添加HTML內容中的現場元素融入到形式

回答

0

如果您想自定義的標記因爲你可以爲它創建一個主題功能,並使表格與hook_form_alter一起使用它。這與用於定製內容類型的CCK無關,因此您可以將其他內容添加到內容類型。

+0

謝謝你的迴應,但問題? 主題功能在哪裏? – Romelus96 2010-04-06 04:14:27

0

hook_form_alter不能幫助您更改包含cck字段的編輯表單,因爲在調用hook_form_alter後會添加cck字段。

您需要的主題表單是這樣的:

創建一個模塊,並把這個掛鉤實現它:

 
function mymodule_theme($existing, $type, $theme, $path) { 
    'your_form_id' => array(
     'arguments' => array('form' => NULL), 
     'template' => 'my_template', 
    ) 
} 

然後創建一個在你的模塊目錄下名爲my_template.tpl.php文件。
現在清空您的緩存。在開發過程中

 
<?php 
print drupal_render($form['a_form_element']); 
print '<h2>blah blah blah...</h2>'; 
print drupal_render($form['another_form_element']); 
// this one is for rendering all the remaining items, like hiddens: 
print drupal_render($form); 

使用devel的模塊:

在該文件中,可以分別渲染表單元素,像這樣。它包含許多有用的工具,使開發更容易。

+0

謝謝你的回覆。我仍然有問題,使元素顯示在頁面上。我在表單頁面上收到以下錯誤消息: 解析錯誤:語法錯誤,意外的T_DOUBLE_ARROW在第3行的.../sites/all/modules/test/test.module上 概念上不確定該片段的工作方式對於某些形式而不是網站的每一頁。 <?PHP的 功能test_theme($現有,$型,$主題,$路徑){ 'job_submit_node_form'=>數組( '參數'=>陣列( '形式'=> NULL), '模板' =>'my_template', ) } 有什麼我做錯了嗎? – Romelus96 2010-04-06 16:36:46

+0

請將整個代碼粘貼到http://drupalbin.com/併發回鏈接。我會看看它。 – farzan 2010-04-06 18:35:59

0

原始HTML CCK字段(Drupal的6) - 沒有過濾器,格式或編輯

簡單的解決!只需使用純文本格式處理未過濾的HTML。然後在構建節點時將其轉換回字段.tpl中的html。

CCK字段上的純文本格式會將HTML標記轉換爲實體特殊字符(這會使它看起來像頁面上的代碼而不是實際的html標記)。它將使用php的htmlspecialchars($ text,ENT_QUOTES,'UTF-8')編碼的字符串存儲在drupal的check_plain()函數中。

解碼它的最簡單的方法是在字段tpl文件。這避免了鉤子,鉤子順序問題,循環錯誤和性能問題。這是通過將tpl文件添加到基本主題完成的:hq_base,odyssey_base和odyssey_admin。下面是drupal如何在cck節點編輯表單上解碼純文本:print html_entity_decode(strip_tags($ text),ENT_QUOTES);注 - html_entity_decode在解碼回html時將php標籤轉換爲html註釋。以下是帶有正確命名約定的示例文件,用於對字段進行php控制:

content-field.tpl。PHP

內容的現場[your_field_name] .tpl.php

內容field.tpl.php從CCK的contrib進入主題文件夾的副本,這是一個的contrib覆蓋使其在主題中可用,並且不應該修改(除非您想更改主題中的所有字段)。字段特定文件也是tpl的副本,一旦覆蓋文件存在,它就會工作。然後在字段tpl文件中解碼爲html

•// print $ item ['view'];

print html_entity_decode(strip_tags($ item ['view']),ENT_QUOTES);

Drupal的版本注: 第三方物流文件是在Drupal 7和Drupal 8.但html_entity_decode(略有不同)是一個PHP函數,將不是每個Drupal的版本改變。

安全說明: 這種獲取原始HTML的解碼技巧與Drupal構建文本格式安全性的方式背道而馳。這意味着任何具有編輯頁面權限的人都有權編輯html結構,並在頁面上添加腳本標記。這可能會破壞佈局,並可能是危險的。您在這裏依靠編輯安全權限,而不是Drupal的常規每個角色格式安全性。