notaBlueScreen - DRUPAL 教學 / UI
增減 Drupal HTML HEAD 的資訊 (Meta Tags & LINKs)
Drupal 頁面的 HTML <head> 有一堆 META TAGs 及 LINKs。這都是經 html.tpl.php 的 $head 輸出 ( $head = drupal_get_html_head() )。您可經由 hook_html_head_alter 修改其內容,比如要刪除 Drupal 的版權及版本宣告:
{ 閱讀更多 }Drupal 8 會有什麼改變?
Drupal 7 差不多一周歲了,使用率也很高,根據 Drupal.org 的資料,D6 & D7 的數據差不多。模組的成熟度也不差,我這邊有相關數據,大家可以分析分析。
即使如此,還有不少個人開發者留戀 Drupal 6,甚至企業也有那方向傾向。或許,對於一些管理公司內部系統的開發者,並沒有必要升級或使用 Drupal 7,他們也許跳過此步,邁向 Drupal 8。在繁體中文世界而言,這也可能反映了相關翻譯處於緩慢或停滯狀態的原因 ?
Drupal 8 開發也近一年,有不少改變,做一個小總結,大家可以參考參考:
Backend:
{ 閱讀更多 } { 4 個回應 }Drupal: 殺掉討厭的權重下拉表單
如果你像我一樣很討厭這種長長的權重下拉表單 (Weight Options),Drupal 7.11 及以後的版本能很簡單殺死它。

只要將 Drupal 中的 Variable: drupal_weight_select_max 改變就可以。(@see form_process_weight)
比如在 settings.php 中加入:$conf['drupal_weight_select_max'] = 0
{ 閱讀更多 }Drupal Devel 模組: 你可能不知的事...
大家經常使用 dpm() 嗎?
你知不知雙擊相關的列會顯示出 PHP Array / Object ..

dd() 你用過嗎 ?
dd($node) 可以將 $node Object 寫到系統暫存資料夾 (admin/config/media/file-system) 的 drupal_debug.txt 檔案中。不要再那麼傻,自己寫 file_put_contents... 哦...
相信 Linux 下的 tail -f /tmp/drupal_debug.txt 你也會用了 :)
ddebug_backtrace() 又如何 ?
PHP 中的 debug_backtrace 用慣了,不如試試 Drupal 下的 ddebug_backtrace(),如:
{ 閱讀更多 }Drupal Fields: field_attach_update() 更新欄位資料
之前透過 node_save() 的方式來儲存新的 NODE 內容,在 Drupal 7 中同樣可以使用,不過如果要更新,方法稍有不同:
$node2 = node_load($nid); // 如果更新 TITLE,需要提供 Node 的 vid $node2->title = 'new title'; $node2= node_submit($node2); node_save($node2);
如果不是更新標題,可以用以下方法,但會有很多 PHP NOTICE 錯誤:
{ 閱讀更多 }drupal_goto() 遇上失靈時...
drupal_goto() 是 Drupal 的重新導向 Function。有點頑皮,偶然不知何故,愛跟你鬧脾氣,你要它去東,它往西走。要收復這傢伙,可以試試:
// 進行 DEBUG,你會發覺 $_GET['destination'] 被設定了其他路徑,引致失常, // 所以,方便之一是在使用 drupal_goto() 前殺掉 $_GET['destination'] unset($_GET['destination']); drupal_goto($path);
另一方法直接得多,就是......PHP 原本的 HEADER Function:
header('Location: ' . $url, TRUE, $http_response_code);
drupal_exit($url); // 或 exit();
{ 閱讀更多 }
Drupal 管理利器: VBO Admin Views
有沒有覺得 Drupal 的管理後台很遜? 沒有搜尋、Taxonomy等等的過濾功能,對著一大堆內容時,不易於管理。今天介紹這模組可能幫到你:Admin Menu 中的 Admin View

這模組其實只是一個預設的 Views,並使用了 VBO 模組功能。你可通過 Views UI 進行更多設定,加一些你想要的 Exposed Filiter,是很彈性的。下載必需的模組及安裝後便可使用。不過你可能發現某些執行的指令好像沒效?這是因為在預設情況下,執行指令會存到佇列 (QUEUE) 中,在執行 CRON 時才真正觸發。要取消只要到 Views 設定便可:
{ 閱讀更多 } { 2 個回應 }案例分析:應付突而其來的高流量
每一個網站都應該預備有高流量的一天,突然其來的流量可致導巨大的頻寬費用。以下是一個客戶新網站的小案例。
網站:(要保密 ^_^)
網存空間:MediaTemple GS
程式:WordPress
網站新開啟之初平日穩定流量只有數百 IPs,由於網站開始運作、SEO等因素,一篇文章在 Social Network 熱起來,流量突飛上數萬獨立 IPs 一天,大家可以看看其變化:

突然其來的流量,考驗 (MT) 的負載能力,網站沒有減慢或死掉,(MT) 中的 GPU 用量也不高:
{ 閱讀更多 }