在 CMS 中选择页面视图/布局
Selecting page views / layouts in CMS
我正在构建一个 CMS,我的目标是允许管理员选择页面视图/布局(全宽、边栏等)
所以我的问题是执行此操作的最佳做法是什么...
我正在考虑使用 ID 和 layout_name 在数据库布局中创建,然后在控制器中创建 return View::make('$layout_name');
可能最简单的方法是根据用户类型/角色加载不同/自适应样式表。例如,您可以通过这种方式轻松地将侧边栏添加到页面,只需将侧边栏 div(默认情况下隐藏)再次显示为块。这使得它仅在加载 dedicated/adaptive 样式表时显示。
备注:我没说这个是"best practice"!
但是这个方案很容易理解,low/nearly none服务器端的开销,可以简单的查看和修改。
此外 CSS 使您能够重载样式,这样您就可以保持专用样式(例如对于管理员)小而简单
根据用户角色(或其他)对修改视图的专用样式表以某种方式 link 数据库设置也应该不是问题。
附加说明:始终记住在页面后端保护页面功能。因为只有page/adminfeature/function没有显示在页面中,并不代表聪明的用户无论如何都找不到。
尽管如此,仅使用不同的 CSS 工作表可以使您免于使用模板,并使事情变得更容易。
可能有不同的方法可以实现这一点。
在我看来,最好让 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
此解决方案假定您知道可以使用的不同类型的布局。
我正在构建一个 CMS,我的目标是允许管理员选择页面视图/布局(全宽、边栏等)
所以我的问题是执行此操作的最佳做法是什么...
我正在考虑使用 ID 和 layout_name 在数据库布局中创建,然后在控制器中创建 return View::make('$layout_name');
可能最简单的方法是根据用户类型/角色加载不同/自适应样式表。例如,您可以通过这种方式轻松地将侧边栏添加到页面,只需将侧边栏 div(默认情况下隐藏)再次显示为块。这使得它仅在加载 dedicated/adaptive 样式表时显示。
备注:我没说这个是"best practice"! 但是这个方案很容易理解,low/nearly none服务器端的开销,可以简单的查看和修改。 此外 CSS 使您能够重载样式,这样您就可以保持专用样式(例如对于管理员)小而简单
根据用户角色(或其他)对修改视图的专用样式表以某种方式 link 数据库设置也应该不是问题。
附加说明:始终记住在页面后端保护页面功能。因为只有page/adminfeature/function没有显示在页面中,并不代表聪明的用户无论如何都找不到。
尽管如此,仅使用不同的 CSS 工作表可以使您免于使用模板,并使事情变得更容易。
可能有不同的方法可以实现这一点。
在我看来,最好让 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
此解决方案假定您知道可以使用的不同类型的布局。