在CMS中选择页面视图/布局


Selecting page views / layouts in CMS

我正在构建一个CMS,我的目标是允许管理员选择页面视图/布局(全宽、边栏等)

所以我的问题是,做这件事的最佳做法是什么。。。

我想用ID和layout_name在数据库中创建Layouts,然后在控制器return View::make('$layout_name');

中创建

实现这一点可能有不同的方法。在我看来,最好保持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

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

可能最简单的方法是根据用户类型/角色加载不同的/自适应的样式表。例如,您可以通过这种方式轻松地将边栏添加到页面中,只需将边栏div(默认情况下隐藏)设置为再次显示为块即可。这使得它只在加载专用/自适应样式表时显示。

备注:我没有说这是"最佳实践"!但这个解决方案很容易理解,服务器端的开销很低/几乎没有,可以简单地进行审查和修改。此外,更多的CSS使你能够重载样式,这样你就可以保持专用样式(例如管理员)小而简单的

根据用户角色(或其他任何角色)以某种方式将数据库设置链接到修改视图的专用样式表也应该不是问题。

附加说明:始终记得在页面后端保护页面功能。因为页面中没有显示页面/管理功能,这并不意味着聪明的用户无论如何都找不到它。

尽管如此,只使用不同的CSS表可以省去模板的麻烦,并使事情变得更容易。