自定义输出mod k2 content模块的文章
mod k2 content模块是k2的自带的文章输出模块,非常的强实用。你只需要复制modules/mod_k2_content/tmpl/
下的Default文件夹到/templates/*your template*/html/mod_k2_content/
(没有的话便新建),并重命名,就可以创建一个属于你自己的mod k2 content模块模板。
通常我们可以使用这个模块来输出一个列表内容。但当我们要求输出的布局类似杂志网站的内容的话,会觉得难以实现,因为它无法单独显示一篇文章,无法单独设置某篇文章的文章摘要字数。下面我们就来改造这个模块来符合我们的要求。
一、按文章排序的序号自定义输出mod k2 content模块的文章
对于mod k2 content这个模块,有多种的排序输出,例如默认、最新、最旧、最热门等多种方式;当你选定了某种方式排序后,输出的文章就会按具体的排序得到一个序号,第一篇从0开始,就是0、1、2、3、4这样排下去。
默认的mod k2 content模板,是使用foreach语句来循环访问相关items集合以获取所需信息,如下所示:
<?php if(count($items)): ?>
<ul>
<?php foreach ($items as $key=>$item): ?>
<li class="<?php echo ($key%2) ? "odd" : "even"; if(count($items)==$key+1) echo ' lastItem'; ?>">
默认内容引用
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
所以mod k2 Content的默认显示方式是以一个列表的形式显示文章。
当我们希望为输出的文章实现不同的布局的时候,就要单独输出第一篇文章,或者单独输出第二篇、第三篇文章(通常类似于杂志页面的布局),那就可以用以下方法:
<?php foreach ($items as $key=>$item): ?>
<?php if ($key==0):?>
默认内容引用
<?php endif; ?>
<?php endforeach; ?>
只要填好key的值就行了,记得值是从0开始的递增的。
如果单独设置第一篇文章,除了第一篇文章的其他文章是这样输出的:
<?php foreach ($items as $key=>$item): ?>
<?php if ($key>=1):?>
默认内容引用
<?php endif; ?>
<?php endforeach; ?>
二、自定义输出mod k2 content模块某篇文章的内容摘要字符数
1、修改 modules\mod_k2_content\mod_k2_content.xml 文件
在itemIntroTextWordLimit的下一行(在文本编辑器搜索itemIntroTextWordLimit)添加
<param name="itemIntroTextWordLimitxxx" type="text" size="4" default="" label="itemIntroTextWordLimitxxx" description="itemIntroTextWordLimitxxx"/>
2、修改 modules\mod_k2_content\helper.php 文章
在// Introtext那段代码后添加
// Introtextxxx
$item->textxxx = '';
// Word limit
if ($params->get('itemIntroTextWordLimitxxx'))
{
$item->textxxx .= K2HelperUtilities::wordLimit($item->introtext, $params->get('itemIntroTextWordLimitxxx'));
}
3、在模板文件中的引用方法:
<?php echo $item->textxxx; ?>
三、自定义输出mod k2 content模块多篇文章的内容摘要字符数
1、修改修改modules\mod_k2_content\helper.php
在// Introtext那段代码后添加
$item->textxxx1 = '';
// Word limit
if ($params->get('itemIntroTextWordLimitxxx'))
{
$item->textxxx1 .= K2HelperUtilities::wordLimit($item->introtext, 30);
}
$item->textxxx2 = '';
// Word limit
if ($params->get('itemIntroTextWordLimitxxx'))
{
$item->textxxx2 .= K2HelperUtilities::wordLimit($item->introtext, 60);
}
$item->textxxx3 = '';
// Word limit
if ($params->get('itemIntroTextWordLimitxxx'))
{
$item->textxxx3 .= K2HelperUtilities::wordLimit($item->introtext, 100);
}
2、在模板文件中根据不同的字符数需要使用不同的引用方法:
<?php echo $item->textxxx1; ?>
<?php echo $item->textxxx2; ?>
<?php echo $item->textxxx3; ?>
四、自定义输出mod k2 content模块某篇文章的图像大小
对joomla建站来说,很多功能其实原理是互通的
1、修改modules\mod_k2_content\mod_k2_content.xml 文件
在itemImgSizet的下一段添加
<param name="itemImgSizexxx" type="list" default="Small" label="itemImgSizexxx" description="">
<option value="XSmall">K2_XSMALL</option>
<option value="Small">K2_SMALL</option>
<option value="Medium">K2_MEDIUM</option>
<option value="Large">K2_LARGE</option>
<option value="XLarge">K2_XLARGE</option>
</param>
2、修改modules\mod_k2_content\helper.php
$image = 'image'.$params->get('itemImgSize', 'Small');
if (isset($item->$image))
$item->image = $item->$image;
下面添加
$image = 'image'.$params->get('itemImgSizexxx', 'Small');
if (isset($item->$image))
$item->imagexxx = $item->$image;
3、在模板文件中的引用方法:
<?php echo $item->imagexxx; ?>