【问题标题】:Is it better to use a separate template file for the front page?为首页使用单独的模板文件更好吗?
【发布时间】:2009-11-17 04:30:13
【问题描述】:

就:

  1. 速度
  2. 需要的处理(会影响速度)
  3. 遵循标准

以下两种方法哪个更好?

我想创建一个通用的页面布局,但是,首页看起来与正常的外观不同。

方法一

创建一个普通的 page.tpl.php 文件,但其中包含以下代码:

.....
<body>
  <?php if (isFront()) { 
          // lots of stuff for the frontpage
        }
        else 
        {
          // lots of stuff for the other pages
        }
  ?>
</body>

方法二

创建两个不同的页面,即page.tpl.php 和front.tpl.php。代码将被复制,但首页和其他页面将各自拥有自己的专用文件。

【问题讨论】:

    标签: drupal drupal-theming


    【解决方案1】:

    我会说方法 2 更好。我认为无论哪种方式,速度都不会受到太大影响,并且对此没有严格的标准,但不鼓励在模板文件中过度分支。

    但是我很想看看主页特定的代码是什么。 Drupal 将给首页一个“front” css 类,因此它可以有不同的样式,并且可以创建块以仅在首页上显示。所以可能不需要特定的首页模板。

    【讨论】:

    • 首页的结构看起来完全不同。网站完成后,我会看看是否可以在此处发布链接。我可能会使用方法 1,因为我不想更改任何 信息或两个模板文件中的其他内容,即使更改的可能性极小。
    • 在这样的模板中分支是不好的,因为如果您启用了 Drupal 的一些更激进的缓存功能(包括核心和贡献),它就不能很好地工作。如果在清除缓存后,首页是要加载的下一页,那么每个页面都会看起来像首页,反之亦然。
    • 拥有单独的文件更为传统,遵循约定有助于其他开发人员快速了解您构建的内容。
    【解决方案2】:

    我会以相反的顺序处理你的观点:

    标准

    我相信标准公认的方法(至少在使用基于 zen 的主题时)是创建一个特定的模板。你实际上不需要添加任何额外的主题功能来让它工作,就像你把它命名为page-front.tpl.php它将专门用于首页。这当然仅适用于您确实需要单独的模板(请参阅 Jeremy 对此的回答)。

    所需处理

    我认为这两种不同方法的性质没有明显的差异。其他一切都一样,计算机打开一个文件(模板)并处理其中的 PHP 仍然是一个问题,无论这是同一个文件还是另一个文件。解决方案 #1 有一个 if 声明更多,但是......它真的有什么不同吗?

    速度

    如果您真的非常需要优化,我读到(如果我在 Pro Drupal Development 上没有错的话)通过模板对页面进行主题化比通过函数进行主题化要慢 5 倍,因此您也可以考虑该解决方案,尽管我相信这只会在主页不可缓存的情况下带来好处。

    HTH!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-22
      • 2017-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-13
      相关资源
      最近更新 更多