techsir 登陆 |注册|TS首页
  首页 快活林 猿氏悟语

dedecms hack集锦

By: 冰客 发表于 2008-9-6 15:25:18 · 108312次点击   回复:6   
Dedecms实现每5条新闻显示1条分割线
----

  1. <STYLE>
  2. .xian {
  3. BORDER-TOP: #333 1px dotted; MARGIN-TOP: 3px; FONT-SIZE: 0px; OVERFLOW: hidden; LINE-HEIGHT: 0; HEIGHT: 3px
  4. }
  5. .bg {
  6. BORDER-TOP: #ffffff 0px dotted; MARGIN-TOP: 0px; FONT-SIZE: 0px; OVERFLOW: hidden; LINE-HEIGHT: 0; HEIGHT: 0px
  7. }
  8. </style>


  9. {dede:arclist titlelen=80}
  10. <li>
  11. <span class=cgray>[field:pubdate function=strftime('%y-%m-%d',@me)/]</span> [field:typelink function='str_replace("a ","a class=ulink ",@me)'/]<a href="[field:arcurl/]">[field:title/]</a></li>

  12. [field:global runphp='yes' name=autoindex]
  13. $a="<li class='bg'>";
  14. $b="</li>";
  15. $c="<li class='xian'>";
  16. if ((@me % 5) == 0) @me = $c.@me.$b;
  17. else @me = $a.@me.$b;
  18. [/field:global]

  19. {/dede:arclist}

复制代码
红色部分   除5倍数,隔5条显示 割线, 可以随意改 10   8   6 都可以随自己喜欢
108312次点击
6个回复  |  直到 2008-9-6 15:25:18
   
  Reply   
冰客      2008-9-6 13:05:34
1.dede----------------这个主要是后台功能的文件夹
2.freelist--------------这个说实话,我也一直没有用到,做什么的我也不太清楚,大家就记住用不到就行了
3.html-----------------生成html的地方,当然也可以选择不生成在这里
4.include-------------这个是dedecms这个程序的核心功能文件所在,稍后会重点讲解里面的文件
5.member-----------会员管理功能的文件夹
6.plus--------------顾名思义,外挂吧,虽然不太贴切。呵呵,这里存放了一些起辅助作用的功能文件
7.setup------------这个就是安装文件了,对我们的作用不大
8.special----------专题,这个我用到的也不多,所以没怎么看过
9.templets----------存放模板的文件夹,稍后会讲解
10.upimg------------存放图片的文件夹
11.base.css---------基本样式表
12.index.php--------动态显示网站首页的程序文件
13.robots.txt---------告诉各大搜索引擎的蜘蛛,哪些目录是不允许它抓取的
dedecms这个程序的核心就是它的模板类include/pub_dedetag.php,其他所有的组成部分,都是围绕着它来做工作的。
可以说,大家研究透了这个文件的功能,基本上就把dede吃透了。我是这样觉得的,呵呵。
1.config_base.php----------------------------------系统配置文件一,数据库的链接信息和一些系统变量的设置
2.config_hand.php----------------------------------系统配置文件二,一些系统变量的设置
3.config_hand_bak.php----------------------------系统配置文件二的备份
4.inc_archives_view.php---------------------------生成文档html的
5.inc_arclist_view.php------------------------------生成栏目文档列表html的
6.inc_arcpart_view.php----------------------------生成栏目首页的,包括网站首页和频道页,不包括列表页
7.pub_collection.php-----------------------------------采集程序的主文件
8.pub_db_mysql.php-------------------------------数据库二次封装的类
9.pub_dedetag.php--------------------------------dede的模板类,是重点,要想二次开发,必须对这个的原理搞清楚
UID21 帖子83 精华0 积分10 阅读权限100 在线时间3 小时 注册时间2008-3-18 最后登录2008-8-27 查看详细资料
TOP

dedecms文件结构分析,有利于更好的二次开发

   
  Reply   
冰客      2008-9-6 14:03:50
无意中发现dede的后台模板管理不能用了,网了查了半天资料,结果一个解决的都没有发现,
经过本人仔细的查找,发现,其实是一个很简单的问题,而产生问题的原因,刚是没有安装到站点的根目录中

如果你也出现如下情况:
Fatal error: Call to a member function read() on a non-object in X:\root\dede\templets\file_manage_main.htm on line 29

手工解决办法:,在管理目录找到index_top.php,找开在96行找到如下代码:
<li id='d10'><a href="javascript:OpenMenu(10,'','file_manage_main.php?activepath=/templets',10)">模板管理</a></li>
改为:
<li id='d10'><a href="javascript:OpenMenu(10,'','file_manage_main.php?activepath=<? echo $cfg_cmspath?>/templets',10)">模板管理</a></li>
,当然,也可以在标记处直接写上实际地址.

呵呵,刷新页面,问题解决!

http://www.itsic.cn/article.asp?id=240

