JA文档中文翻译 - JA模板定制FAQ - 创建区块及模块位

我们的默认布局不需要topsl和botsl区块。

thumb-ja-documentation拜年先;昨天的文档中,我们了解了怎样创建新的默认布局文件,今天继续,来看看默认布局中的区块定义以及需要调用的模块位。

通过昨天的默认布局代码,我们可以了解到构成当前布局的区块有如下这些:

  • head.php
  • header.php
  • mainnav.php
  • left.php
  • main-shop.php
  • footer.php

我们的默认布局不需要 topsl和botsl区块。

创建新区块

在模板路径的layouts/blocks文件夹中,创建名为main-shop.php的文件并将原来main.php文件中的代码复制粘贴到新创建的文件中。

创建新模块位

先来看看Joomla原生的创建模块位方式。在main-shop.php的第60行之后,添加如下代码:

<div class="ja-mass clearfix">
<jdoc:include type="modules" name="featured-products" style="JAxhtml" />
</div>

<div class="ja-mass clearfix">
<jdoc:include type="modules" name="new-products" style="JAxhtml" />
</div>

这段代码会向默认布局添加两个新的模块位,用来放置Virtuemart的Featured Products和Latest Products模块的输出。需要注意的是,只有默认布局需要这两个模块位,所以只有shop.php文件会调用到新的main-shop.php区块文件。另外记得在模板的templateDetailx.xml文件中添加对应的模块位声明:

<position>featured-products</position>
<position>new-products</position>

再来看看T3框架下的创建模块位方式。同样,创建一个新的products.php文件,并将main.php中的代码复制粘帖到新创建的文件中。在60行之后添加如下代码:

<div class="ja-mass clearfix">
<jdoc:include type="modules" name="featured-products" style="JAxhtml" />
</div>

<div class="ja-mass clearfix">
<jdoc:include type="modules" name="new-products" style="JAxhtml" />
</div>

与传统方式不同,这些定义模块位的代码需要被添加到区块文件中,再通过布局文件调用该区块;现在打开shop.php布局文件,在区块位置声明中添加products区块,即:

$positions = array (
'left1' =>'left',
'left2' =>'',
'left-mass-top' =>'',
'left-mass-bottom' =>'',
'right1' =>'',
'right2' =>'',
'right-mass-top' =>'',
'right-mass-bottom' =>'',
'content-mass-top' =>'',
'content-mass-bottom' =>'products';, // set the new block position here
'content-top' =>',
'content-bottom' =>',

'inset1' =>',
'inset2' =>'

);

然后添加用来调用新区块位置的代码;在67行附近添加:

<?php $this->loadBlock('main') ?> // main-shop in our case
<?php $this->loadBlock('products') ?>

同样,最后记得在templateDetails.xml中添加对应的模块位声明。

接下来的文档教程中,我们来看看怎样创建布局变体

译者:Viiiix7210

如需转载,请注明官方英文文档及本人译文的出处,谢谢。查看官方英文文档: JA Template Framework/FAQs


收藏与分享

评论刷新

2010-02-15 17:08
你好,試了下, 请教个问题。我按照操作顺序,设 置了products的bloc k,为什么新加position 是在整个content的下方? 我发现,不论把products 放在什么地方,比如放在cont ent-mass-top的位置,新加的posit ion总是在最下方?请问什么原 因?另外这个position的 位置是横贯content的, 而我只想放在mainbody的 下面,不占left的地方,请问 怎么设置?实验站是www.hengxing-group.com, 请帮忙看下
2010-02-15 20:44
Hi,大概看了下,按照“T3框架下的创建模块位方式”,负责 调用products区块的代码 应该是在main-shop之后,left之前;按 照这样的调用顺序,produc ts应该是在main-shop内容的下面输出的。另外 虽然现在还没做到讲样式的部分, 但是这里的main-shop和left应该有各自的 宽度和左右浮动的样式,而新的p roducts还没有设置任何宽 度及浮动样式,目前继承父级容器 的样式的话就会横贯过去了。
2010-04-15 20:41
你好!我按照你写的操作流程,弄 了以后,首页文章那部分出现了两 次,请问一下该怎么解决???