最喜欢的Drupal提示或最佳实践?

只是想知道你们可能有什么提示或技巧分享。 和往常一样,每个post只有一个提示,所以他们可以独立投票。

我会开始:但是你做你的主题,你可以使用母题主题作为你的主题的基本主题inheritance,以便您的标记将是一个更干净,更不详细。

当build立一个新的网站时,我们立即创build一个以网站/项目命名的空白自定义模块。 这成为所有小修正/调整/调整popup来解决所有那些不是真正的function,并不要求一个完整的模块(一开始)的小改动请求的中心位置 – 这个模块应该是定期审查和重构,以消除过时的东西,或者把东西变成一个function,因此应该有一个完整的模块。

主题相同 – 无论我们开始我们网站的主题,通常会立即/快速修改,所以最好从头开始将其重命名为网站/项目。

“网站模块”补充了“网站主题”,因为它包含了业务/工作stream程/数据相关的调整/操作,否则最终会混乱主题template.php文件(应该只包含主题特定的东西)。

使用drush来安装/更新模块并执行维护任务。 如果你使用Drupal,你不能没有它。

在编写Drupal中的任何自定义function之前,请确保没有它的模块。

  • 使用禅宗主题 – 不仅使它更容易,它还添加了反映网站状态的CSS类(如<body class="not-front not-logged-in page-node node-type-project-project two-sidebars"> ) – 使您可以轻松定制您的网站。

  • 通过Drupal模块浏览 – 十分之九的机会,你会发现你在那里寻找什么 – 这是安全和/或维护 – 这是一个不同的问题;)但至less你会有一个起点。

学习意见模块进出

两条build议:

不要盲目地使用第一个与你想要的名称共享一个名字的模块。 通常,第一个模块“捕获”该function的命名空间,而另一个不太恰当的命名模块将更好地实现function。

四处寻找一种方法来做你想要的,包括CCK /视图集成。 这显然是Drupal的未来,所以一个独立的模块可以在不久的将来消灭你想要做的事情,与一个依赖于视图/ CCK的模块竞争。

++给格山的build议。

使用备份和迁移模块它可以帮助你很多。

Drupal中最强大的function是改变系统。 这体现在两个方面

  • 整个主题系统
  • drupal_alter() (最常见的就是hook_form_alter)

这些东西之所以如此强大,是因为它使您能够改变drupal核心function,并改变drupal如何在改变drupal核心本身(或贡献模块)的情况呈现不同的东西。

这可能是Drupal成功的主要原因之一,因为它允许开发人员自定义Drupal,以完成他们想要的任务,并且仍然保留对Drupal和贡献模块的所有进展。

CCK + 视图 + 面板

我听说有人使用国际化function来改变他们原本不可能的文本。

安装并使用devel模块 。 花一些时间与它有一个更深入的知识,它可以如何帮助您debugging模块,主题开发等。

我在这个演讲中分享了一些技巧

http://www.slideshare.net/mirnazim/best-practices-for-drupal-developers-by-mir-nazim-drupal-camp-india-2008

注意:在slideshare中的字体是F ***编辑,它更好地下载。

使用/ var / www作为我的web根目录,我创build/ var / www / sites和符号链接我的网站目录,以及/ var / www / files for robots.txt。 它使得升级(在没有SCM的情况下)不那么可怕,只需用新版本覆盖/ var / www / drupal文件夹并点击update.php即可。

使用drupal的本地副本进行开发; 在本地进行debugging比在WAN上debugging要less得多,而且更容易将您的站点代码用作IDE中的项目,IDE(可能可以,也可能不是)在您的IDE上提供代码完成和简单访问你的文件。 完成后,您可以通过ftp / scp或使用您熟悉的SCM来推送更改。

我使用devel的dsm()函数,所以我会推荐这个模块。 它使debugging无需debugging器(即在移动之后)不那么痛苦。

此外,pipe理菜单使pipe理您的网站更容易; 它给你的dhtmlpopup菜单访问所有的pipe理页面,在一个层次结构,所以只有一个点击你和大多数pipe理员之间的function。

使用exportables,通过ctools模块或内置的视图等来获得数据库外的关键configuration设置,并将其放入版本控制。 这将使更新和更改从一个站点到另一个更容易。

如果你没有使用PHP5或非mysql数据库,请使用Pressflow( http://pressflow.org )而不是Drupal的股票。 Pressflow针对mysql + php5进行了优化,并随着您的网站的发展支持更好的caching设置,比如在Drupal之前为匿名用户放置Varnish。

使用node.tpl.php中的$ idvariables来让主题允许长垂直列表以外的内容。 例如,您可以检查$ id是否为1,如果是,则将该节点包含在div中,并将其放在页面右上angular的高亮区域中。 (这与“在列表顶部粘贴”function相结合时非常有用)。然后,您可以在页面的下方放置两列,其中包含2到8和9到15之间的$ id。

有时您可能需要检查$ id号以外的内容,以确定将节点放入哪个“区域”。 在这种情况下,在hook_preprocess_node函数中进行一些检查会非常有帮助(您可以在template.php文件中将其放置为themename_preprocess_node),其中包含一个静态variables,您可以使用该variables将检查结果存储在节点上已经显示在页面上。 例如,我使用这个来显示节点上方的date标题,提供该date的节点尚未显示,如下所示:

 if ($vars['teaser']) { static $last_date; $date = format_date($node->created, 'custom', 'l jS F'); if ( $date != $last_date ) { $vars['show_date'] = TRUE; $last_date = $date; } else { $vars['show_date'] = FALSE; } } 

框架是开始主题开发的另一个很好的模块。 使用它作为基本主题,我可以在几小时内将现有的主题移植到Drupal。

Panels3

学习它,使用它,掌握它。 它使您的网站高度活跃。