我只是想听听你对我计划如何处理这种情况的意见。
情况:我正在开发一个学校的网站,严格的教育委员会政策不允许任何人,除了我FTP访问该网站。然而,学校将在一个"网页"班上安排六名学生,管理10-12个需要频繁更新的页面。
页面看起来完全相同:标题、导航、侧面导航(针对特定部分(体育、学术等))和主要内容。
主要内容由div"content"提供,所以我想做的只是从用另一个文件编辑的Mysqldb中加载#content的所有内容(我非常保证使用准备好的语句)。
你对此有什么看法,或者有更好的方法吗?非常感谢。
当您在数据库中创建标记时,为了获得所需的标记:
- 分析配置文件(如果有)并建立连接
- 进行查询并获取数据
- 附加结果
当您将标记保存在文件中时,您所需要做的就是通过require()
语言构造包含该标记
编辑
非常具体地说-不。将动态HTML内容存储在表中不是一个坏主意。这是一种常见的做法。但是,如果您还将静态内容(如页眉、导航)存储在每个页面的表中,则只会导致数据重复。
我个人会把从未更改过的零件保存在一个文件中。倾向于"动态"的部分我会存储在一张表中。我会使用jquery ajax通过TinyMCE添加/编辑它们。
我如何做到这一点的一个例子:
文件:page_view.php
<?php
class Page_View // <- This isn't MVC
{
private $data = array();
public function render()
{
include('page_template.phtml');
exit();
}
private function getTitle()
{
return $this->data['title'];
}
private function getBody()
{
return $this->data['body'];
}
private function getStaticBlock($file)
{
include($file);
}
public function setBody($body)
{
$this->data['body'] = $body;
}
public function setTitle($title)
{
$this->data['title'] = $title;
}
}
文件:page_template.phtml?>
<!DOCTYPE html>
<html>
<head>
<title><?php echo $this->getTitle(); ?></title>
<?php $this->getStaticBlock('/templates/blocks/header.phtml'); ?>
<body>
<div id="navigation">
<?php $this->getStaticBlock('/templates/blocks/navigation.phtml'); ?>
</div>
<div id="content"><?php echo $this->getBody(); ?></div>
</body>
</head>
</html>
用法示例:
<?php
// $data is what you got from a table
$page = new Page_View();
$page->setTitle($data['title']);
$page->setBody($data['body']);
$page->render();
是的,在数据库中存储任意HTML是维护和安全的噩梦。在设计一个新的解决方案之前,我会更仔细地研究一下你试图实现的目标。
我强烈建议使用内容管理系统。他们有能力处理这类工作,从头开始重建是没有意义的。
如果被选中的学生要经常更新网站,可以考虑将网站的这一部分分离出来。
例如,如果主网站是静态的,但经常更新的部分是博客,则设置一个静态网站和一个子域或子目录,其中包含wordpress博客。
如果学生要编辑页面的实际内容,那么像Drupal这样的CMS对这项任务要有效得多。