关于使用DEDECMS后台模板管理出错的解决办法

   
  Reply   
冰客      2008-9-6 14:18:13
打开inc_arclist_view.php
查找
//---------------------------------
//获取动态的分页列表
//---------------------------------


对比以下代码修改

  1. function GetPageListDM($list_len,$listitem="index,end,pre,next,pageno")
  2. {
  3. $prepage="";
  4. $nextpage="";
  5. $prepagenum = $this->PageNo-1;
  6. $nextpagenum = $this->PageNo+1;
  7. if($list_len==""||ereg("[^0-9]",$list_len)) $list_len=3;
  8. $totalpage = ceil($this->TotalResult/$this->PageSize);
  9. if($totalpage<=1 && $this->TotalResult>0) return "共1页/".$this->TotalResult."条记录";
  10. if($this->TotalResult == 0) return "共0页".$this->TotalResult."条记录";
  11. $maininfo = "共{$totalpage}页/".$this->TotalResult."条记录";

  12. $purl = $this->GetCurUrl();
  13. $geturl = "typeid=".$this->TypeID."&TotalResult=".$this->TotalResult."&";
  14. $gettypeid =$this->TypeID."-";
  15. //$hidenform = "<input type='hidden' name='typeid' value='".$this->TypeID."'>\r\n";


  16. //$hidenform .= "<input type='hidden' name='TotalResult' value='".$this->TotalResult."'>\r\n";

  17. $purl .= "?".$geturl;

  18. //获得上一页和下一页的链接
  19. if($this->PageNo != 1){
  20. $prepage.="<a href='list-".$gettypeid."$prepagenum.html'>上一页</a>";
  21. $indexpage="<a href='list-".$gettypeid."1.html'>首页</a>";
  22. }
  23. else{
  24. $indexpage="首页";
  25. }

  26. if($this->PageNo!=$totalpage && $totalpage>1){
  27. $nextpage.="<a href='list-".$gettypeid."$nextpagenum.html'>下一页</a>";
  28. $endpage="<a href='list-".$gettypeid."$totalpage.html'>末页</a>";
  29. }
  30. else{
  31. $endpage="末页";
  32. }
  33. //获得数字链接
  34. $listdd="";
  35. $total_list = $list_len * 2 + 1;
  36. if($this->PageNo >= $total_list) {
  37. $j = $this->PageNo-$list_len; www.MB5U_COM
  38. $total_list = $this->PageNo+$list_len;
  39. if($total_list>$totalpage) $total_list=$totalpage;
  40. }else{
  41. $j=1;
  42. if($total_list>$totalpage) $total_list=$totalpage;
  43. }
  44. for($j;$j<=$total_list;$j++){
  45. $listdd.="<a href='list-".$gettypeid."$j.html'>".$j."</a>";
  46. }
  47. $plist .= $maininfo.$indexpage.$prepage.$listdd.$nextpage.$endpage;
  48. return $plist;
  49. }
复制代码
打开inc_channel_unit_functions.php

查找
$reurl = $GLOBALS["cfg_plus_dir"]."/list.php?tid=".$typeid;



改成

  1. //$reurl = $GLOBALS["cfg_plus_dir"]."/list.php?tid=".$typeid;
  2. $reurl = "/list-".$typeid.".html";

复制代码
增加.htaccess文件

内容为

  1. <IfModule mod_rewrite.c>
  2. RewriteEngine On
  3. RewriteBase /
  4. RewriteRule ^(.*)list-([0-9]+)\.html$ $1/plus/list.php?tid=$2
  5. RewriteRule ^(.*)list-([0-9]+)-([0-9]+)\.html$ $1/plus/list.php?typeid=$2&PageNo=$3
  6. </IfModule>
复制代码

DEDECMS列表伪静态修改-DEDECMS教程

   
  Reply   
中国南海      2008-9-6 15:09:42
作者:木许
css代码部分

  1. <style type="text/css">
  2. <!--
  3. .downtop {
  4. FLOAT: left; OVERFLOW: hidden; WIDTH: 218px; HEIGHT: 278px
  5. }
  6. .downtop UL.text {
  7. MARGIN: 0px 10px; WIDTH: 198px; PADDING-TOP: 5px
  8. }
  9. .downtop UL.text LI {
  10. WIDTH: 198px
  11. }
  12. .downtop UL.text SPAN {
  13. DISPLAY: block; FLOAT: left
  14. }
  15. .downtop UL.text SPAN.num {
  16. MARGIN-TOP: 4px; PADDING-LEFT: 1px; FONT-WEIGHT: bold; FONT-SIZE: 10px; WIDTH: 18px; LINE-HEIGHT: 12px; HEIGHT: 13px; TEXT-ALIGN: center;COLOR: #fff; BACKGROUND-COLOR: #b7b7b7
  17. }
  18. .downtop UL.text LI SPAN.active {
  19. BACKGROUND-COLOR: #7abdff
  20. }
  21. .downtop UL.text SPAN.tit {
  22. PADDING-LEFT: 10px; OVERFLOW: hidden; WIDTH: 168px; WHITE-SPACE: nowrap; HEIGHT: 21px
  23. }

  24. -->
  25. </style>
