dedecms自动全站更新
来源:admin 网络用户发布,如有版权联系网管删除 2015-10-23
dedecms自动全站更新
(2011-08-04 12:01:32) 已知dedecms在发布文章时可以自动更新首页和栏目以及上下文章,具体方法:系统->系统基本参数->性能选项->发布文章后马上更新网站主页,发表文章后马上更新相关栏目,发表文章后马上更新上下篇,或者直接修改对应数据表dede_config里的数据,分别对应:cfg_makeindex,cfg_make_andcat,cfg_make_prenext
但是dedecms在修改和删除文章时并不会自动更新首页和栏目,而这篇文章正是为了解决这个问题.
1.dedecms修改文章时自动更新首页和栏目/全站
dede(默认管理后台)->article.edit.php 在$msg="请选择你的后续操作:....(省略)".GetUpdateTest();
加上.GetUpdateTest(),在修改dedecms文章的时候便会自动更新首页以及相关栏目和上下文了
2.dedecms删除文章时自动更新首页,相关栏目以及上下文
和修改文章一样,dede(默认管理后台)->archive_do.php 找到 if($dopost=="delArchives")并把其下的ShowMsg("成功删除指定的文档!",$ENV_GOBACK_URL);注释掉,然后在exit()之前加上echo GetUpdateTest();
之所以要注释掉ShowMsg();是因为GetUpdateTest()是框架跳转来一次执行更新任务(src='$jumpUrl').首先更新上下文,然后更新首页,相关栏目等.在GetUpdateTest()还没更新完时,ShowMsg就已经开始跳转了.
第一种解决方案:ShowMsg设定足够长的时间
ShowMsg("成功删除指定的文档!",$ENV_GOBACK_URL,'',5000);//5秒应该足够
第二中解决方案:在全部更新完成后更改父框架的src
dede->task_do.php 查找ShowMsg("完成栏目:{$tid} 更新!<br /><b>完成栏目更新任务,完成所有更新任务!</b>", "close::tgtable");
再其之后加上以下代码:
echo "<script type='text/javascript'>window.parent.parent.document.getElementByIdx_x_x('main').src='{$ENV_GOBACK_URL}';</script>";
而且GetUpdateTest()在GET传值的时候是要用到$typeid和$arcID,所以要在archives_do.php中if($dopost=="delArchives")之后加上以下代码:
if(!isset($typeid)){
$row=$dsql->GetOne("select `typeid` from `dede_archives` where id='$aid';");
$typeid=$row['typeid'];
$arcID=$aid;
}
而对于$ENV_GOBACK_URL这个变量在archives_do.php中这样定义
$ENV_GOBACK_URL = (empty($_COOKIE['ENV_GOBACK_URL']) ? 'content_list.php' : $_COOKIE['ENV_GOBACK_URL']);
原创很辛苦~转载时务必保留原链~颜培攀
查看评论 回复