4

这是我在 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; ?>

但它仍然没有像我预期的那样在该位置显示“测试”。

4)我试过了

 <?php if (1):?><span>test</span><?php endif; ?>

并且测试“测试”显示良好。所以我没有将 IF 语句编码错误。

现在我完全迷路了。既然 print_r($module) 输出 1,$module 一定是正数,为什么 PHP 忽略 3) 中的测试?为了 PHP 学习,这只是一个附带问题。我还需要解决的是让模块确定自己在哪个位置。请帮助。谢谢!

4

2 回答 2

1

如果 $module->position 不适合你。$module->position 可能仅适用于 joomla 1.7、2.5 和 + 但我不确定。$module->position 在 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
}
?>

如果需要,可以创建不同的函数名称来设置不同的值。

函数名称将与您设置的样式匹配:

modChrome_includeposition($module, &$params, &$attribs)

因为

style="includeposition"

在你的 jdoc 里面。

于 2013-04-30T14:29:07.273 回答
1

我不确定是否在模板中使用它(尽管它似乎完全没有错)但我的模块经常访问这样的位置:

$module->position

在模块中(所以 mod_something.php)所以试着把它放在那里,如果它可用,只需设置一个变量,它也将在视图中可用。

于 2013-04-21T07:58:58.647 回答