【问题标题】:Designing a content delivery system using PHP使用 PHP 设计内容交付系统
【发布时间】:2011-10-13 02:22:42
【问题描述】:

目前,我有一个系统使用 PHP 在我的网站上主动生成页面,或多或少是这样的:

index.php ------include(query.php);-----> query.php 从 index.php 对应的文件中抓取内容

Query.php 只是从提到的 index.php 文件以及页眉、页脚和导航文件中组装页面。

如果您愿意的话,index.php 文件可以充当一种代理或标签,这样当用户访问该站点时,而不是像“query.php?page=index”这样的 url,他们有真正的页面。

问题当然是这有点令人费解。对于站点的每个页面,我需要 2 个文件:“包装”文件(例如 index.php)和它对应的内容文件。我只想使用一个文件。问题是单个文件应该只包含页面的内容——而不是结构、页眉、页脚等。

所以,我想做的是能够让 index.php 只包含一个段落,例如。当它被访问时,PHP 会以某种方式启动并应用模板以及页眉和页脚。

PHP 是不是太高级了,无法做到这一点?我知道这通常使用 Tomcat 和 java servlet 完成,但我认为使用 PHP 会很酷。

编辑:重要的一点,我不想使用 GET 变量。

【问题讨论】:

    标签: php


    【解决方案1】:

    很难说出您要做什么,但是您是否考虑过使用 Kohana 或 Synfony 之类的框架?这几乎完全符合您的要求。

    如果您正在寻找一个好的模板系统,我建议使用 PHPTAL。

    如果做不到这一点,听起来你不需要做任何特别的事情。在index.php 页面上,为什么不只包括header.php、内容和footer.php?如果不使用auto_append_fileauto_prepend_file,则无法向页面中添加代码中未明确显示的内容。

    听起来您想要做的是通过一个点路由所有请求(就像框架一样)。我们就叫它main.php吧。

    main.php 上,您将拥有:

    include header.php
    include $_SERVER['PATH_INFO'] . ".php" //Requested file from URL.  TODO handle this better
    include footer.php
    

    然后您将所有请求(使用您的服务器配置)路由到“/main.php/pagename”。那么 pagename 将只需要其各自的内容。

    【讨论】:

    • 谢谢 - “听起来你想要做的是通过一个点路由所有请求”这是正确的。我想你给我的方向是正确的,让我看看这个。再次感谢。
    • 太棒了,效果很好。我唯一的疑虑是页面名称。我想这样做,以使该网站出现的所有意图和目的都使用“真实”页面名称。也就是说,如果我想要一个页面index.php,当它显示时,客户端不会看到url为“main.php”吗?我可以做一个标题来解决这个问题,还是什么?
    • NVM - apache 的 mod_rewite 处理得很好。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-06-26
    • 2020-04-01
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多