
相信很多大德都有在找如何變更 CCK 輸入表單版型的方法,這個是有點複雜的,所以就多給阿舍一點時間來準備,今天阿舍要介紹的這個 Content Templates 模組 ( 簡稱 Contemplate ) 做的事,是在各位大德輸入完 CCK 表單之後,用來設定這些表單的顯示範本,也就是說,可以用來製定所有內容類型的顯示方式,而且還不只是只有設定顯示整個節點時的範本,還包括有 Teaser 和 RSS 的顯示範本,用了這個模組之後,就可以很容易的來修改各種內容類型的顯示方式,還不錯用哩 !! ^^。
這個 Contemplate 模組在之前介紹 FlashVideo 模組時,已經有用到過了,不過那時沒有好好的說一下,只是帶過去而已,今天就來好好介紹一下囉 !! ^^。
在開始之前,阿舍先來講一下 Contemplate 模組的一些概念。 Contemplate 模組是以內容類型為對象,不論是 Drupal 出廠內建的內容類型或是各位大德自行建立的內容類型,都可以透過這個模組所提供的能來修改,而 Contemplate 模組所提供方式,就是將原本各位大德沒辦法看的到的程式碼顯示出來,不只是顯示而已,各位大德還可以修改它,這個做法和編修所有的 tpl.php 類似。
在版型在設計上,會利用大量的 div 標籤和 id 或 class 屬性的指定,經由 CSS 的運用,來達成排版的效果,因此,只要能知道 Drupal 產生的資料被放在那一個 id 或 class 的 div 標籤裡,就能運用 CSS 來控制與操作,但是,對於用 CCK 所建的表單來說,每一個新建的 CCK 欄位,其實都會有一個對應的 div 可供進行 CSS 的操作,只是,在沒有 Contemplage 模組的情況下,各位大德就和可能得和阿舍一樣,去看 Drupal 所產生的網頁原始碼才行。
Contemplage 模組不只是顯示出這些欄位的範本程式碼,同時,還讓各位大德可以去修改它,例如,把原來所使用的 HTML 標籤給改掉、變更原來排列的位置或是變更 class 的名稱等,都可以經由這個模組的功能來調整。
在介紹完 Contemplate 模組的使用方式之後,接下就要開始介紹設定的說明。
1.安裝和啟用
請到 http://drupal.org/project/contemplate 下載 Comtemplate 模組並安裝啟用。
2.建立範本
在啟用 Contemplate 模組之後,可以透過二種方式來建立內容類型的範本,第一種是直接到 「管理」 › 「內容管理」 › 「Content templates」去找到要建立範本的內容類型,在它的右邊點「Create template」,另一種則是透過內容類型來設定,到 「管理」 › 「內容管理」 › 「內容類型」裡,點要建立範本的內容類型,進入內容類型的編輯頁面,然後在上面的 Tab 那一排,會多出一個 tab 叫 「Template」,點那個進去就會看到和上一個方法相同的畫面。
3.設定範本
進入範本的設定畫面之後,會看到三個收合的欄位群組,分別是「Teaser」、「Body」和「RSS」,這三個項目就是在分別設定各位大德的自定欄位在這三種情形下的顯示範本,要注意的是,預設的 Title 和 Body 在範本裡是不會出現的。
點「Teaser」來展開這個欄位群組,第一個選項是「Affect teaser output」,如果沒有勾選這個項目的話,下面的「Teaser Template: 」欄位就不能修改,因為這個選項是用來控制是否要啟用範本的。
接下來的「Teaser Template: 」欄位就是預設的欄位顯示方式的範本程式碼,如果各位大德所選的內容類型沒有自定的欄位,那麼在這裡看到的就會是只有"<?php print $teaser ?>",但是,如果有自定欄位的話,那可就複雜多了,一般來說會是下列的格式:
<div class="field field-type-text field-field-欄位名稱">
<h3 class="field-label">欄位名稱</h3>
<div class="field-items">
<div class="field-item"><?php print $node->field_欄位名稱[0]['view'] ?></div>
</div>
</div>
註: 如果沒出現,表示大德有把自定的欄位設定成會顯示在 Teaser 裡,沒關係,那就看下一個 「Body」欄位群組裡的,也是一樣的。
各位大德仔細看可以發現,整個欄位、欄位標題和欄位的值都有一個 div 標籤給包圍起來,並且都設有一個 class 屬性,所以,各位大德就可以針對這 class 來設定 CSS 的內容。
當然囉 ! 不只是知道它的 class 名稱而已,還可以改標籤和位置,例如,原來的欄位標題是用 <h3> 標籤,各位大德可以直接把它改成 <h1> 或是 <span>,在各位大德歡喜的,另外,也可以直接把 class 屬性變成 id 屬性,但是記得給一個唯一的名稱,這種方式可以避免所設定 CSS 去影響到其它的欄位或版面。
在接下來的有一個收合的欄位叫做「Teaser Variables」,這裡列會列出所有在 Teaser 裡可以使用的 Drupal 變數,也就是所有可以顯示在 Teaser 的資料。
這個欄位是不能編輯的,它的功用是讓各位大德用來選擇用的,各位大德只要點任一個變數,這個變數就會出現在上面那個「Teaser Template: 」欄位裡,就不用手打了,不過,使用這些變數要小心一點,在欄位的下面有顯示一些說明,各位大德使用前要注意一下哩...。
下面的「Body」和「RSS」的欄位和設定都是一樣的,阿舍就略過了...呵...呵。
4.設定 CSS 格式
最後就是開始調整位的顯示方式了,這個就得要用 CSS 來達到,各位大德要先記下在前面步驟所查到或設定的 class 或 id,然後到目前所使用的版型的資料夾之下,打開 styles.css 檔,將剛剛記下的 class 或 id 給加上去並且加入 CSS 的屬性後存檔,再去開這個內容類型的文件時,就可以看到調整後的樣子了。
經由 Contemplate 模組的協助,要讓每個內容類型的顯示方式有所不同,就變的容易多了,至少可以不用去改到版型,不過 Comtemplate 也可以透過使用 tpl.php 檔的方式來製作範本,這個,就等下次再來說明囉 !! ^^=。
- 瀏覽次數: 6476
Hello,
如果是上傳檔案以後,看不到上傳檔案的連結,那麼就要到 「管理」» 「使用者管理」»「權限控制」( /admin/user/access ) 裡,找到 「upload 模組」模組,在要可以看到上傳檔案連結的那個角色,把「檢視上傳檔案」給勾起來按「儲存權限」就可以了,如果是要匿名 ( 未註冊 ) 的訪客也能看的到的話,就給 「anonymous user」這個角色個權限就行了....。
註 : Drupal 6 的路徑是 「管理」» 「使用者管理」»「權限」( /admin/user/permissions )
供參囉 !! ^^=。
阿舍...
阿舍的 Drupal 架站經驗談
http://drupal.soa.tw
我是用Contemplate的模組來改寫..node呈現的方式..但是我在編輯的時候,發現到我本來有用nodevote和上傳附檔的地方..也都不見了..是不是我哪裡沒有改寫好呢?
Hello,
阿舍查了一下,有可能是少了下面這個顯示附檔的變數,請大德試試看囉 !! 。
<?php print $node->content['files']['#value'] ?>
供參囉 !! ^^=。
阿舍...
阿舍的 Drupal 架站經驗談
http://drupal.soa.tw
哈囉妳好...非常謝謝你的回答...
除了附加檔案之外..我還有安裝nodevote的模組..
我應該要怎樣讓他顯示呢...
<?php
$node = node_load($nid);
if ($node->nodevote->vote_display) {
$data = _nodevote_get_vote_data($node->nid, $page);
print theme('nodevote_display_vote', $data['score'], $data['votes'], $data['vote_display']);
}
?>
我有試著用這段語法..但是投票的星星沒有出現...
這段語法是針對teaser...如果我是要用在body呢?
哈囉...阿舍大哥妳好..
這個問題..我已經找到解決的方法了...
<? print $node->content['fivestar_widget']['#value']; ?>
這個才是對的!可以讓圖案出現..
不過我有一個問題想要請教你..
如果我想要點選附加檔案的時候,是可以跳出視窗的話..我應該要怎樣修改比較好呢?
Hello,
多謝大德告知 !! 阿舍找二天沒有找到....呵呵 !!
另外,有附檔的部份,阿舍不太明白為需要用跳出的視窗來上傳檔案,Drupal 的 Node 只有啟用 Upload 模組,就會出現在 Node 的下面的「附加檔案」,所以,想請大德再說明一下....,阿舍有去 Drupal.org 的官查了一下,沒有找到有 "彈出式視窗" 的模組哩......。
供參囉 !! ^^=。
阿舍...
阿舍的 Drupal 架站經驗談
http://drupal.soa.tw
因為讓使用者在點選..附加檔案的時候可以直接線上瀏覽..(flash..)如果使用者..點選的時候要按上一頁 才會回到網站..所以希望是可以跳出視窗的方式!
Hello,
阿舍去查了一下,大概是沒有模組可以做到,阿舍有試了 Link 模組,但是,不 OK 的,後來阿舍有找到下面這篇文在討論,有程式可抄,大德可以考看考看哩 !!
Open file attachment in new window
http://drupal.org/node/120898
據說... Drupal 5. 和 Drupal 6.x 恉可服用...呵呵 !!
供參囉 !! ^^=。
阿舍...
阿舍的 Drupal 架站經驗談
http://drupal.soa.tw
阿舍您好~~
想請問一下~我勾選了Body Template~~但是頁面都只有出現下面的樣子。沒有顯示相對應的資料,請問有哪邊需要設定嗎?謝謝~~
發佈類別
<?php print $node->field_news_class[0]['view'] ?>
發佈日期
<?php print $node->field_post_date[0]['view'] ?>
有效日期
<?php print $node->field_live_date[0]['view'] ?>


哈囉...阿舍大哥..新年快樂!!
我想要請問你..要如何顯示..node的附加檔案..我應該在哪裡修改呢?