发新话题
打印

[原创] 实现摘要内容不显示在文章内容页面的一次修改

实现摘要内容不显示在文章内容页面的一次修改

这两天为一个客户建站,要求文章列表页面为BLOG风格.
根据客户的需求,在建立菜单项时选择了BLOG风格.然后发布了几篇文章.默认是在文章列表页面显示摘要内容,在文章内容页面显示摘要内容和正文内容.
此时客户提出摘要内容只显示在文章列表页面,而不要出现在文章内容页面.文章内容页面只显示正文内容.
于是在文章的参数设置里将""摘要"改为隐藏.这样文章列表页面只显示摘要内容,文章内容页面只显示正文内容.
但此时出现了问题.如果摘要和正文中都插入图片(用mosimage),则在文章内容页面里,因没有输出摘要内容,所以摘要内容里的图片依然会按原来的顺序出现,导致图片显示错误.

在MAMBO的设置里看了一下,没有找到相应的解决办法.因此改了一下代码.

思路如下:因为改mosimage看起来有点复杂.所以仍然从内容页面下手.将摘要内容定义一个class为"introContent",用display属性控制它的显示与隐藏,在文章列表页面显示,在文章内容页面隐藏.

先找到输出摘要内容的代码:
/components/com_content/content.php
将这一行
复制内容到剪贴板
代码:
$row->text = $row->introtext. ( $params->get( 'intro_only' ) ? '' : chr(13) . chr(13) . $row->fulltext);
改为
复制内容到剪贴板
代码:
$row->text = '<div class="' . 'introContent">' . $row->introtext . '</div>' . ( $params->get( 'intro_only' ) ? '' : chr(13) . chr(13) . $row->fulltext);
去CSS文件里添加以下定义:
复制内容到剪贴板
代码:
.introContent { display:none; }
但是这样一来,文章列表页面里的摘要也被隐藏起来了.
将菜单里的BLOG风格项的参数设置里将"页面css后缀"改为"Blog".
再去CSS文件里添加以下定义:
复制内容到剪贴板
代码:
.contentpaneopenBlog .introContent { display:block; }
这样摘要内容就只在文章列表页面里显示,而在文章内容页面里隐藏,因为只是被隐藏起来,而不是没有被输出,所以即使在摘要里使用了图片,也不会对正文内容有影响.

至此完成客户的要求.这样更改的话,在进行搜索时,摘要内容被搜到后将显示不了.但因为摘要内容是从正文内容中提取的,所以影响不大.

使用系统:Mambo4.5.3h Global版.

如果大家有更好的实现方法,请赐教.
附件: 您所在的用户组无法下载或查看附件
真的猛士,敢于直面惨淡的人生,正视淋漓的鲜血……

TOP

不错,收藏. !

TOP

不错啊。

关于摘要,参数设置能否默认就是隐藏的,而不是现在的显示呢?

TOP

棒!蛮实用的。
一只虚弱的菜鸟

TOP

发现一个新问题,mambo里面静态内容条目是摘要的形式,4.5.4中文版中将“A_COMP_TYPED_TEXT”翻译成“正文:(必填)”是不对的,应该翻译成“摘要:(可选)”。此处可在\language\admin_simplified_chinese.php文件中修改。

因为这个bug存在,所以用jayson隐藏摘要的方法就会将所有静态条目内容隐藏掉。

所以还得为静态内容条目补上真正的正文输入部分:

修改 \administrator\components\com_typedcontent里面的admin.typedcontent.php文件

查找:
复制内容到剪贴板
代码:
$row->introtext = str_replace( '<br>', '<br />', $row->introtext );
修改为:
复制内容到剪贴板
代码:
$row->introtext = str_replace( '<br>', '<br />', $row->introtext );
$row->fulltext= str_replace( '<br>', '<br />', $row->fulltext);
修改 \administrator\components\com_typedcontent里面的admin.typedcontent.html.php文件

查找:
复制内容到剪贴板
代码:
<?php getEditorContents( 'editor1', 'introtext' ) ; ?>
修改为:
复制内容到剪贴板
代码:
<?php getEditorContents( 'editor1', 'introtext' ) ; ?>
<?php getEditorContents( 'editor2', 'fulltext' ) ; ?>
查找:
复制内容到剪贴板
代码:
<?php echo $adminLanguage->A_COMP_TYPED_TEXT;?><br />
<?php
// parameters : areaname, content, hidden field, width, height, rows, cols
editorArea( 'editor1',  $row->introtext, 'introtext', '100%;', '400', '65', '50' );
?>
修改为:
复制内容到剪贴板
代码:
正文(必须填写)<br />
<?php
// parameters : areaname, content, hidden field, width, height, rows, cols
editorArea( 'editor2',  $row->fulltext, 'fulltext', '100%;', '400', '65', '50' );
?>
<br />
<?php echo $adminLanguage->A_COMP_TYPED_TEXT;?><br />
<?php
// parameters : areaname, content, hidden field, width, height, rows, cols
editorArea( 'editor1',  $row->introtext, 'introtext', '100%;', '200', 15', '50' );
?>
[ 本帖最后由 liangdi 于 2006-9-21 15:41 编辑 ]
一只虚弱的菜鸟

TOP

发新话题