【问题标题】:Basic php to set column width in Joomla在 Joomla 中设置列​​宽的基本 php
【发布时间】:2013-09-03 01:57:26
【问题描述】:

我正在使用带有引导程序的 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; ?>"

【问题讨论】:

  • params->get do 中的 '' 是什么(如果未找到则为默认值)。如果是,则将其设置为 0(零)。否则使用 $span = $grid - ( intval($left) + intval($right) );以防这些值不是数字或具有附加字符,即 120 像素而不是 120。
  • 感谢您的意见杰夫。我将参数输入设置为下拉列表,因此我知道 $left 和 $right 的值将始终有效,因此我很高兴。您认为不检查它们是否只是数字可能存在安全风险?我承认我不知道参数中 '' 的用途。我正在研究如何纯粹通过阅读 Joomla 附带的默认模板和其他一些示例中的代码来做到这一点。 Joomla 有所有适当的参考资料,这在很大程度上似乎是一个反复试验和逆向工程的案例

标签: php joomla joomla-template joomla3.1


【解决方案1】:

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

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

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

  1. $this-&gt;params-&gt;get('sidebarLeftWidth','') 正在获取一个名为 sidebarLeftWidth 的模板参数,但如果该参数不可用,则将其设置为 '',实际上是 null

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

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

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

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

  4. 在调试器中检查params 的内容,即检查$this-&gt;params 对象中每个命名参数的值。如果您没有使用 IDE,请尝试使用 print_r():

    echo '&lt;pre&gt;' . print_r($this-&gt;params, true) . '&lt;/pre&gt;';

【讨论】:

  • 谢谢您,非常感谢您抽出宝贵时间为我解释 - 这个网站很棒。并不是我的代码不会运行,只是虽然我有足够的信心复制和粘贴常用的东西来创建 Joomla 模板,但我仍然是一名网页设计师前端人员,我基本上只是采取了猜猜PHP。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-26
  • 2011-10-29
  • 2020-02-14
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多