最近我得到了一个现有的Drupal项目,并要求改进前端(HTML、JavaScript、CSS)。我在Django、PHP、Ruby等方面有大量的前端和后端开发经验,但我没有任何以前的Drupal经验,而且了解项目中发生的事情充其量也是很麻烦的。
有人能给出一个典型的Drupal站点是如何结合在一起的(或者提供一些链接)吗?我需要做些什么来添加页面元素、更改CSS和添加JavaScript功能呢?合适的地方是什么?
当然,如果问代码开发人员正在发生什么,那就太好了--但他却无处可寻。
到目前为止,我在代码和网上浏览了大约2个小时,下面是我所看到的:
有很多模块,主题文件(CSS,一些图像)位于站点/all/themes/theme_name/.
HTML文件(模板)似乎是随机分散在所有的地方-进入模块,*.tpl.php文件等。
主题有一个.info文件,其中包括区域的定义。这些区域对应于模板文件中的变量--但是在哪里定义/编辑了变量?
这是让我把头发从我的头脑中拉出来,任何帮助如何改变前端将是伟大的!
发布于 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:
drupal_add_js()的template.php文件,或者将它们包含在您的信息文件中,比如:scripts[] = js/myscript.js。您还需要在修改info文件时清除主题缓存。
如果您正在使用Drupal 7,此页将为您提供如何构造JS文件以及如何将它们包含在主题中的很好的概述。对于Drupal 6(或5),此页涵盖了这些主题。
您可能已经知道这一点,但是jQuery库已经包含在Drupal中。jQuery的版本通常低于当前发布的版本,但如果需要,可以使用jQuery更新至少更新到更高的版本。意见/CCK
views或node-/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函数。
发布于 2011-08-04 15:44:01
很简单,从这里开始:http://drupal.org/project/zen
发布于 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 )中哪些变量可用的良好文档。
https://stackoverflow.com/questions/6944404
复制相似问题