一月 12, 2019 | 後端和Drupal

【Drupal 教學】用一行code決定任一路徑是否要使用管理介面版型

使用Drupal的時候,若後台使用管理介面版型,前台使用自行客製化的版型,大家都知道,基本上Drupal都已經預先幫你決定好,什麼路徑使用管理介面版型,什麼路徑是使用Theme,但是若你今天想要客製化特定路徑使用管理介面版型或特定路徑不想要使用管理介面版型,你該如何處理呢? 若你不喜歡Coding,Drupal 有一個很棒的模組Themekey給你參考,可以達成你的需求。但若你想要很簡單的一句話就達成,就看看這一篇文章啦。

前言

使用Drupal的時候,若後台使用管理介面版型,前台使用自行客製化的版型,大家都知道,基本上Drupal都已經預先幫你決定好,什麼路徑使用管理介面版型,什麼路徑是使用Theme,但是若你今天想要客製化特定路徑使用管理介面版型或特定路徑不想要使用管理介面版型,你該如何處理呢?

若你不喜歡Coding,Drupal 有一個很棒的模組Themekey給你參考,可以達成你的需求。但若你想要很簡單的一句話就達成,就看看這一篇文章啦。

建立客製化模組

首先想要一句話解決,當然要準備好一個乾淨的客製化模組。若你還不會建立客製化模組,可以參考Drupal的Example模組,很簡單就可以建立了。

有了自己的模組後,只要在你的模組檔案 mymodule.module裡面加入這個function


/**
*  Implements hook_admin_paths_alter(&$paths)
*  Hook的名稱換模組名稱即可
**/
function mymodule_admin_paths_alter(&$paths){
	
	//將所有的使用者編輯頁面都不要再使用管理者版型
	$paths['user/*/edit']=FALSE;
	
	//將特定路徑變成管理者版型
	$paths['node/1']=TRUE;

}

上述的Hook函數可以很方便的讓我們更改特定的路徑,並且支援Wildcard的時候。即可很方便的決定什麼頁面需要使用管理者版型,什麼頁面不需要吃管理者版型囉。

小結

對於有寫Code的Drupal工程師來說,這樣的寫法會比Themekey還要來的更輕巧,也有種殺雞焉用牛刀的感覺。給有在寫Code的工程師來參,當然若你還不是這麼熟悉,還是會建議說使用Themekey的模組,非常的完整而且支援Features Export,唯一美中不足的地方就是尚未有D8的版本,看起來是開發上面遇到了一些人手不足的問題,有興趣的大家,不妨也可以聯絡他們,一起參加好用模組的開發行列吧。