【问题标题】:Including dynamic content on a static HTML page在静态 HTML 页面上包含动态内容
【发布时间】:2011-03-26 20:02:47
【问题描述】:

我在 IGN 和 Gamespot 等网站上注意到,他们的专题文章和评论页面是 HTML (.html),页面中包含动态内容,例如用户 cmets。

它们如何在静态 HTML 页面中包含这种类型的动态内容?

如果我关闭 Javascript 并查看其中一个页面,它们的动态内容就会消失,所以我认为它是使用 Javascript 完成的。

我有兴趣提供类似的内容,并希望通过 HTML 而不是动态 PHP 页面来提供,所有内容都存储在数据库中(cmets 等内容除外)。

希望这是有道理的。

【问题讨论】:

  • 请注意,URL 以 .html 结尾并不意味着页面是静态的。将 Web 服务器配置为将 *.html 与 PHP、Java Servlet 或任何其他动态页面生成技术相关联非常容易。

标签: javascript html content-management


【解决方案1】:

它是用 Javascript 完成的。最常见的方法是在页面上使用 Javascript 来访问某种 API,以检索适当的 cmets(也称为 AJAX)。除非您使用某种 API(可能是 HTTP)公开该数据库,否则您将无法以这种方式访问​​数据库。

如果您想在自己的网站上使用类似的内容,请查看 Disqus 之类的服务,这些服务将 cmets 存储在其服务器上并使用 Javascript 检索它们。

【讨论】:

    【解决方案2】:

    当您有客户端-服务器关系时,通常会有很多事情在后台发生。

    例如,Apache 可以配置为将文件以.xxx 结尾的任何“文件扩展名”解析为 PHP。因此,您可以将 Apache 实例配置为在 .html 文件中解析 PHP,就像在 .php 文件中一样:

    http://www.electrictoolbox.com/apache-parse-html-as-php/

    此外,您还可以为浏览器提供不同的“内容类型”,以便 PHP 解析的页面可以将例如 PDF 内容发送到浏览器:

    http://php.net/manual/en/function.header.php

    现在,一种可能更简单的方法是使用Apache's rewrite 获取 URL 请求并将其重写到 PHP 页面,并将 URL 请求的其余部分添加为请求属性,例如在模型-视图-控制器模式中:

    http://expressionengine.com/wiki/Remove_index.php_From_URLs/

    http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

    这样,http://www.example.com/article/feature/my_story.html 这样的 URL 实际上会被服务器的 PHP 解析器视为http://www.example.com/index.php?class=article&method=feature&id=my_story.html

    然后您可以使用 AJAX 方法专门更新页面的一部分,正如其他答案中提到的那样。

    【讨论】:

    • 似乎让 Apache 在 .html 页面中解析 PHP 是我的最佳选择。它有什么缺点吗?我可以将此行为限制在某些目录吗?我认为使用这种方法,编辑可以发布底部有 PHP 评论系统的 HTML 文章。
    • 我认为它本身没有任何问题。如果这就是你所需要的,并且你有办法实现它,那就让它实现。不过,请考虑您是否需要它,因为您可以使用诸如表达式引擎和以 .html 结尾的博客条目之类的东西轻松绕过它。当您到达客户端/服务器操纵层时,文件扩展名在很多程度上是没有意义的。
    • @Tom,再次阅读您的评论,我强烈建议使用 Expression Engine 或 Drupal 之类的东西,而不是自定义系统。如果你需要一个评论系统并且你有编辑/故事作者,你不需要重新发明一个 CMS,你只需要一个能满足你要求的系统,EE 将是一个很好的解决方案,尽管你需要购买它(我不隶属于 EllisLab,虽然我有一个使用 EE 的网站:emergency.unt.edu)。
    • 我会检查 EE。似乎这就是IGN使用的。我打算将每个文章详细信息项存储在一个表中,然后根据传统上的项目(如 .php?articleid=10)构建页面,但似乎 EE 为您完成了所有这些工作并且高度可定制。
    • @Tom - EE 对您的用例非常有用(Drupal 也是如此)。除非您摆脱挑战,否则请选择受支持的解决方案。这是网络发布中一个众所周知的问题。
    【解决方案3】:

    实现此目的的一种常用技术是使用AJAX。显然动态内容必须来自动态服务器端脚本。

    【讨论】:

      【解决方案4】:

      我不知道,但我猜它是 JavaScript ajax。有一些解决方案可以做到这一点,但 JavaScript 是最好的,请查看 MooTools(我个人最喜欢的)和 JQuery。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多