使用下面的兩個選項來輸出鏈接HTML有什麼區別?使用theme()和theme_links()輸出鏈接HTML之間有什麼不同?
theme('links', $primary_links, array('class' => 'links primary-links'))
theme_links($primary_links, $attributes = array('class' => 'links primary-links'))
非常感謝
使用下面的兩個選項來輸出鏈接HTML有什麼區別?使用theme()和theme_links()輸出鏈接HTML之間有什麼不同?
theme('links', $primary_links, array('class' => 'links primary-links'))
theme_links($primary_links, $attributes = array('class' => 'links primary-links'))
非常感謝
在默認Drupal安裝,而不他們將輸出同樣的事情,任何模板定製。
但是,theme()
函數本質上是Drupal中主題系統的一個包裝。通過傳遞'links'作爲第一個參數,你告訴Drupal尋找鏈接主題,無論這是一個函數還是一個模板。在這種情況下,主題是一個被調用的函數(theme_links()
)。
如果您想對主題進行更改,可以通過覆蓋它來完成。例如,您可以創建功能myTheme_links()
並使其覆蓋默認theme_links()
。如果您直接調用功能theme_links()
,則必須將此代碼更改爲相應的主題功能。但是,如果使用theme()
函數,則不會有任何其他更改,因爲此函數知道主題何時被覆蓋並採取適當的操作。簡而言之,使用theme()
函數是未來驗證代碼的更靈活的解決方案,可能被認爲是Drupal的做事方式。請參閱Drupal's theme documentation。
簡短的版本是:
如果使用theme_links()
可以使用my_theme_links
命名約定,因爲你直接調用它不能取代在你的主題,主題功能。
如果您改爲使用theme('links')
drupal將根據優先級找出可能使用哪些主題函數。這是Drupal和它的主題系統如此靈活的一部分。一切都可以被覆蓋。
不知道我會寫多少次這句話,但是,多虧了googletorp。我知道我自己的問題的答案,因爲在我發佈之前我沒有想過。 – screenm0nkey 2010-04-15 09:00:43
謝謝bkildow。好答案。我正在學習drupal主題的高級方面,只要我開始閱讀你的答案,我就知道我會問一個愚蠢的問題,因爲我知道主題重寫和主題函數過程。我只是沒有想到我發佈之前。謝謝你的幫助。 – screenm0nkey 2010-04-15 08:57:39