3

我只是想听听你对我打算如何处理这种情况的意见。

情况:我正在开发一所学校的网站,严格的教育委员会政策不允许除我以外的任何人通过 FTP 访问该网站。但是,学校将在一个“网页”类中设置一组六名学生,以管理需要经常更新的 10-12 个页面。

这些页面看起来都非常相似:标题、导航、侧边导航(针对特定部分(体育、学术等))和主要内容

主要内容由 div“内容”提供,所以我想做的只是从用另一个文件编辑的 Mysql db 加载所有#content 的内容(我非常保证使用准备好的语句)。

您对此有什么意见,或者有更好的方法吗?谢谢!

4

2 回答 2

2

当您将标记保存在数据库中时,为了获得您需要的标记:

  1. 解析配置文件(如果有)并建立连接
  2. 查询并获取数据
  3. 附加结果

当您将标记保存在文件中时,您需要做的就是通过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();
于 2013-02-15T16:30:55.583 回答
1

是的,在数据​​库中存储任意 HTML 是维护和安全的噩梦。在设计新解决方案之前,我会更仔细地研究您要完成的工作。

我强烈推荐一个内容管理系统。他们有能力处理这种工作,从头开始重建没有任何意义。

如果选定的学生将经常更新网站,请考虑将网站的那部分分开。

例如,如果主网站是静态的,但经常更新的部分是博客,则设置一个静态网站以及一个包含 wordpress 博客的子域或子目录。

如果学生要编辑页面的实际内容,那么像 Drupal 这样的 CMS 更有效。

于 2013-02-15T17:19:43.053 回答