2015-02-11 22 views
0

我建立一個CMS佈局和我的目標是允許管理員選擇頁面視圖/佈局(全角,邊欄等)選擇頁面訪問量/ CMS中

所以我的問題是什麼是最好的做法做到這一點...

我想與ID和LAYOUT_NAME數據庫佈局創建,然後在控制器return View::make('$layout_name');

+0

看看https://octobercms.com/。它基於Laravel。 – 2015-02-11 10:59:30

+0

@MarkusMüller您可以直接從Web界面編輯/創建可執行PHP文件的事實讓我感到害怕;它可以將一個簡單的網站管理員憑據折衷轉化爲一個enitre服務器接管。 – 2015-02-11 11:17:16

+0

@AndréDaniel沒有注意到。我以爲你可以創建/編輯基於樹枝的模板文件。我們有我們自己的CMS,所以我從來沒有使用它。 – 2015-02-11 11:22:50

回答

0

有可能有不同的方式來實現這一點。 在我看來,最好保持make方法不動態,並通過View:share在所有視圖中共享佈局設置。 之後你可能需要做一個if語句來指定你的佈局必須如何使用。

$layout_name = 'full_width'; // should be the result of the db query 
View:share('layout', $layout_name); // use it in your controllers, wherever you want 

而在關注的觀點:

@if ($layout == 'full_width') 
    @extends('layout.fullwidth') 
@elseif ($layout == 'sidebar') 
    @extends('layout.sidebar') 
@endif 

此解決方案假定您瞭解不同類型的佈局可以使用。

0

也許最簡單的方法是根據用戶類型加載不同的/自適應樣式表/角色。例如,您可以通過將側邊欄div(默認隱藏)重新顯示爲塊,從而輕鬆地將邊欄添加到頁面。這使得它僅在加載專用/自適應樣式表時才顯示。

備註:我沒有說這是「最佳做法」! 但是這個解決方案很容易理解,在服務器端很少/幾乎沒有開銷,可以簡單地審查和修改。 進一步CSS使您能夠超載的款式,這樣可以保持專用樣式(管理員例如)體積小,易於

還應該不成問題根據用戶角色(或其他)以某種方式連接數據庫的設置到修改視圖的專用樣式表。

附加說明:請務必記住在頁面的後端保護頁面功能。由於只有頁面/管理功能/功能沒有顯示在頁面中,並不意味着聰明的用戶無法找到它。

絕對不要只使用不同的CSS表格,這樣可以避免與模板混雜在一起,使事情變得更容易。