使用管理部分阻止定位

时间:2014-10-20 14:35:45

标签: php

在我的管理部分,我有一个块制造商。 该块非常简单,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,那么这样的事情将是完美的:

enter image description here

有更简单的方法吗?

1 个答案:

答案 0 :(得分:2)

以下是基于此处发生的聊天的答案:http://chat.stackexchange.com/rooms/18020/room-for-xdaevax-and-codex

以下是我对您的目标的理解:

  • 您正在创建一种用于创建网站的CMS应用程序
  • 这些网站是模块化的,可让管理员轻松自定义网站的内容和内容,而无需具备丰富的代码知识。
  • 为了实现这一点,您已经创建了一个模板系统和内容,可以通过各种方式组合以创建这些主题页面。这主要是由一组PHP函数驱动的,这些函数从数据库中提取模板和块数据。
  • 随着新主题的创建,管理员可以“正常工作”而无需任何修改,因为这些功能可以引入任何主题,并且可以与任何模板结合使用。
  • 模板必须具有通用的命名结构,以便可以轻松地换出CSS。

鉴于此信息,我建议您做以下事情:

数据库架构

我会将数据库结构设置为类似于我所制作的模式的内容:

enter image description here

这里的想法是Template记录可以有任意数量的“插槽”。数据库与页面上的插槽位置无关(这是主题的责任),但TemplateSlots用于为内容(Blocks)提供“占位符”放置。

每次用户创建新的Page时,都会添加一个Page记录,并且该页面与Template相关联,并且该页面还包含有关插槽的信息。 Template还定义了一个文件(最有可能是PHP文件),它指定了放置插槽的占位符。页面从与其关联的Theme获取Site信息。每个Theme都可以有一组ThemeContents(多个CSS文件,js文件,图像等等)。

可以创建

Blocks,可以为其分配内容。这些块最初独立于Template,并且DB可以预先填充公共建筑“块”。通过创建Template记录,一旦将块分配给TemplateSlot,这些块就可以与Page相关联并分配PageBlock

数据库结论

此结构允许极大的灵活性,并允许数据库处理许多可能复杂的用户场景。通过将模板和插槽分割为单独的表,您可以动态创建所有形状和大小的模板,而无需进行任何代码更改。

PHP管理员

对于您的管理员,您可以使用您喜欢的任何机制将数据从数据库中提取出来。但是用户工作流程看起来像这样:

  1. 登录管理员
  2. 选择操作(a->创建新的,b-&gt;更新现有的)
  3. 选择页面模板
  4. 将内容块分配给模板插槽
  5. 预览
  6. 编译更改(a - &gt;保存新页面,b-&gt;更新现有文件)