怎么解决织梦dedecms生成栏目HTML缓慢
比如我们在首页需要调用指定栏目ID为6的栏目下的文章,而该栏目下有一个ID为12的子栏目,通常我们在首页的调用代码如下:
<ul>
{dede:arclist typeid='8' row='10' col='1' orderby='hot'}
<li><a href='[field:arcurl/]'>[field:shorttitle/]</a></li>
{/dede:arclist}
</ul>
但是调用后,此栏目下的ID为12的子栏目里面的内容也会出现在列表里,如果不想要子栏目的内容出现在列表里很简单,这个在后台就有设置,具体设置如下:
登录织梦管理后台,在“系统基本参数”——“性能选项”——“上级列表是否包含子类内容:”这个选项选择“否”就行了。
当然这个是有前提的,这个只能说是调用列表页,如果你调用的栏目是封面页,那么肯定会取子栏目的数据,如果你调用的是列表页,那么肯定是可以的。
DedeCMS(织梦内容管理系统)是织梦团队开发的一套网站管理系统(CMS)。
这个系统把一个网站的内容(文字,,等等)与网站的组件分离开来,可以将各个页面连接到一起,可以控制页面的显示。通过这个系统,可以方便的管理,发布,维护网站的内容,而不再需要硬性的写HTML代码或手工建立每一个页面。
dedecms的这条代码在所选栏目中的文档内容不足两页的情况下,会自动转化为“共1页X条记录”的格式,你只需把文档数目增加到一页以上就可以了。
简单点说就是文档数目还达不到翻页的量,多加点文档让它一页显示不完,就自然可以了。
望采纳。
织梦dedecms生成栏目HTML缓慢的一个可能原因及解决方法:
1、找到dede\makehtml_list_actionphp 文件
在dede\makehtml_list_actionphp 的文件行 101 处
//$lv->CountRecord();
有这样一处注释掉的代码,这一个计算某个栏目类有多少分页的代码居然不运行,从而导致后面一行
if($lv->TypeLink->TypeInfos[‘ispart’]==0 && $lv->TypeLink->TypeInfos[‘isdefault’]!=-1) $ntotalpage = $lv->TotalPage;
else $ntotalpage = 1;
导致这里面的 $ntotalpage 根本得不到值 (NULL),因为 $lv->TotalPage 是在$lv->CountRecord 函数里面赋值
,从而想到,取消此处注释,让栏目生成HTML 分批进行
2、尽量不要一次性生成过多
在生成后台我们可以安排日期进行生成或者安排id进行生成,这样比较合理,不然线程过多,或者时间过程,很容易导致卡死!
一共是两大步,
首先是常规选项。常规选项中需要改动的地方不大,除了栏目标题和路径,其他的完全可以不改。
修改栏目的常规选项
可以选择为频道封面
当然,因为单页类栏目本身是不用发表文章的,所以栏目属性使用“频道封面”倒是似乎更加贴切一些,以后更新的时候可以一目了然。
其实不进行修改也是可以的,因为这里并不关键,关键的是下面的高级选项的设置。
其次是高级选项。高级选项中,有设置模板的地方。这里就需要注意了,因为不管是我们选用“频道封面”还是“最终栏目列表”,其默认的模板都是无法实现我们要制作的单页内容的,那么我们就需要自定义一个模板。假设我们使用singllepagehtm来实现单页面的调用,那么我们就需要对其模板进行设置,如果是选频道封面就修改频道封面,反之则修改最终栏目列表。以“最终栏目列表”为例,如图:
高级选项中修改模板设置
最后是栏目内容。栏目内容,就是我们实现动态更新的栏目内容了。我们看到,dedeCMS提示我们栏目内容是替代原来栏目单独页的更灵活的一种方式,可在栏目模板中用{dede:fieldcontent/}调用,通常用于企业简介之类的用途,所以我们只要在这里添加企业简介之类的内容,就可以了。而不用笨拙的去修改静态页面。
一切妥当之后,我们进行第二大步——修改singlepagehtm模板。
修改模板很简单,我们找到templets路径下相应模板分类的singlepagehtm,然后我们对其进行编辑,我们看到,原始的singlepagehtm是调用的{dede:fieldbody/}这里是调用普通文章的内容,我们要做单页模板,只要修改调用的地方为{dede:fieldcontent/}就完事大吉了。
修改模板的调用内容
我们看到还有个相关页面,这里我们弃之不用倒显得浪费了。
可以利用起来的相关页面
我们也可以对其进行一番改造,调用处相关的一些单页类的栏目来起到增加内链的作用。调用很简单,假设我们企业简介的ID为1,其他单页类栏目ID分别为2、3、4的话,我们可以这样写来实现这些栏目的调用:
{dede:channelartlist typeid='9,12'}
{dede:type}
[field:typename/]
{/dede:type}
{/dede:channelartlist}
保存,生成栏目就可以看到效果了。当然默认的模板是有些寒酸,不过我们可以自己制作模板让其更加美观一些,那就看你CSS运用的怎么样了!我们看一个效果比较美观的:
通过栏目内容调用的单页面
如果你有更好的方法来制作可以动态更新的单页的话,欢迎大家留言板留言,本站感激之至。
好今天的dede每日一课就到这里,欢迎大家关注其他的中国SEO的dede建站每日一课的内容。同时,我们热烈欢迎会员和学员投稿,具体的投稿方式为,先注册会员,然后点击发布文章即可,如果通过审核发布成功,本站将会有小礼品相送哦!~
dede数据库字段说明,dede_addonarticle 附加文章表,操作方法如下:
1、首先登录dedecms网站后台,在“核心”模块下找到“网站栏目管理”,如下图所示。
2、然后在“栏目管理中”增加顶级栏目。
3、接着在常规选项中填写栏目名称,文件保存目录和目录相对位置。
4、栏目内容可填写可不填写,如果填写,可以在栏目页通过“{dede:fieldcontent}”调用。
5、设置好后,点击保存,这样就成功新建了一个顶级栏目,如下图所示就完成了。
两种可能。
第一种:你以前的栏目内容模型选的是soft或者其他的,然后你发表了一些文章,再之后你将栏目内容模型变更为article或者不同于soft的其他内容模型。那么你会看到栏目中有文档数,但是点进去没有文档。
第二种:曾经通过sql语句直接删除过dede_article或者dede_archives或者dede_arctiny中的记录,这三个表是有关联的,如果要通过sql语句删除内容,一定要同时将这三个表中的同一条关联内容全部删除,否则就会造成这种情况。
两种问题最终都可以通过sql语句解决,这就是原因,当然你通过后台提供的功能解决了是最简单的,恭喜你。
dedecms具有很好的生成HTML功能,在后台主页面中也添加了一键更新功能,不过,由于DEDECMS后台功能比较完善,可以自动添加自定义文档,而这些文档的更新,必须在单页文档管理栏目下才能完成,点击生成/一键更新无法更新
因此我在后台的文件中填上了以下代码,使得dede自定义文档在更新网站时能够自动完成更新
后台文件 默认/dede/ 目录下
makehtml_allphp
更改位置
144行:源文件
else if($step==10)
{
$adminID = $cuserLogin->getUserID();
$mkcachefile = DEDEDATA"/mkall_cache_{$adminID}php";
@unlink($mkcachefile);
OptimizeData($dsql);
ShowMsg("完成所有文件的更新!","javascript:;");
exit();
}//make step
修改为以下代码后
else if($step==10)
{
include_once(DEDEINC"/arcsgpageclassphp");
$dsql->Execute("ex","SELECT aid FROM `#@__sgpage` ");
$i = 0;
while($row = $dsql->GetArray("ex"))
{
$sg = new sgpage($row['aid']);
$sg->SaveToHtml();
$i++;
}
$adminID = $cuserLogin->getUserID();
$mkcachefile = DEDEDATA"/mkall_cache_{$adminID}php";
@unlink($mkcachefile);
OptimizeData($dsql);
ShowMsg("完成所有文件的更新!","javascript:;");
exit();
}//make step
通过更改以上代码,既可以使得dedecms的一键更新成为真正意义上的一键更新
0条评论