我正在尝试将我的网站迁移到 Drupal,但我对主题和模板感到困惑。我当前站点中页面的外观完全由模板文件和 CSS 控制。它在 Drupal 中是如何工作的?
7 回答
在 drupal 中,主题处理网站的外观,模板处理内容的呈现方式。
可以这样想:模板用于呈现内容,然后将主题应用于该内容。
编辑:因此,您的 css 文件与 drupal 中的主题一起使用,与模板无关。
在 Drupal 中,“主题”只是一种特殊类型的插件,它将任意数量的模板(用于控制给定数据如何呈现为 HTML)、CSS、JS 文件、图像等捆绑在一起。
因此,您的总页标记有一个“模板”,一个侧边栏块如何呈现为 HTML 的“模板”等等。所有这些,捆绑在一起并命名,被称为一个主题。
这样看:可以创建一个没有模板的主题。这样的主题将具有覆盖 drupal 的默认 CSS 文件的 CSS 文件。使用这样的主题将创建一个看起来几乎与 Drupal 的默认站点完全一样的网站,除了它会有不同的颜色、字体等。
但是如果你想改变页面上项目的位置,页面上有哪些类型的项目等等,你必须通过在你的主题中添加一些你自己的来覆盖默认模板。这些新模板允许您更改 Drupal 显示的信息以及 Drupal 将使用哪种 HTML 来显示它。
例如,假设我想克隆 StackOverflow,但我想用 Drupal 来做。我要做的第一件事是创建一个新的内容类型(称之为“问题”),它就像一个故事,但有额外的字段来跟踪投票等等。Drupal 的默认模板不知道这些额外的字段,因此它们不会显示它们。
所以,我要做的是进入我的主题并添加一个新的 node.tpl.php 文件。这个新模板和标准模板一样,除了我可以添加代码说“如果这个节点是'问题'类型,则将投票小工具插入正文的左侧。”
这有帮助吗?
主题由一组模板文件组成。block.tpl.php、node.tpl.php、page.tpl.php 都是模板文件,当它们与你的 CSS、JS 和图像结合时会产生一个主题。另外一个主题可以被继承。可以通过从现有主题继承而仅使用 CSS 而无需其他模板文件来创建主题,在这种情况下,将使用来自父主题的模板文件。
另一种看待它的方式是主题是您所看到的,模板文件负责生成标记。
我希望这使它更清楚一点。
我很困惑...
第一个答案说模板和主题彼此无关,而第二个答案说主题只是答案的集合。
哪一个是对的?
Drupal 有一个基于模板的主题系统。您可以在页面中定义自己的区域,并可以根据该区域安排内容。有一些默认的模板文件,例如 page.tpl ,block.tpl ,node.tpl ,它们显示不同类型的内容。您可以根据需要编写自己的模板文件,例如,如果您需要更改用户注册表单或登录页面的显示,您可以为此创建一个 tpl 文件,并且必须将数据重定向到该 tpl 文件。您可以使用 drupals api 将 css 或 js 添加到这些模板中。此重定向必须在主题 template.php 文件中完成
主题由 css、js、图像和模板文件组成。每个主题可能包含多个模板文件。
此外,主题可以被继承,并且子主题的模板文件可以覆盖其父主题的模板文件。