<form id="ivb0m"><span id="ivb0m"><track id="ivb0m"></track></span></form>

  • <nav id="ivb0m"></nav>

            排除法解决[织梦dedecms生成栏目没反应]问题 揪出罪魁祸首GetTopTypename()!

            好久没用织梦dedecms了,最近有帮客户制作一网站,客户原先程序就是dedecms,想调整网站结构以适应seo,且同时更改网站风格,需求既如此,那就在现有的dedecms网站基础上进行改版就好。

            是否长久不用织梦的原因,在制作过程中,总会突然冒出一两个小问题,好在简单,一搜索,网上都有答案,不料,在更新栏目页时,却出现了一个较大的问题,就是生成栏目页时没有反应,像一条死狗一样,你怎么戳它,它都不会吭声。

            dedecms生成栏目页时没有反应

            这个问题很严重,如果不能解决的话,前边的工作就会全功尽弃!

            是客户网站dedecms程序版本低的原因导致?

            dedecms程序版本低

            但几年前哥用的版本也差不多哎!

            按网上的教程,见百度经验:dedecms织梦更新生成栏目没反应问题总汇,操作了一遍,发现还是没有解决??蠢床⒉皇前姹镜偷脑?。

            重新把备份的客户网站dede后台目录再传至ftp进行全部覆盖,结果还是无反应。

            那应该不是程序本身的问题了,试着去模板中找找原因吧。

            到底是程序问题还是模板的问题,也没有那么清楚,先做一个测试来判定。

            在织梦dedecms后台把某栏目(使用频道模型)对应的频道模板换成default默认的路径(注:新制作的网站模板命名不叫default,默认的还在),发现可以生成。

            频道模板设置

            (注:上图,请将{style}换成default,进行测试后再换回来)

            发现栏目能生成,只是因为使用了default默认模板,打开是一片杂乱。此外,哪怕是没有对应的模板文件,生成栏目时也会出现错误告知。

            织梦栏目生成错误信息

            那说明程序本身没有问题,这个锅不要让程序来背,判断是由于模板未知原因导致。

            --------------------------

            知道导致问题的关键所在后,就易寻找到答案,无非在模板中的代码。在百度知道这篇:dede后台更新栏目 点击开始生成html没反应为什么?说到把一个带有“GetTopTypename(@me)”的代码删除就好!那就去find GetTopTypename,发现,还真有。

            于是将其注释掉,上传模板再去更新栏目,还是纹丝不动,没有一点反应。dedecms注释掉的代码

            来回几次折腾,发现一个问题:

            就是dedecms的标签代码虽然把它注释了,可是它还会继续工作(你可以查看生成的网页文件源代码来观察),不像html那样,注释就不解析了。

            于是直接删除带有GetTopTypename的标签代码,换成:

            {dede:field name='typename' /}

            重新更新栏目,发现好了,可以生成,恢复正常。

            织梦dedecms更新栏目正常

            ---------------------------------

            但又发现一个问题。如图:

            织梦栏目逻辑不对

            严格一点的话,这个显示有点儿不太符合逻辑??!

            后台的栏目结构是这样的。

            织梦dedecms栏目结构

            看来{dede:field name=’typename’ /}只能显示它自己的名字,不能显示上属层级的名称。

            这就要重新审核GetTopTypename()的作用了。

            GetTopTypename()作用就是获得子栏目的上层栏目的名称。给它一个栏目id,就能逆流而上,回溯去找这个id的上一级领导或上级领导的领导,直到找到一个为止。如下:

            1.复制如下代码至include/common.func.php的最下方。

            //获取顶级栏目名
            function GetTopTypename($id)
            {
            global $dsql;
            $row = $dsql->GetOne(“SELECT typename,topid FROM `#@__arctype` WHERE id= $id”);
            if ($row[‘topid’] == ‘0’)
            {
            return $row[‘typename’];
            }
            else
            {
            $row1 = $dsql->GetOne(“SELECT typename FROM `#@__arctype` WHERE id= $row[topid]”);
            return $row1[‘typename’];
            }
            }

            2.上传至网站空间。

            3.测试是否功能正常,且不影响其他功能使用。

            要如何才能让GetTopTypename()生效而又不会造成栏目更新时无反应的问题,方法就是上述三步。

            经过这一操作,客户网站的栏目层次逻辑结构显示得清楚明白。

            网站的栏目层次逻辑结构

            GetTopTypename()并不是dedecms自带的方法,如果没有预先定义这个GetTopTypename()功能函数,想发挥作用是不成的,反而会造成织梦dedecms生成栏目没反应的莫名问题——因为生成html页面的后台程序不能识别模板中的GetTopTypename(),不过,在你有需求的时候,GetTopTypename()能弥补dedecms自带功能的不足,发挥其”寻祖归宗”的作用。

            是为记,以备用。

            本文链接:肖运华 » 网站策划设计制作优化 » 排除法解决[织梦dedecms生成栏目没反应]问题 揪出罪魁祸首GetTopTypename()!
            转载请注明:http://www.gipsh.com/2075.html

            发表评论

            电子邮件地址不会被公开。

            极速赛车10选1稳_Welcome