织梦内容页模板修改
织梦cms的栏目有内容,生成完静态内容变没了,用SQL快速解决
大家好,我是擅长快速建站的兼职小哥,给客户建网站的时候,有一些栏目内容是原样采集过来的,也就是说参照的网站本身就有bug,网站栏目的专题页面保存在content字段中,有的栏目这个字段填写了,有的栏目这个字段没有填写内容,如果后面建了一个typedir和之前栏目和typedir相同,并且后面栏目和content为空,那么整个专题就会变成空白页面。
那个我们这个问题的第一个解决方案,就是将网址相同的第二个typedir相同栏目的栏目属性选择为外部链接。这样就做了一个专题页面的镜像,比如一个专题属于即整形分类,又属于活动专题的分类时,会经常用到这种镜像操作,这个时候我们填写内容的时候,就到第一个栏目里填写就对了。
第二种方法是用SQL语句删除网址相同的栏目,如果客户网站是没有安装phpmyadmin,可以上传一个单文件sql管理工具Adminer,这是一个类似phpmyadmin和数据库操作工具,可以执行sql语句,在我们执行sql语句之前,要使用织梦后台的备份功能把数据库整体做一下备份。
我们先说一下删除重复数据的原理,这个删除重复数据的需求经常出现在面试题中,您可以记录收藏一下。
select id from dede_arctype where id in (select min(id) as id from dede_arctype where content<>'' and ispart<>2 group by typedir having count(id) > 1)
这条SQL语句会筛选出重复的数据记录,以id最小的为准,那么后面的数据将不显示。
select id from dede_arctype where id in (select max(id) as id from dede_arctype where content<>'' and ispart<>2 group by typedir having count(id) > 1)
这条SQL语句名筛选出重复的数据记录,以id最大的为准,后面的数据不显示,我们在这里选择执行这条语句。
我们能否像其它数据库一样,外面再嵌套一层语句,将重复数据直接删除呢?试一下
delete FROM `dede_arctype` WHERE `id` in (select id from dede_arctype where id in (select max(id) as id from dede_arctype where content<>'' and ispart<>2 group by typedir having count(id) > 1))
mysql数据库报错了。我们还是只把mysql当成一个绿色小巧的数据库工具吧,我们在mysql-front中将重复的id复制出来,再在文本编辑器里将回车替换成逗号
最后拼接成这样的语句,在客户服务器上的Adminer接口上执行这条删除指令,即可。
delete from dede_arctype where id in(37,197,198,201,203,205,208,209,210,211,218,225,227,230,232,235,241,242,243,254,255,256,259,260,265,267,268,270,271,272,274,275,276,277,278,279,280,282,283,284,285,286,287,288,289,291,292,293,294,295,296,298,299,302,304,305,306,310,311,312,313,314,315,316,317,319,320,321,322,325,326,329,335,342,343,344,345,346,347,348,349,350,351,352,353,354,360,361,363,367,368,370,374,377,381,383,385,386,387,410,413,415,417,418,420,421,422,423,424,425,426,428,429,430,431,468,532)
注意用完Adminer或者phpmyadmin之后,一定要删除这两个软件,以免留下安全隐患。
欢迎关注我的头条号,兼职小哥,关注后您可以点击底部的快速建站菜单,与我联系!
织梦DEDECMS生成静态手机页面
工具/原料
dedecms 芒果源码
实现wap手机静态生成
一、添加后台导航栏目链接
1 打开dede/inc/inc_menu.php,在146行下面添加代码:
<m:item name='更新WAP主页' link='makehtml_homepagewap.php' rank='sys_MakeHtml' target='main' /> <m:item name='更新WAP栏目' link='makehtml_listwap.php' rank='sys_MakeHtml' target='main' /> <m:item name='更新WAP文档' link='makehtml_archiveswap.php' rank='sys_MakeHtml' target='main' />
二、更新WAP主页
1.复制文件dede/makehtml_homepage.php,重命名为makehtml_homepagewap.php2.打开makehtml_homepagewap.php,找到最后一行
include DedeInclude(‘templets/makehtml_homepage.htm’);
修改为
include DedeInclude(‘templets/makehtml_homepagewap.htm’);
3.复制文件dede/templets/makehtml_homepage.htm,重命名为makehtml_homepagewap.htm
4打开dede/templets/makehtml_homepagewap.htm 修改21行
<form action=”makehtml_homepage.php” method=”post” name=”form1″ target=”stafrm”>
修改为
<form action=”makehtml_homepagewap.php” method=”post” name=”form1″ target=”stafrm”>
3
4.修改36行,指定生成WAP主页模板
<input name=”templet” type=”text” id=”templet” style=”width:300″ value=”default/wap.htm”>
4
5.修改48行,指定生成WAP主页路径
<td height=”20″ valign=”top” bgcolor=”#FFFFFF”><input name=”position” type=”text” id=”position” value=”../m/index.html” size=”30″>
6.修改69~70行,“checked”移到“不保存当前选项”,系统默认是提交保存主页模板和路径数据的
<input name=”saveset” type=”radio” value=”0″ class=”np” checked>
不保存当前选项
<input name=”saveset” type=”radio” class=”np” value=”1″ >
保存当前选项
END
三、更新WAP栏目
1.复制文件dede/makehtml_list.php,重命名为makehtml_listwap.php
2.打开makehtml_listwap.php,找到最后一行
include DedeInclude(‘templets/makehtml_list.htm’);
修改为
include DedeInclude(‘templets/makehtml_listwap.htm’);
3.复制文件dede/templets/makehtml_list.htm 重命名为makehtml_listwap.htm ,修改第10行
<form name=”form1″ action=”makehtml_list_action.php” method=”get” target=’stafrm’>
修改为
<form name=”form1″ action=”makehtml_listwap_action.php” method=”get” target=’stafrm’>
4.复制dede/makehtml_list_action.php 重命名makehtml_listwap_action.php
require_once(DEDEINC.”/arc.listview.class.php”);
修改为
require_once(DEDEINC.”/arc.listwapview.class.php”);
5.复制include/arc.listview.class.php 重命名为arc.listwapview.class.php
if(!file_exists($tempfile))
{
$tempfile = $GLOBALS[‘cfg_basedir’].$GLOBALS[‘cfg_templets_dir’].”/”.$GLOBALS[‘cfg_df_style’].”/list_default.htm”;
}
if(!file_exists($tempfile)||!is_file($tempfile))
{
echo “模板文件不存在,无法解析文档!”;
exit();
}
替换为
$tempfile = $GLOBALS[‘cfg_basedir’].$GLOBALS[‘cfg_templets_dir’].”/”.$GLOBALS[‘cfg_df_style’].”/list_wap.htm”;
修改栏目储存目录,在658-659行后面添加代码,生成的栏目文件保存在文件夹“m”下面
$typedir = MfTypedir(‘/m/’.$typedir);
修改
function GetMakeFileRule($typeid,$wname,$typedir,$defaultname,$namerule2)
{
$typedir = MfTypedir(‘/m/’.$typedir);
if($wname==’index’)
代码345-371行是把list第一页复制为首页index.html的,修改354行修改复制保存路径,在$this->Fields[‘typedir’])前面添加’/m/’. 如下面10行所示
if($startpage==1)
{
//如果列表启用封面文件,复制这个文件第一页
if($this->TypeLink->TypeInfos[‘isdefault’]==1
&& $this->TypeLink->TypeInfos[‘ispart’]==0)
{
$onlyrule = $this->GetMakeFileRule($this->Fields[‘id’],”list”,$this->Fields[‘typedir’],”,$this->Fields[‘namerule2’]);
$onlyrule = str_replace(“{page}”,”1″,$onlyrule);
$list_1 = $this->GetTruePath().$onlyrule;
$murl = MfTypedir(‘/m/’.$this->Fields[‘typedir’]).’/’.$this->Fields[‘defaultname’];
//如果启用远程发布则需要进行判断
if($cfg_remote_site==’Y’&& $isremote == 1)
{
//分析远程文件路径
$remotefile = $murl;
$localfile = ‘..’.$remotefile;
$remotedir = preg_replace(‘/[^\/]*\.html/’, ”,$remotefile);
//不相等则说明已经切换目录则可以创建镜像
$this->ftp->rmkdir($remotedir);
$this->ftp->upload($localfile, $remotefile, ‘acii’);
}
$indexname = $this->GetTruePath().$murl;
copy($list_1,$indexname);
}
}
return $murl;
}
四、更新WAP文档
1.复制dede/makehtml_archives.php 重命名为makehtml_archiveswap.php 修改最后一行
include DedeInclude(‘templets/makehtml_archives.htm’);
修改为
include DedeInclude(‘templets/makehtml_archiveswap.htm’);
2.复制dede/templets/makehtml_archives.htm 重命名为makehtml_archiveswap.htm 修改13行form提交地址
<form name=”form1″ action=”makehtml_archives_action.php” method=”get” target=’stafrm’>
修改为
<form name=”form1″ action=”makehtml_archiveswap_action.php” method=”get” target=’stafrm’>
3.复制dede/makehtml_archives_action.php 重命名为makehtml_archiveswap_action.php 修改13行
require_once(DEDEINC.”/arc.archives.class.php”);
修改为
require_once(DEDEINC.”/arc.archiveswap.class.php”);
4.复制include/arc.archives.class.php 重命名为arc.archiveswap.class.php
修改文章页储存位置,476行,站点真实路径后面添加”/m/” 如下第9行所示:
/**
* 获得站点的真实根路径
*
* @access public
* @return string
*/
function GetTruePath()
{
$TRUEpath = $GLOBALS[“cfg_basedir”].’/m/’;
return $TRUEpath;
}
修改获得模板文件位置,屏蔽528-536行代码,后面添加调用模版路径
/* if(!empty($this->Fields[‘templet’]))
{
$filetag = MfTemplet($this->Fields[‘templet’]);
if( !preg_match(“#\/#”, $filetag) ) $filetag = $GLOBALS[‘cfg_df_style’].’/’.$filetag;
}
else
{
$filetag = MfTemplet($this->TypeLink->TypeInfos[“temparticle”]);
}*/
$filetag = $GLOBALS[‘cfg_df_style’].’/’.’article_wap.htm’;
是将上面的代码注释掉
注意事项
DEDE手机目录是M