【问题标题】:Can a Joomla module “know” what position it's in? (2)Joomla 模块可以“知道”它的位置吗? (2)
【发布时间】:2013-04-20 17:44:40
【问题描述】:

这是我在 StackOverflow 上的第一个问题。 我试图在帖子Can a Joomla module "know" what position it's in? 中发表评论,但找不到任何办法,所以我不得不在这里发布另一个问题。非常感谢有关如何正确执行此操作的任何提示。 无论如何,这是我的问题:

我尝试了上面帖子中提到的代码,但似乎没有用。我不仅对 PHP 很陌生,而且对编码也很陌生,所以我不确定是我还是代码。这是我对模块的 default.php 文件所做的:

1)为了确保我在正确的位置插入代码,我插入

 <?php echo(print_r($module)); ?> 

在正确的位置输出1;

2)我需要确定的position-name是“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 学习,这只是一个附带问题。我还需要解决的是让模块确定自己在哪个位置。 请帮忙。谢谢!

【问题讨论】:

  • 虽然我理解这更多是为了追求您的学习,但我想知道您为什么不只是从模块的参数中获取模块的位置?
  • 虽然我在学校学了一些基本的编码,但我对PHP的了解很少。我明白你建议我做什么,但我只是不知道如何准确地“拿起参数”。我尝试阅读一些 joomla 文档,但文档中的几乎每一句话都引出了另一部分未知知识。非常感谢您对我的学习追求的理解,在我从基础学习PHP的同时,这是我需要尽快解决的紧迫问题之一,希望我也能从中学习。无论如何,请教我如何拿起参数,提前谢谢。

标签: php joomla module


【解决方案1】:

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

$module->position

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

【讨论】:

    【解决方案2】:

    如果 $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 中。

    【讨论】:

      猜你喜欢
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      • 2011-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      相关资源
      最近更新 更多