首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >开发Drupal站点的前端-基础

开发Drupal站点的前端-基础
EN

Stack Overflow用户
提问于 2011-08-04 15:41:40
回答 6查看 2.4K关注 0票数 2

最近我得到了一个现有的Drupal项目,并要求改进前端(HTML、JavaScript、CSS)。我在Django、PHP、Ruby等方面有大量的前端和后端开发经验,但我没有任何以前的Drupal经验,而且了解项目中发生的事情充其量也是很麻烦的。

有人能给出一个典型的Drupal站点是如何结合在一起的(或者提供一些链接)吗?我需要做些什么来添加页面元素、更改CSS和添加JavaScript功能呢?合适的地方是什么?

当然,如果问代码开发人员正在发生什么,那就太好了--但他却无处可寻。

到目前为止,我在代码和网上浏览了大约2个小时,下面是我所看到的:

有很多模块,主题文件(CSS,一些图像)位于站点/all/themes/theme_name/.

HTML文件(模板)似乎是随机分散在所有的地方-进入模块,*.tpl.php文件等。

主题有一个.info文件,其中包括区域的定义。这些区域对应于模板文件中的变量--但是在哪里定义/编辑了变量?

这是让我把头发从我的头脑中拉出来,任何帮助如何改变前端将是伟大的!

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-08-04 17:34:20

从长远来看,使用像Zen这样的主题框架(假设有超过几个小时的轻量级更新的预算)是一种很好的方法,特别是对于Drupal初学者来说,因为Zen的开发人员已经考虑了所有的细节,这些细节使得主题能够在许多不同的站点和浏览器上很好地工作。

也许我误解了Scott的建议,但我认为他的主要观点是,通过研究禅宗框架,您将学习最佳实践。这也是正确的--查看现有的主题和主题框架是一个很好的方法,可以查看如何构造template.php文件,以及如何包含JS文件。

在实现细节方面,有一些基础知识可能会帮助您开始运行:

区域/区块:

  • 当您在info文件中定义区域(如regions[header] )时,$header变量将在页面模板(如page.tpl.php)中对您可用。当您创建一个新区域时,为了在模板中访问它,您将需要清除主题缓存。通过打印变量,可以将区域包含在页面模板中的任何位置: <?php print $header; ?> 添加区域后,通常使用块填充该区域。关于块的Drupal文档在这里。您可以通过单击“添加块”手动创建新块。您还可以通过创建一个新的视图(见下文)来生成新的动态块。模块在安装时也经常添加块。

JavaScript/jQuery:

  • 您可以在您的JavaScript文件中包含带有drupal_add_js()的template.php文件,或者将它们包含在您的信息文件中,比如:scripts[] = js/myscript.js。您还需要在修改info文件时清除主题缓存。 如果您正在使用Drupal 7,此页将为您提供如何构造JS文件以及如何将它们包含在主题中的很好的概述。对于Drupal 6(或5),此页涵盖了这些主题。 您可能已经知道这一点,但是jQuery库已经包含在Drupal中。jQuery的版本通常低于当前发布的版本,但如果需要,可以使用jQuery更新至少更新到更高的版本。

意见/CCK

  • 如果主题中有以viewsnode-/node--开头的tpl文件,它们可能是覆盖视图/内容类型。您可能希望至少了解CCK/视图的基础知识,因为这些基础构成了许多tpl.php重写的基础。您可能不会创建新的视图或内容类型,但如果前面的开发人员创建了新的视图或内容类型,则可能会创建一些tpl文件来覆盖其中一个或两者。假设安装了视图,并且您的用户角色可以访问视图,那么请查看各种视图,看看它们是如何工作的。如果tpl.php文件以views开头,则它正在重写视图中的某些内容。如果它以node开头(除了node.tpl.php,它是所有Drupal节点的通用模板),它通常会覆盖内容类型(通常使用CCK模块创建)。 tpl文件的一个关键方面是,与CSS一样,它们有一个特定的级联。因此,在Drupal 6中,如果您有一个page.tpl.php,这将是您站点上所有页面的模板。但是,您可以使用模板page-front.tpl.php为您的首页覆盖它。同样适用于node.tpl.php。如果有一个名为Event的内容类型,则可以使用node-event.tpl.php覆盖节点模板。理解这个概念将帮助您理解tpl命名约定。

最后一点,这可能需要一段时间才能适应,对于新的Drupal主题程序来说,一个常见的问题是,每当他们想要覆盖接口中的东西时,他们都可以使用模板。因此,当他们想要覆盖五个页面或内容类型时,他们会创建五个模板。这“工作”,但它往往是过火,并可能造成维护问题。当您越来越习惯使用Drupal的主题系统时,您会发现您正在创建越来越少的page--blah-blah.tpl.php,并且在template.php中执行更多的模板重写操作,这是大多数主题逻辑理想存在的地方。这有助于您合并(并重用)模板重写。如果预算/时间不太紧,请了解template.php函数。

票数 6
EN

Stack Overflow用户

发布于 2011-08-04 15:44:01

很简单,从这里开始:http://drupal.org/project/zen

票数 1
EN

Stack Overflow用户

发布于 2011-08-04 15:53:18

下面是指向Drupal主题指南的链接:http://drupal.org/node/171194

模板文件中的变量通常可以通过template.php文件中的sites/all/themes/theme_name/...目录中的函数进行修改,就像您通过预处理()之类的函数发现的那样。

Drupal提供了一些关于每个.tpl.php文件(如page.tpl.php )中哪些变量可用的良好文档。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6944404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档