Drupal 6 如何在Drupal中显示日历?

Drupal 6 如何在Drupal中显示日历?,drupal-6,module,calendar,block,Drupal 6,Module,Calendar,Block,我尝试使用,基本上在我的主题中显示日历。因此,我在管理界面中启用了该模块,然后在我的主题文件(page.tpl.php)中键入以下内容: $block = (object)module_invoke('calendar_block', 'block', 'view', '0'); print theme('block',$block); 但是,这只显示大写的“CALENDAR”,而不显示任何日历。当我查看源代码时,只有一个类为“calendar_ajax”的div,这使我认为渲染应该由Jav

我尝试使用,基本上在我的主题中显示日历。因此,我在管理界面中启用了该模块,然后在我的主题文件(page.tpl.php)中键入以下内容:

$block = (object)module_invoke('calendar_block', 'block', 'view', '0');
print theme('block',$block); 
但是,这只显示大写的“CALENDAR”,而不显示任何日历。当我查看源代码时,只有一个类为“calendar_ajax”的div,这使我认为渲染应该由JavaScript完成,但它没有发生


有人知道可能是什么问题吗?

你试过类似的方法吗

$block = module_invoke('calendar_block', 'block', 'view', 0);
print $block['content'];

试试这个。这允许您使用来设置各种不同内容的日历。

如果日历呈现很可能是通过JavaScript进行的,那么问题可能是您通过模板文件中的代码“手动”创建块,而不是通过块配置页面将其添加到区域的“常规”方式

该模块可能通过
drupal\u add\u js()
调用添加所需的JavaScript,该调用将JavaScript文件或代码添加到传递到页面模板的变量中,以包含输出。但是,只有在执行/呈现page.tpl.php之前调用了
drupal\u add\u js()
时,这种方法才有效,因为JavaScript文件和代码在当时已经为输出进行了组装/聚合,所以再添加就太晚了

虽然在page.tpl.php内部(或在预处理函数中)有解决此问题的方法,但这些方法很难看,应该尽可能避免。尝试使用“普通”方式向区域添加块(或查看mikl建议的备用模块)


编辑:关于“正常”方式,我建议看一下文档,因为它提供了一个很好的概述,并且有一些有用的链接指向更详细的信息

要获得快速方法,请查看Drupal实例的
admin/build/block/list
configuration页面。它应该为每个启用的主题提供一个页面(选项卡),列出主题区域以及放置在这些区域中的块


在这些列表的底部,您将找到“禁用”块,即未分配给任何区域的块。我希望日历块会列在那里,你可以尝试将它移动到你的一个主题区域,然后看看它是否会出现(或者更好的是,先切换到默认的花环主题,在那里测试块,然后切换回您的主题-这样,您就可以确定它在原则上是否工作,与主题设置/配置无关)。

谢谢,您对幕后发生的事情的解释很有用;但是我仍然想知道“正常”是什么如何将此块添加到我的页面?在Drupal中,似乎有太多的方法可以做一些事情,我不知道正常的方法应该是什么。因此,如果我想将此块添加到我的主题中的页面,有什么方法可以做到这一点(无需手动添加Drupal\u add\u js调用等)?@Laurent:我编辑了我的答案,加入了一些关于“正常”方法的提示。(是的,Drupal的“实现相同结果的多种方法”一面同时是优点和缺点。它提供了相当多的灵活性,但使人更难完全理解系统:/