Drupal學習筆記

2021-04-22 21:26:52 字數 4081 閱讀 5010

drupal

協會今天宣布

,drupal

贏得了packt

出版社2008

開源cms

大獎中的兩項桂冠

-全球年度最佳開源

cms大獎和最佳

php開源

cms大獎

.這意味著

drupal

連續兩年贏得了

packt

出版社的全球開源

cms大獎.另外

,drupal

社群的貢獻者

earl miles,

在這周一獲得了開源

cms mvp

稱號.drupal

成為了08

年度開源

cms大獎的最大贏家

.drupal

框架由core, module, theme

三個部分組成。

theme

作為drupal

的表示層,通過函式和模板輸出使用者所能看到的頁面,

包括頁面的樣式。

theme

將程式的表示層完全分離了出來,更換乙個

theme

就能夠很輕易地將整個**「改頭換面」。

主題檔案包括

info

配置,,

css,模板檔案(

*.tpl.php

),引擎檔案

(template.php)

,設定檔案

(settings.php)

。模板檔案負責進行內容輸出,不進行複雜的邏輯處理,只需要包含

xhtml

標籤和php

變數,每個

.tpl.php

檔案負責特定一塊資料的輸出,它也可以處理多個

.tpl.php

檔案;引擎檔案(

template.php

)中主要進行資料處理,包括對

tpl.php

檔案中的

php變數進行預處理以及定製內容輸出函式(輸出樣式或內容)、覆寫主題函式或者其他任意函式。

info

檔案:定義區塊,樣式(區塊定義的內部名稱將自動轉化為

"page.tpl.php"

模板中的區域變數)

模板檔案的組織結構是怎麼?哪些模板是必須的?模板的命名有什麼約束?

模板中包括

xhtml

和php

變數以及函式呼叫。模板中預設可用的

php變數包括來自

info

檔案中的區塊變數,變數集中的變數(

$variables

的鍵),模板中可用的函式包括模板引擎中的函式,核心框架函式(如

theme.inc

、common.inc

中的函式)。

變數集中常用的變數:

$head_title, $base_path, $front_page, $search_box, $site_name, $site_slogan, $title

函式在模板引擎檔案中定義。可以通過

theme_get_setting()

,theme_get_settings()

獲取配置檔案中的變數,也可以使用全域性變數。

< includes/theme.inc>, < includes/common.inc>

有一些經常被用到的函式。例如:

t();

l();

———————————————————————————————————————

預處理函式僅適用於模板形式的主題鉤子

.它的主要作用是設定模板檔案

(tpl.php)

中所用到的變數。在預處理器

(preprocessor)

中,一般涉及不到普通的主題函式。預設的預處理器及其執行順序 1.

template_preprocess -

這個是由核心提供的,也是始終存在的。這裡聲稱的變數在所有的模板鉤子中都可以使用

. 2.

template_preprocess_hook -

實現了主題鉤子的核心或者模組提供該處理器。特定於某個鉤子的變數,通常首先在這裡生成。

3.modulename_preprocess -

不要將這個與前面的預處理器混淆了。對於那些最初沒有實現鉤子的模組,它允許影響變數集。它將在所有的鉤子中執行。

4.modulename_preprocess_hook -

和第3個一樣,但是特定於某個鉤子。

5.enginename_engine_preprocess -

主題引擎的預處理器。適用於所有的鉤子。

6.enginename_engine_preprocess_hook -

主題引擎的另乙個預處理器,特定於單個鉤子。

7.enginename_preprocess -

這是第乙個可以在主題內部使用的預處理器。命名方式為,主題所用引擎名稱

+預處理器名。適用於所有的鉤子。

8.enginename_preprocess_hook -

這個和第

7個一樣,但是特定於單個鉤子。

9.themename_preprocess -

命名方式為:主題名

+預處理器名。適用於所有的鉤子。

10.themename_preprocess_hook -

與前者一樣,但是特定於單個鉤子。

注意:l一般推薦在基主題的預處理器中使用引擎名稱

(7 & 8)

。這有利於**在主題之間的遷移,同時有利於在

drupal.org

上發布**片斷。 l

只有在子主題

(sub-themes)

中才使用主題名稱

(9 & 10)

。這將減少潛在的重名衝突,在

php中是不允許重名的。 l

為了識別你主題的預處理器,與鉤子相關聯的模板必須位於主題內部。如果存在預設的模板的話,將其拷貝到你的主題下面,並清空登錄檔。 l

函式中都沒有返回值,所有的變數都是通過引用傳遞的,前面都有符號「&」

,比如&$var。

這個例子,來自於實現了鉤子

"foo"

的模組:

<?php

function template_preprocess_foo(&$variables)

?>

在主題的預處理器中新增變數集:

<?php

function drop_preprocess_foo(&$variables)

?>

在模板檔案中使用的變數,就是

$variables

的鍵。所以,在上面的例子中,在模板檔案中可用的變數就是

$foo_list。

引用:http://zhupou.cn/theme-guide-drupal-6/preprocess-functions

使用drupal_set_content

可以將內容手工的新增到區域中.例如

, drupal_set_content('header', 'welcome!')

將文字'welcome!'

新增到頁首區域

.下面是乙個更有用的例子

,"right"區域.

<?php

function drop_preprocess_comment(&$variables)

?>

注意通過這個函式設定內容

,發生在區塊區域回顯以前

,它是這樣呼叫的

template_preprocess_page > theme_blocks > drupal_get_content

,將字首

"drop"

改為你主題的名字

.更多資訊參看預處理器

引用:http://zhupou.cn/theme-guide-drupal-6/manually-assigning-content-to-regions

drupal學習之 目錄結構

includes 包含了大量的inc檔案,這些inc檔案裡面存放了drupal常用的函式 misc 存放了drupal安裝中可用的js,imagemodules 存放drupal的核心模組 drupal真正的核心模組其實只有5個 profiles 站點的安裝大綱 sites 包含了你對drupal所...

drupal 流浪你的Drupal

drupal 在最近的一篇文章中 我描述了如何在部署更新到morevaadin.com之前,使用vmware建立可以使用的drupal。然後,在法國的devoxx,我參加了乙個會議,演講者詳細介紹了他如何與vagrant建立下班後的整個基礎設施。同時,命運的一點轉折讓我負責了一些drupal專案,我...

Drupal7 hook theme 使用筆記

閒話不說,直接上 先命名乙個模組名字,就叫mymodule 目錄結構為 mymodule tpl custom theme page.tpl php mymodule.info mymodule.module mymodule.inc那麼在mymodule.module檔案寫如下 function ...