【问题标题】:Repeating a block of html like a function像函数一样重复一个html块
【发布时间】:2014-02-15 16:07:56
【问题描述】:

我正在通过建立自己的个人网站来学习 html、css 和内容管理,但我在这些领域的经验都很少。困扰我的一件事是我必须重复一段“html代码”。例如,在我的网站上,我可能有一个如下所示的块:

<div class="talk">
  <a href="link">
    title
    <div class="info">
      subtext
   </div>
  </a>
</div>

其中link, titlesubtext 是唯一发生变化的元素。作为一名程序员,这看起来像一个带有三个参数的函数:talk(link, title, subtext),我将通过保留一个单独的文本文件或数据库来实现这一点,其中包含所有条目以及一个将数据和 HTML 格式“编译”成最终产品的程序.事实上,这就是我现在使用简单的 python 脚本和 BeautifulSoup 所做的事情。不过,我有一种感觉,正是这类事情的工具,但是有这么多选项和系统,我什至不确定我在看什么确切地说(Grunt、bower、Ruby on Rails、SASS、HMAL、车把……)。这不是对建议的要求,可接受的答案可能涉及任何框架,但我更喜欢简单而不是权力。

执行此操作的规范/标准方法是什么?使用我上面的代码块的最小工作示例是什么?

【问题讨论】:

  • 虽然可能有必要,但如果没有评论,否决票和接近票不是很有建设性的。如果您认为不清楚,请帮助我改进此问题或要求更多说明。
  • 任何像 PHP 这样的服务器端语言都可以。这是生成冗余内容的最常见和最实用的方法。通常的方法是让 Web 服务器运行脚本语言,但没有什么能阻止您将它们中的大多数用作离线编译器。 (顺便说一句,反对者不是我)。
  • 简短的回答是否定的。没有本地 html 支持来复制代码块。你需要一个预处理器。正如你所说,有很多选择。
  • 如果您不喜欢构建自己的代码,也可以使用 CMS。我推荐wordpress、表达式引擎或concrete5。
  • @badAdviceGuy 我明白了,我没有考虑渲染服务器或客户端之间的区别。虽然不在 SO 的常见问题解答范围内,但您能推荐任何标准预处理器吗?这些建议可以为我自己的搜索提供种子。

标签: html content-management-system


【解决方案1】:

既然你要求一个活生生的例子,这里是一个 PHP 的例子:

news_print.php

function output_some_news ($link, $title, $subtext)
{
    echo
"<div class='talk'>
     <a href='$link'>
         $title
        <div class='info'>
            $subtext
       </div>
     </a>
 </div>";
}

// this is just for show. Usually the data come from a database or data file
$topics = array (
    array ("http://celebslife.com", "Breaking news", "Justin Bieber just grew a second neuron"),
    array ("http://nerds.org"     , "New CSS draft available", "We won't be forced to use idiotic lists to implement menus in a foreseeable future"));

function output_news ($topics)
{
    foreach ($topics as $topic)
    {
        output_some_news  ($topic[0], $topic[1], $topic[2]);
    }
}

在您的 HTML 页面中:

news.php

<?php include 'news_print.php'; ?>

<div class='news'>
    <?php output_news($topics); ?>
</div>

至于使用 PHP 作为预处理器,很简单:

C:\dev\php\news> php news.php > news.html

将从您的 PHP 脚本生成纯 HTML。

PHP 引擎将从命令行而不是 Web 服务器调用,其输出将存储在文件中而不是发送回浏览器,仅此而已。

当然你会有一些不同。例如,如果您离线使用 PHP,所有特定于 Web 的信息(如调用方 URL、cookie 等)都将不可用。另一方面,您将能够使用命令行参数和环境变量。

【讨论】:

  • 谢谢,这是我学习和借鉴的好例子。
  • 欢迎来到激动人心的网络编程世界:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-05
  • 1970-01-01
相关资源
最近更新 更多