2010-06-24 21 views
1

我剛剛開始創建我自己的模塊,使我的自定義功能,如hook_form_alter()等等......Drupal的,關於定製模塊的問題

現在,我其實是想知道我怎麼可以使用自定義模塊對一些模塊做一些小改動。例如,考慮查看模塊,我想修改該文件:「意見-view.tpl.php」 ..讓我們說改變這個類的名稱div的

... 
<div class="view-filters"> 
     <?php print $exposed; ?> 
    </div> 

我怎樣才能使它不黑客的代碼?

感謝

回答

3

爲了改變的CSS類爲.views濾波器 DIV,需要提供備用views-view.tpl.php(或views-view--VIEWNAME.tpl.phpviews-view--VIEWNAME--DISPLAYID.tpl.php)。這通常和容易done in the theme。但是,如果需要的話,可以從一個模塊也做:

function YOURMODULE_registry_alter($theme_registry) { 
    $originalpath = array_shift($theme_registry['TEMPLATE']['theme paths']); 
    $modulepath = drupal_get_path('module', 'YOURMODULE') .'/themes'); 
    array_unshift($theme_registry['TEMPLATE']['theme paths'], $originalpath, $modulepath); 
} 

這讓你把一個壓倒一切的views-view.tpl.php模板文件在你的模塊的主題目錄。爲了達到這個目的,你的特徵的重量應該大於提供覆蓋模板的模塊的重量。因此,在您的模塊安裝文件(YOURMODULE.install)中,您將擁有類似於

function YOURMODULE_install() { 
    db_query("UPDATE {system} SET weight = 10 WHERE name = 'YOURMODULE'"); 
} 
+0

我同意。請記住,主題(theme_函數和tpl.php模板)與以PHP代碼編寫的模塊行爲之間存在差異。當您需要更改模塊生成的html輸出時,這就是所謂的主題,而最符合邏輯的位置就是您的主題。當您需要更改模塊的工作方式時,請嘗試通過實現掛鉤在自定義模塊中執行此操作(就像您使用hook_form_alter一樣)。 – marcvangend 2010-06-25 10:02:25

+0

好酷!解決方案只是將模板文件粘貼到主題文件夾中。 – aneuryzm 2010-06-25 12:43:48

1

改變正在使用的第三方物流的觀點最簡單的方法是提供一個TPL對使用的視圖。如果您單擊視圖中的主題:信息,它將列出您可以將整個視圖的輸出覆蓋到字段級別的各種方式。

1

很少有您需要編輯貢獻的模塊或核心(如果這就是您所說的黑客攻擊)。

答案是肯定的!

話雖如此,有些模塊寫得不好。如果您無法爲其編寫接口或分發它,則需要對其進行破解並向項目的問題隊列提交補丁。然後您的更改可能會包含在下一個版本中。