如何在类别博客布局上显示主要文章的全文(即使它包含更多内容)?
是否有可以更改的后端设置或者我需要覆盖哪个PHP文件?我只想要显示主要文章的全文,介绍文章仍应显示只有简介文本的readmore.
提前致谢.
你没有指定Joomla的哪个版本!所以这个回复是基于2.5.x.
您将需要创建一个布局覆盖了com_content,专门为category视TMPL文件blog.php或blog_item.php.
如果您的模板已经安装了覆盖,com_content您将在此位置找到它:
/templates/your-template/html/com_content/category/
Run Code Online (Sandbox Code Playgroud)
如果没有,你可以从你的Joomla复制原始文件!2.5的component目录在/components/com_content/views/category/tmpl/
在该目录中,您将找到一系列blog以.php- 开头和结尾的文件- 您可以通过将它们复制到上面列出的第一个路径来覆盖1或所有这些文件.NB只复制你需要更改Joomla的文件!如果它在覆盖位置找不到版本,那么它足够智能查看默认目录.
默认的Joomla!2.5安装有这些博客文件:
blog_children.php
blog_item.php
blog_links.php
blog.php
Run Code Online (Sandbox Code Playgroud)
基本上blog.php是主文件,它包括所需的子布局blog_item.php.
如果您使用的是默认的Joomla!2.5文件,来实现你的目标,你可能要重写blog.php,并blog_item.php找到一种方法来检查你是否在领先的项目.一旦你知道你在一个主要项目中,你就会想要回显该项目的全文.
blog_item.php 通常只用这样的行输出介绍文本:
<?php echo $this->item->introtext; ?>
你需要将全文回显,所以在你将上面的行包裹起来if以检查你是否正在执行前导项时,你的输出行看起来像这样:
<?php echo $this->item->introtext.$this->item->fulltext; ?>
注意:我没有检查这是否有效它只是猜测并依赖于表$item中的完整行#__content.
因此,文章全文不会添加到标准安装中的文章项目中,即您可以简单地回显 $this->item->fulltext.
有两种方法可以获得全文.
最简单的第一和是修改核心文件在/components/com_content/models/articles.php与第一起始$query->select()在function getListQuery()其上开始/邻近线路153.在a.introtext之后和单撇号之前添加'a.fulltext' ,所以该行看起来像这样:
function getListQuery()
{
// Create a new query object.
$db = $this->getDbo();
$query = $db->getQuery(true);
// Select the required fields from the table.
$query->select(
$this->getState(
'list.select',
'a.id, a.title, a.alias, a.title_alias, a.introtext, a.fulltext, ' .
'a.checked_out, a.checked_out_time, ' .
Run Code Online (Sandbox Code Playgroud)
第二种方式,和Joomla!更新证明方式(因此可能是更好的方法)是在覆盖中加载整篇文章(丑陋但不是黑客)并连接fulltext到introtext第一篇文章.
要做到这一点,你只需使用getTable$ this-> item-> id in blog.php为第一个前导项加载文章,所以在第54行左右,在put <?php和$this->item = &$item;put 之间:
if($leadingcount == 0) {
$contentTable = JTable::getInstance('Content');
if($contentTable->load($item->id)) {
$item->introtext .= $contentTable->fulltext;
}
}
Run Code Online (Sandbox Code Playgroud)
注意:if if仅限于第一篇主要文章,如果你删除if它将附加所有主要文章的全文.
这适用于我的Joomla开发安装!2.5.6所以你也应该能够做到这一点.