1

我正在使用带有引导程序的 Joomla 来创建 Joomla 模板。我有一个 3 列布局(容器总共 12 个,所以 Bootstrap:span12)。我在 Joomla 后端设置参数以设置 $left 和 $right 列宽,然后在我的模板中回显这些变量以设置左右 div 列宽(在 index.php 中)

但是,我想在我的模板中使用一些简单的逻辑,根据后端参数中输入的 $left 和 $right 值自动计算和设置中间列的跨度值。

我对 PHP 的了解几乎为零,所以请原谅我这段代码的粗俗。我只想检查我正在做的事情是正确的还是愚蠢的,或者是否有更好的方法。这就是我正在做的...

<?php
$left = $this->params->get('sidebarLeftWidth', '');
$right = $this->params->get('sidebarRightWidth', '');

$grid = 12;
$span = $grid - ( $left + $right );
?>

然后在我的html中设置我的中间列的宽度 - 简单地......

class="span<?php echo $span; ?>"
4

1 回答 1

1

好吧,如果您正确设置了参数,那看起来应该可以工作。

您实际上并没有说出了什么问题,即正在生成什么结果,所以很难准确地说出,所以这里有一些背景信息和建议可以帮助您弄清楚。对于模板开发,您可以在Joomla Docs网站上找到更多关于模板开发的信息。

假设您的代码在您的模板中index.php

  1. $this->params->get('sidebarLeftWidth','')正在获取一个名为 的模板参数sidebarLeftWidth,但如果该参数不可用,则将其设置为''有效null

  2. 您的参数名称get应使用与文件中完全相同的拼写和大小写来定义templateDetails.xml。如果不是你的$left并且$right可能是空的。(如果您编辑问题以包含模板 XML 或其中的一部分,这将有所帮助。

  3. params部分是一个JRegistry 对象,并根据最初存储在对象的 name 属性中的内容返回混合类型(通常这是一个字符串,但它可以是 PHP 可以处理的任何内容)。要强制输入值,您可能需要更改get行以将结果转换为整数,如果没有找到则返回 0:

    $left = (int) $this->params->get('sidebarLeftWidth', 0);

    $right = (int) $this->params->get('sidebarRightWidth', 0);

  4. 检查params调试器中的内容,即检查$this->params对象中每个命名参数的值。如果您不使用 IDE,请尝试执行以下操作print_r()

    echo '<pre>' . print_r($this->params, true) . '</pre>';

于 2013-09-03T03:50:36.590 回答