为什么drupal主题化如此困难?有没有简化或加快学习的建议?
我用PHP编写代码已经4年了,甚至我都觉得它很复杂,很难掌握。我不知道他们希望设计师如何管理主题 我知道基本的主题化、使用tpl文件的主题化、查看模板、思考模板等。但是每当我进入template.php文件时,我就会迷路 我需要为自定义内容类型设置节点输入表单的主题。我绞尽脑汁想了7-9个教程,但还是没合拍。我理解为什么模块构建会很复杂,因为不管怎样,大多数使用模块的人都是开发人员 然而,即使是开发人员也无法理解主题化,这显然是设计过度了为什么drupal主题化如此困难?有没有简化或加快学习的建议?,drupal,themes,theming,Drupal,Themes,Theming,我用PHP编写代码已经4年了,甚至我都觉得它很复杂,很难掌握。我不知道他们希望设计师如何管理主题 我知道基本的主题化、使用tpl文件的主题化、查看模板、思考模板等。但是每当我进入template.php文件时,我就会迷路 我需要为自定义内容类型设置节点输入表单的主题。我绞尽脑汁想了7-9个教程,但还是没合拍。我理解为什么模块构建会很复杂,因为不管怎样,大多数使用模块的人都是开发人员 然而,即使是开发人员也无法理解主题化,这显然是设计过度了 也许是我的错,也许是我没有正确地学习Drupal。在这种
也许是我的错,也许是我没有正确地学习Drupal。在这种情况下,是否有一个逐步成为Drupal大师的系统?如果您只知道基本的php,那么主题真的没有那么难。您有3种修改标记的方法,css和js,您应该能够处理
- 模板文件。通过在主题中创建模板文件并正确命名,它将优先于其他模板文件,因此您可以为视图、节点等创建自定义标记。通过为noce类型创建模板,您可以在任何其他类型中打印cck字段,而不是使用
。您所需要的只是节点对象$content
- 放置在主题中的预处理函数,可以添加或更改模板中使用的变量。您可以为页面模板的hooks:
等函数命名为节点模板的hooks:yourtheme\u page
。在这里,您可以创建一些自定义逻辑或修改,以帮助使模板更干净,只需处理变量的打印yourtheme\u node
- 主题功能。您可以覆盖主题函数以更改所使用的标记。您只需要创建一个名为
的函数。要做到这一点,您不需要了解很多php。通常,您只需复制原始的主题函数,并对其进行一些修改即可获得所需的标记yourtheme\u[theme\u function\u name]
hook\u form\u alter
,它允许您修改表单、按钮上使用的文本等。这在Drupal 7中有所更改,这将更易于主题化
所以它其实并不那么复杂,只要使用上面描述的3个基本工具就可以了。棘手的部分可能是命名函数和模板,但这可以帮助您。您使用的另一个工具是,它可以帮助您打印变量,以便您可以检查它们并查看节点上的可用fx CCK字段。也许您应该获得一份 在我看来,Drupal主题化并不困难,只要你将头脑集中在模板、覆盖、.info文件和预处理函数等概念上。这些都与php技能没有直接关系,都是关于理解系统的 有趣的是,你是一个主题设计师,但你只谈论php,而不是CSS和HTML。根据我的经验,许多主题化任务都可以通过CSS完成,甚至不需要接触php
最后,我不知道您是否已经在使用(like或)了。我建议使用基本主题并将自己的设计作为子主题。要回答您关于为什么这么难的问题: Drupal主题可能看起来势不可挡,因为有太多的可能性,请参阅@googletorps Response以获得良好的概述。 拥有“做一件事的多种方式”带来了力量:强大的用户可以选择所有可能的最佳方式。但这也带来了复杂性:新用户无法获得良好的潜在客户,因为没有“你应该这样做。完全停止。” 除了大量完成工作的方法外,还有筑巢的问题。Drupal有一个非常深嵌套项的概念。举一个随机但简单的例子:
username<menuitem<menuitem<menuitem<menu<block<region<page.
username大多数人都会得到一个“啊哈!”主题突然变得有意义的时刻
我认为这对有经验的PHP开发人员来说可能更难,因为你必须克服很多在普通PHP中没有意义的概念(“函数在适当的时候被神奇地调用……因为它的命名方式?!”)
@googletorp的答案相当全面,所以我只想添加一些实用的技巧来帮助我:
1) 尝试构建一个模块,实现它自己的主题化输出和简单挂钩。当您看到模块如何实际调用和使用钩子和主题函数时,钩子和主题函数会更有意义
2) 自由使用devel
模块,尤其是主题注册表菜单(注意在添加新主题函数时它是如何变化的)、“渲染”选项卡以及dpm()
和dvm()
函数
3) 买一本关于Drupal主题的老tyme dead tree书。如果你已经知道自己在做什么,那么在线文档真的很出色,但是如果你不确定自己在寻找什么,那么在线文档可能会非常混乱
4) 把你的杯子倒空。在主题级别,PHP实际上只用于简单的逻辑和语法——几乎所有实质内容都由Drupal API函数处理。试着像Drupal开发人员而不是PHP开发人员那样思考(也就是说,不要仅仅因为你建立了一个普通的PHP站点来做同样的事情,就认为你知道如何做某事),这样你会过得更轻松
坚持下去!一旦你了解了主题系统,它实际上很容易使用。如果你还没有看到它,这是一个关于为什么Drupal 6主题化很难以及如何改进的很好的演示