Php 块/主题不是';返回';ing美元产出

Php 块/主题不是';返回';ing美元产出,php,drupal-6,drupal-modules,drupal-hooks,Php,Drupal 6,Drupal Modules,Drupal Hooks,这就是问题所在 我有一个名为“用户收藏夹块”的块 它被放置在区域“第一个侧栏”中 “第一个侧栏”出现在首页上。 该函数应该从f25_favorites表中获取数据,并在块中列出它们。现在该表是一个空数组。 当我返回$output时,我的div或任何内容都不会被输出。 当我打印($output)时,所有内容都会显示出来 这是我的测试代码,用于显示我的“if”语句返回true /* *f25_收藏夹_我的收藏夹主题 */ 函数主题\u f25\u收藏夹\u我的收藏夹($mypath){ dsm($m

这就是问题所在

我有一个名为“用户收藏夹块”的块
它被放置在区域“第一个侧栏”中
“第一个侧栏”出现在首页上。
该函数应该从f25_favorites表中获取数据,并在块中列出它们。现在该表是一个空数组。
当我
返回$output
时,我的div或任何内容都不会被输出。
当我打印($output)时,所有内容都会显示出来

这是我的测试代码,用于显示我的“if”语句返回true

/*
*f25_收藏夹_我的收藏夹主题
*/
函数主题\u f25\u收藏夹\u我的收藏夹($mypath){
dsm($mypath);
打印(计数($mypath));
$output.='nn';
$output.='n';
如果(计数($mypath)==0){
$output.=“未添加收藏夹”;
打印“未添加收藏夹”;
}
否则{
foreach($mypath作为$indpath){
$output.=l($indpath->title,$indpath->path,$attributes=array());
}
}
$output.='n';
$output.='n';
$output.='n';
$output.='nn';
返回$output;
}
这将输出以下内容:

请注意左上角的0,这是“count()”的输出
以及“如果”中文本的打印

这就是我的主题:

/*
*f25_收藏夹_我的收藏夹主题
*/
函数主题\u f25\u收藏夹\u我的收藏夹($mypath){
/*dsm($mypath);
打印(计数($mypath))*/
$output.='\n\n';
$output.='\n';
如果(计数($mypath)==0){
$output.=“未添加收藏夹”;
}
否则{
foreach($mypath作为$indpath){
$output.=l($indpath->title,$indpath->path,$attributes=array());
}
}
$output.='\n';
$output.='\n';
$output.='\n';
$output.='\n\n';
返回$output;
}

它是通过以下hook_theme()函数调用的:

/*
*hook_主题()的实现。
*/
功能f25_收藏夹_主题(){
返回数组(
“f25_收藏夹\u我的收藏夹”=>数组(
'arguments'=>array('mypath'=>array())
),
);
}

通过以下hook_block()函数调用:

/*
*hook_block()的实现。
*
*/
函数f25_收藏夹_块($op='list',$delta=0,$edit=array()){
如果($op=='list'){
$blocks=array();
$blocks['f25-favorites']=数组(
'info'=>t('User Favorites Block'),
“缓存”=>块\u无\u缓存,
);
返回$blocks;
}
如果($op=='view'){
交换机($delta){
案例0:
$mypath=f25_收藏夹_用户_收藏夹();
$block=数组(
'subject'=>t('User Favorites Block'),
“内容”=>主题\u f25\u收藏夹\u我的收藏夹($mypath)
);
返回$block;
};
}
}
值得注意的 我的主题是“禅”主题的“子主题”
Zen有一个block.tpl.php,如下所示:


以下是我模块的完整代码:

这可能是一个与地区相关的问题。尝试切换到Garland并将块添加到普通的旧Garland区域,然后查看它是否出现

如果您在Garland中看到它,那么请确保您的子主题确实定义了“第一个边栏”区域,然后在tpl文件中实际打印它的变量

(FWIW我在Garland上尝试了你的代码,它显示的块很好。)

此外,您可能希望将函数调用更改为:

theme_f25_favorites_my_favorites($mypaths)
致:


…如果您想保持代码的灵活性(即让Drupal调用任何预处理函数,并允许其他人或您自己在将来覆盖模板的输出)

什么是
f25\u favorites\u user\u favorites()
返回的?你的主题处理程序显然得到了一个空数组,所以请检查它为什么被传递到那个空数组。因为我现在还没有在那个数组中保存任何数据。现在它应该输出'If'语句,但是它什么也不输出。呜呜!我忘了把它换回来!事实上,出于调试的原因,facepalm I只是为了绕过主题调用而切换到该模式。不过谢谢你提醒我。我明天早上第一件事就是要测试一下你说的话。你确实是对的;我得到了同样的结果。我应该如何着手解决此区域问题?我应该查找什么?在子主题的.info文件中,应该有一行类似于
区域[sidebar\u first]=第一个sidebar
。方括号之间的标记(“我想是机器名”)将成为page.tpl中实际PHP变量的名称。因此,请确保您的页面模板在任何位置都有相应的
代码位。另外,确保您的子主题具有唯一的名称(特别是,确保它与另一个主题或模块的名称不同)。记住,每当你修改主题的信息和内容时,都要清除缓存。这很奇怪,就我所见,一切都在正确的地方。这是我的page.tpl.php-,这是我的主题信息-
theme('f25_favorites_my_favorites', $mypaths)