自定义输出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; ?>