这是我在StackOverflow上的第一个问题。 我试图在帖子Can a Joomla module "know" what position it's in?中发表评论,但却找不到这样做,所以我必须在这里发布另一个问题。有关如何正确执行此操作的任何提示都非常适用。 无论如何,这是我的问题:
我尝试了上面提到的代码,但似乎没有用。我不仅对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; ?>
但它仍然没有像我预期的那样在该位置显示“测试”。
4)我尝试了
<?php if (1):?><span>test</span><?php endif; ?>
并且测试“测试”显示为良好。所以我没有把IF语句编码错误。
现在我完全迷失了。由于print_r($ module)输出1,$ module必须为正,为什么PHP忽略3中的测试?这只是PHP学习的一个侧面问题。我还需要解决的是让模块确定自己所处的位置。 请帮忙。谢谢!
答案 0 :(得分:1)
我不确定在模板中使用它(尽管它似乎并没有完全错误)但我的模块经常访问这样的位置:
$module->position
在模块中(所以mod_something.php)所以尽量把它放在那里,如果它可用只是设置一个变量,它也将在视图中可用。
答案 1 :(得分:1)
如果$ module-&gt;位置不适合您。 $ module-&gt;位置可能仅适用于joomla 1.7,2.5和+,但我不确定。 $ module-&gt;位置适用于joomla 2.5。
否则你需要制作module.php函数
查看文件
/templates/you-template/html/modules.php
例如,您在模板中将您的位置设置如下(例如index.php)
<jdoc:include type="modules" name="header" style="includeposition" />
里面的
/templates/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
}
?>
制作不同的函数名称,以便在需要时设置不同的值。
函数名称将与您设置的syle匹配:
modChrome_includeposition($module, &$params, &$attribs)
,因为
style="includeposition"
你的jdoc里面。