复制代码
dede标签部分代码

  1. <DIV class="downtop border">
  2. <UL class=text>
  3. {dede:arclist orderby=pubdate type='commend.' titlelen='26' row='10' channel=3}
  4. <LI>[field:global runphp='yes' name=autoindex]
  5. $a="<SPAN class='num active'>";
  6. $b="</SPAN>";
  7. $c="<SPAN class='num'>";
  8. if (@me > 3) @me = $c.@me.$b;
  9. else @me = $a.@me.$b;
  10. [/field:global] <SPAN class=tit><A title="[field:title/]"
  11. href="[field:filename/]">[field:title/]</A></SPAN></LI>
  12. {/dede:arclist}
  13. </UL>
  14. </DIV>

复制代码

给dedecms文章列表加上序号效果

   
  Reply   
冰客      2008-9-6 15:19:07
2G3393392Z.jpg

  1. {dede:sql sql="SELECT aid,username,urlindex,arctitle,url,msg FROM `dede_feedback` where ischeck=1 ORDER BY `dtime` DESC  LIMIT 0 , 30"}
  2. [field:username runphp='yes']if(@me=='guest')@me=游客[/field:username]对<a href="[field:url/]">[field:arctitle function='cn_substr(@me,20)'/]</a>的评论<br/>
  3. <a href="/plus/feedback.php?arcID=[field:aid/]&urlindex=[field:urlindex/]">[field:msg/]</a><br/>
  4. {/dede:sql}
复制代码
LIMIT 0 , 30  的30是调用的条数
[field:arctitle function='cn_substr(@me,20)'/] 里面的20是标题显示的字符数
至于显示的样式大家根据自己的模板进行修改吧

DEDE仿DoNews右侧最新评论的代码

   
  Reply   
冰客      2008-9-6 15:25:18
第一步 添加责任编辑字段
  在5.1中给模型添加一个新字段是一件很简单的事情,我们现在就来看看如果添加一个责任编辑的字段。
  首先我们打开【频道管理】—【内容模型管理】 在【文章模型】后面点击【修改】模型
2F001041546.jpg

进来以后我们点击【添加新字段】字段的内容大家按照我下面图片里面的输入就可以了
2F0013c023.jpg
完成这一步我们就完成了添加字段的步骤。
第二步 修改程序(嫌麻烦的直接下载附件然后解压到dede目录)
我们需要修改3个文件来实现在编辑文章和审核文章的时候插入当前管理员的信息到我们新建的字段中。
打开dede/archives_do.php
  查找

  1. CheckPurview('a_Check,a_AccCheck,sys_ArcBatch');
复制代码
替换为

  1. $redaktoro = $cuserLogin->getUserName();
  2. CheckPurview('a_Check,a_AccCheck,sys_ArcBatch');

复制代码
再查找

  1. $dsql->ExecuteNoneQuery(" Update `dede_full_search` set url='$pageurl' where aid='$aid'");
复制代码
替换为

  1. $dsql->ExecuteNoneQuery(" Update `dede_full_search` set url='$pageurl' where aid='$aid'");
  2. $dsql->ExecuteNoneQuery(" Update `dede_addonarticle` set redaktoro='$redaktoro' where aid='$aid'");
复制代码
然后保存。
再打开dede/action/article_eidt_action.php
查找

  1. $addQuery = "Update `{$aTables['addtable']}` set typeid='$typeid',body='$body'{$inadd_f} where aid='$ID'";
复制代码
替换为

  1. $redaktoro = $cuserLogin->getUserName();
  2. $addQuery = "Update `{$aTables['addtable']}` set typeid='$typeid',body='$body',redaktoro='$redaktoro' where aid='$ID'";

复制代码
忘了还有一个文件dede/action/article_add_action.php
查找

  1. $dsql->SetQuery("INSERT INTO `{$cts['addtable']}`(aid,typeid,body{$inadd_f}) Values('$arcID','$typeid','$body'{$inadd_v})");

复制代码
替换为

  1. $redaktoro = $cuserLogin->getUserName();
  2. $dsql->SetQuery("INSERT INTO `{$cts['addtable']}`(aid,typeid,body,redaktoro) Values('$arcID','$typeid','$body','$redaktoro')");

复制代码
然后保存就可以了。

我们就可以在文章内容页中使用{dede:field name='redaktoro '/}进行调用

用此方法修改后有个不足就是不能对文章模型添加其他字段。

dede责任编辑功能的简单实现方法

添加一条新回复
您需要登录后才可以回帖 登录 | 成为会员 新浪微博登陆

标签云|手机版|科技先生 ( 京ICP备07036130号 Powered by Discuz! X )

GMT+8, 2024-5-19 05:31