在我的管理部分,我有一个块制造商。 该块非常简单,block_title,block_content。
在admin部分显示/确定主题布局的最简单方法是什么,以便用户可以定位块?
一个想法是使用数字,1 =块区域1,2 =块区域2等
前端的功能可能如下所示:
function showBlocksForArea(1) {
// Return blocks Array where block_area=1
}
在主题/模板中呈现为:
echo'<div id="block_area_one">';
foreach($view->showBlocksForArea(1) as $row) {
echo '
<div class="block_wrap">
<div class="block_title">'.$row['block_title'].'</div>
<div class="block_body">'.$row['block_body'].'</div>
</div>
';
}
echo '</div>';
这很好,如果不查看这些区域所在的主题,则接受用户不知道。
管理部门
如果我只能抓住布局的HTML,那么这样的事情将是完美的:
有更简单的方法吗?
答案 0 :(得分:2)
以下是基于此处发生的聊天的答案:http://chat.stackexchange.com/rooms/18020/room-for-xdaevax-and-codex
以下是我对您的目标的理解:
鉴于此信息,我建议您做以下事情:
我会将数据库结构设置为类似于我所制作的模式的内容:
这里的想法是Template
记录可以有任意数量的“插槽”。数据库与页面上的插槽位置无关(这是主题的责任),但TemplateSlots
用于为内容(Blocks
)提供“占位符”放置。
每次用户创建新的Page
时,都会添加一个Page记录,并且该页面与Template
相关联,并且该页面还包含有关插槽的信息。 Template
还定义了一个文件(最有可能是PHP文件),它指定了放置插槽的占位符。页面从与其关联的Theme
获取Site
信息。每个Theme
都可以有一组ThemeContents
(多个CSS文件,js文件,图像等等)。
Blocks
,可以为其分配内容。这些块最初独立于Template
,并且DB可以预先填充公共建筑“块”。通过创建Template
记录,一旦将块分配给TemplateSlot
,这些块就可以与Page
相关联并分配PageBlock
。
此结构允许极大的灵活性,并允许数据库处理许多可能复杂的用户场景。通过将模板和插槽分割为单独的表,您可以动态创建所有形状和大小的模板,而无需进行任何代码更改。
对于您的管理员,您可以使用您喜欢的任何机制将数据从数据库中提取出来。但是用户工作流程看起来像这样: