这是我在StackOverflow的第一个问题。我试图在这篇文章中发表评论:Joomla模块是否"知道"?它在什么位置?,但无法做到这一点,所以我不得不在这里发布另一个问题。任何关于如何正确地做到这一点的提示都是非常感谢的。总之,这是我的问题:
我尝试了上面提到的代码,但它似乎不起作用。我不仅对PHP很陌生,而且对编码也很陌生,所以我不确定是我还是代码的问题。以下是我对模块的default.php文件所做的操作:
1)为了确保在正确的位置插入代码,我插入
<?php echo(print_r($module)); ?>
,在正确位置输出1;
2)我需要确定的位置名称是"showcase-a",所以我插入代码
<?php if ($module->position == 'showcase-a'):?>test<?php endif;?>
到上面的位置,但是这次它没有显示任何东西;
3)然后我试了这个代码:
<?php if ($module):?><span>test</span><?php endif; ?>
但是它仍然没有在我期望的位置显示"test"。
4)我试着
<?php if (1):?><span>test</span><?php endif; ?>
和测试"test"显示为良好。所以我没有把IF语句写错。
现在我完全迷路了。既然print_r($module)输出1,$module必须是正的,为什么PHP忽略测试3)?这只是一个关于PHP学习的附带问题。我还需要解决的是让模块确定自己在哪个位置。请帮助。谢谢你!
我不确定是否在模板中使用它(尽管它似乎并没有完全错误),但我的模块经常像这样访问位置:
$module->position
模块中的(mod_something。php)所以试着把它放在那里,如果它可用就设置一个变量它也会在视图中可用
如果$module->position不适合您。$module->position可能只适用于joomla 1.7, 2.5和+,但我不确定。$module->position可以在joomla 2.5中使用
否则你需要创建一个module.php函数
查看文件
/模板/you-template/html/modules.php
例如,在模板中设置如下位置(例如index.php)
<jdoc:include type="modules" name="header" style="includeposition" />
内/模板/you-template/html/modules.php
创建如下函数:
<?php
function modChrome_includeposition($module, &$params, &$attribs){
//Set a value to $module->position
$module->position='WHATEVER YOUWANT';
?>
<div class="moduletable <?php echo $params->get('moduleclass_sfx').' '.$module->name; ?>">
<?php
if($module->showtitle){
?>
<div class="modtitle">
<div class="fleche">
<span>
<?php
echo $module->title;
?>
</span>
</div>
</div>
<?php
}
?>
<div class="modcontent">
<?php echo $module->content; ?>
<div class="clear">
</div>
</div>
</div>
<?php
}
?>
设置不同的函数名,设置不同的值。
函数名将匹配您设置的样式:
modChrome_includeposition($module, &$params, &$attribs)
因为style="includeposition"