Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

文章内容自动分页教程及给DZ的建议

[复制链接]
soqos 发表于 2010-8-31 14:28:06 | 显示全部楼层 |阅读模式
本帖最后由 soqos 于 2011-8-30 11:34 编辑

官方说文章自动分页无法实现,本人搞了一个晚上,终于成功。
现在拿出来分享,并请官方把自动分页的功能整合到1.5里去,因为,真的很有必要。

演试地址:
http://www.haolawyer.com/wk-132877-2.html

第一步,建立一个PAGE.PHP文件,放在\source\function目录下
第二步,把以下代码放在portal_view.php里
  1. //yehq add
  2. require_once DISCUZ_ROOT.'./source/function/page.php';
  3. $content2 = file_get_contents($content['content']);
  4. $ipage = $_GET["ipage"]? intval($_GET["ipage"]):1;
  5. $CP = new cutpage();
  6. $content2 = $CP -> pagestr = $content['content'];
  7. $content2 = $CP -> cut_str();
  8. $content2 = $CP -> pagearr[$ipage-1]."<BR>";
  9. //$content3 = $CP-> show_prv_next();
  10. $sumpage = $CP-> sum_page;
  11. $ipage = intval($_GET['ipage']);
  12. $multi2 = multi2($sumpage, 1, $ipage, "portal.php?mod=view&aid=$aid");
复制代码

第三步,修改template\default\portal\view.htm模版

把 $content['content']) 替换成 $content2 

再把<!--{if $multi}--><div class="bm cl">$multi</div><!--{/if}-->替换成
<!--{if $multi}--><div class="bm cl">$multi</div><!--{elseif $sumpage}-->
  <div class="bm cl">$multi2</div><!--{/if}-->
大功告成!

演试地址:
http://www.haolawyer.com/wk-132877-2.html

大家多多支持!

另外,
官方曾经有人说这种自动分页只能文本有效,其实不尽然,解决方案有几种:

第一种,在编辑里JS文件里加入
  1. var clearFromWord = function(html) {
  2. // for Word2000+
  3. html = html.replace(/<\/?SPAN[^>]*>/gi, "" );
  4. html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3");
  5. html = html.replace(/<(\w[^>]*) style="([^"]*)"([^>]*)/gi, "<$1$3");
  6. html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3");
  7. html = html.replace(/<\\?\?xml[^>]*>/gi, "");
  8. html = html.replace(/<\/?\w+:[^>]*>/gi, "");
  9. // for Word2000
  10. html = html.replace(/<img+.[^>]*>/gi, "");
  11. return html;
  12. };
复制代码

  1. if(pasteData && pasteData.length > 0) {
  2. var wordPattern = /<\w[^>]* class="?MsoNormal"?/gi;
  3. if(wordPattern.test(pasteData)) {
  4. if(confirm("文章有多余代码,可能影响顺利发表,是否确认清除?\r\n\r\n提示:您的文字将完整保留。")) {
  5. pasteData = clearFromWord(pasteData);
  6. }
  7. else {
  8. pasteData = pasteData.replace(/<img+.[^>]*>/gi, "");
  9. pasteData = pasteData.replace(/<\/?\w+:imagedata[^>]*>/gi, "");
  10. pasteData = pasteData.replace(/<\/?\w+:shape[^>]*>/gi, "");
  11. }
  12. }
复制代码

以上两个判断,基本上就可以把WORD冗余代码去掉,只保留一些有用的基本HTML符号。把问题解决在源头。
第二种是在数据库里输出时,先过滤,再进行分页。

没有问题是不能解决的,只是官方要不要去做的问题。

PS:本人根本不懂程序,也不懂PHP,原来是用ASP,转成PHP也就这几个月的时间。而这些问题,连我认真看一下DZ的代码都可以修改,为什么官方就是不肯去做呢?

还是那句话,态度决定一切。

这个帖子希望官方能够看到,并完善DZ1.5的分页功能里。

谢谢!本人是新手,没金币,没体力,多多支持。

评分

1

查看全部评分

"Emily。 发表于 2010-8-31 14:33:38 | 显示全部楼层
谢谢分享
回复

使用道具 举报

 楼主| soqos 发表于 2010-9-1 09:22:34 | 显示全部楼层

回复

使用道具 举报

bbgwg 发表于 2010-9-16 15:35:55 | 显示全部楼层
好样的。
回复

使用道具 举报

移动影院 发表于 2010-9-27 20:32:39 | 显示全部楼层
不错的功能,DZ X1.5还是很棒的,很多功能不是现在不做,也不是不会,估计一个事物的发展不能重视小节,很多大的功能先要稳定下来。

这次DZ X1.5的思路就是社区泛媒体化/门户化,已经做到了,很多细节都是在将用户体验放在第一位的,因此关于站长的使用习惯/应用,需要时间逐步完善了。

赞一下楼主,确实很厉害,不但能搞出来,还及时与大家分享,感谢,致敬!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-16 13:37 , Processed in 0.028346 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表