为什么drupal主题如此困难?有关简化或更快学习的提示吗?

a20*_*a20 3 themes drupal theming

我已经用PHP编写了4年的代码,甚至我发现它如此复杂且难以理解.我不知道他们希望设计师如何管理主题.

我知道基本的主题,主题是tpl文件,视图模板,考虑模板等.但是每当我输入template.php文件时我都会迷路.

我需要为自定义内容类型设置节点输入表单的主题.我用7-9个教程将我的大脑震撼了它,它仍然没有聚集在一起.我理解为什么模块构建可能很复杂 - 因为大多数使用模块的人都是开发人员.

然而,即使开发人员无法理解主题,它肯定是过度设计的!

也许这是我的错,也许我没有正确地学习Drupal.在这种情况下,是否有一个逐步的系统成为Drupal大师?

goo*_*orp 10

主题真的不是那么难,如果你只知道基本的PHP.你有三种方法可以改变你应该能够处理的标记,即css和js.

  • 模板文件.通过在主题中创建模板文件并正确命名,它将优先于其他模板文件,因此您可以为视图,节点等创建自定义标记.通过为noce类型创建模板,您可以执行诸如打印之类的操作在任何其他的cck字段而不是使用$content.您只需要在节点对象上.

  • 放置在主题中的预处理函数将使您可以添加或更改将在模板中使用的变量.您可以将函数命名为hooks:yourtheme_page用于yourtheme_node节点模板的页面模板等.您可以在此创建一些自定义逻辑或修改,以帮助使模板更加干净,并只处理变量的打印.

  • 主题功能.您可以覆盖主题函数以更改使用的标记.您只需要创建一个名为的函数yourtheme_[theme_function_name].你不需要了解太多的PHP来做到这一点.通常,您只需复制原始主题功能,并对其进行一些更改即可获得所需的标记.

通过上述内容,您可以完成所需的90-95%.表格有点特别,因为你在Drupal 6中无法在主题中轻松改变它们.相反,你想要的是创建一个小模块和使用hook_form_alter,它允许你修改形式,按钮上使用的文本等.这在Drupal 7中更改,这将更容易主题.

所以它真的不是那么复杂,只需使用上面描述的3种基本工具.棘手的部分可能是命名你的函数和模板,但devel themer可以帮助你.您使用的另一个工具是devel,它可以帮助您打印变量,以便您可以检查它们并查看您可用的内容,节点上的fx CCK字段.


mar*_*end 6

也许你应该得到前端Drupal的副本.

在我看来,一旦你绕过模板,覆盖,.info文件和预处理函数等概念,Drupal主题就不难了.这些东西与php技能没有直接关系,而是与理解系统有关.

有趣的是看到你是一个人,但你只谈论PHP,而不是CSS和HTML.根据我的经验,很多主题任务都可以用CSS完成,甚至没有触及php.

最后,我不知道你是否已经使用了基础/入门主题(如ZenGenesis).我建议使用基本主题并将您自己的设计实现为子主题.


ans*_*ung 5

大多数人得到'啊哈!' 主题突然开始变得有意义的时刻.

我认为这对于有经验的PHP开发人员来说可能更难,因为你必须通过许多在vanilla PHP中没有意义的概念("这个函数在适当的时候被神奇地调用...因为如何它被命名了?!")

@ googletorp的答案非常全面,所以我只想添加一些帮助我的实用技巧:

1)尝试构建一个模块,实现它自己的主题输出和简单的钩子.钩和主题功能使很多更有意义,当你看到模块实际上是如何打电话给他们,并使用它们.

2)自由使用devel模块,特别是Theme Registry菜单(注意添加新主题功能时它如何变化),'Render'选项卡,以及dpm()dvm()函数

3)购买一本关于Drupal主题的古老的死树书.如果您已经知道自己在做什么,那么在线文档非常出色,但如果您不确定自己在寻找什么,则可能会非常混乱.

4)清空你的杯子.在主题级别,PHP实际上只是用于简单的逻辑和语法 - 几乎所有实质内容都由Drupal API函数处理.尝试像Drupal开发人员一样思考,而不是PHP开发人员(即不要因为你构建了一个同样的东西的vanilla PHP网站而假设你知道如何做某事)而且你会有更轻松的时间.

坚持下去!一旦你弄明白,主题系统实际上很容易使用.