在 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

此解决方案假定您知道可以使用的不同类型的布局。