DedeCms织梦二次开发网-Dede织梦工场-DedeCms教程-Dede二次开发-DedeCms二次开发-Dede模块开发-Dede插件开发-Dede标签开发DedeCms织梦二次开发网

DedeCms织梦批量导入关键词

摘要:适合做seo內链的同学,批量导入时如果新添加的关键字数据中存在则过滤。

操作教程

1、准备好要导入的关键词文件,txt文档,格式如下

DedeCms织梦批量导入关键词

注意:无论你的程序是gbk还是utf8编码,txt文档务必要用utf8无BOM格式。

2、打开 \dede\article_keywords_main.php 找到

if(empty($keyword))

在它的上面加入

//文件导入式 批量添加关键词
elseif($dopost == 'fileKeywords')
{
    if(is_uploaded_file($filename)) 
    {
        $newFileName    = date('YmdHis', time() ) .'.txt';
        $newDirPath     = $cfg_basedir . '/uploads/keywords';
        $newFilePath    =  $newDirPath .'/'.$newFileName;
        //目录不存在则创建
        if(!file_exists( $newDirPath )) 
        {
            mkdir($newDirPath, 0777, true);
        }
        move_uploaded_file($filename, $newFilePath);
        //读取上传的文件
        $handle = fopen($newFilePath, 'r') or ShowMsg("上传文件读取失败",-1); 
        $keyArr = array();
        if($handle) 
        {
            while(!feof($handle)) 
            {
                $buffer = fgets($handle, 4096);
                $buffer = str_replace(',', ',', $buffer);
                $buffer = str_replace(array("\n"), '', $buffer);
                $buffer = trim($buffer);
                if(!empty($buffer))
                {
                    $keyArr[] = explode(',', $buffer);
                }
            }
            fclose($handle);
            @unlink( $newFilePath );
        }
        //取出数据库所有的关键词,和新添加关键词比较,如果新添加的关键字,数据中存在则过滤
        $dsql->SetQuery( "SELECT `keyword` FROM `SzsFox_keywords` " );//将SQL查询语句格式化
        $dsql->Execute();//执行SQL操作
        //通过循环输出执行查询中的结果
        $dataKeyArr = array();
        while($row = $dsql->GetArray() )
        {
            $dataKeyArr[] = $row['keyword'];
        }
        //拼接mysql 语句
        $i = 0;

        foreach($keyArr as $k => $v) 
        {
            $key = trim( $v[0] );
            //把读取txt文档的数据转utf-8编码
			$key = ($cfg_soft_lang != 'utf-8') ? iconv( "UTF-8", "gb2312//IGNORE" , $key) : $key;
            //如果数据库中存在该关键词,则跳出本次循环。 注意: keyword字段在数据库中长度16字符,需要更更长点
			//ALTER TABLE `SzsFox_keywords` CHANGE `keyword` `keyword` CHAR( 255 ) NOT NULL DEFAULT ''
            if( in_array( $key, $dataKeyArr ) )
                continue;
            //拼接mysql语句
            $rpurl  =   trim($v[1], ' ');
            $rank   =   trim($v[2], ' ');
            $sql = "INSERT INTO `SzsFox_keywords`  ( keyword, rank, sta, rpurl ) VALUES  ( '{$key}', {$rank}, 1, '{$rpurl}')";
            $res = $dsql->ExecuteNoneQuery2($sql);
            if( $res != -1)
                $i ++;
        }
        //如果导入的文件所有的关键词都添加过了,则停止执行;
        if(empty($i))
        {
            ShowMsg("警告:你提交的关键词,早已经添加过了!!!",-1); 
            die();
        }
        else
        {
            ShowMsg("你成功导入{$i}条数据",-1); 
        }
    }
}
//清空关键字表里的所有数据 
else if($dopost == 'delAll')
{
   $dsql->ExecuteNoneQuery('TRUNCATE TABLE `SzsFox_keywords`') ? ShowMsg("你已成功清除所有的关键词!!", $ENV_GOBACK_URL ) : ShowMsg("清除关键词失败",-1) ;

}

3、打开 \dede\templets\article_keywords_main.htm 找到

</script>

在它的上面加入

//删除选中的
function delSel()
{

  var celements = document.getElementsByClassName('del');
  for( i = 0; i < celements.length; i++ ) 
  {
    if(!celements[i].checked) 
      celements[i].checked = true;
    else 
      celements[i].checked = false;
  }

}
function delAll ()
{
  if( confirm( '你确定要清空所有的关键词,清除以后不可恢复!!' ) )
  {
    location.href="article_keywords_main.php?dopost=delAll";
  }
}

继续找到

<form name='form1' action="article_keywords_main.php">

在它的上面加入

<form action="article_keywords_main.php" method="post" enctype="multipart/form-data">
	<td width="40%"  style="padding-left:10px;">
		<strong>关键词维护</strong>
		<strong>&nbsp;&nbsp;</strong>
		<strong><input type="file"  name="filename"></strong>
		<input type="hidden"  name="dopost"  value="fileKeywords" />
		<strong><input type="submit" value="提交"></strong>
	</td>
</form>

继续找到

<input type='checkbox' name='isdel_{dede:field.aid/}' class='np' value='1' />

改成

<input type='checkbox' name='isdel_{dede:field.aid/}' class='np del' value='1' />

继续找到

 <td height="28" colspan="6">
	    &nbsp;
	    <input type="button" name="dl1" class="coolbg np" value="反选" onClick="selAll()" />
	    &nbsp;
	    <input type="button" name="dl2" class="coolbg np" value="保存更改" onClick="this.form.submit();" />
	  </td>

改成

<td height="28" colspan="4">
	&nbsp;
	<input type="button" name="dl1" class="coolbg np" value="反选" onClick="selAll()" />
	&nbsp;
	<input type="button" name="dl2" class="coolbg np" value="保存更改" onClick="this.form.submit();" />
</td>
<td height="28" align="center" >
	<input type="button"  value="清空所有关键词" onClick="delAll()" />
	&nbsp;
	<input type="button" name="dl1" class="coolbg np" value="删除全选" onClick="delSel()" />
</td>

完成。

DedeCMS织梦工场QQ群

群号(23871657) DedeCMS织梦工场
只适用于讨论dedecms二次开发相关话题,其他闲聊、广告、斗图、捣乱请自重自觉,谢谢合作!

不忘初心 、方得始终

DedeCMS织梦工场 - 致力于把最实用的DedeCms二次开发教程,DedeCms二次开发视频,DedeCms二次开发实例经验,分享给最需要的站长,希望每一位来访的站长都能有所收获!

如果您认为本网站的内容质量不错或者读后成功解决你心中的难题,觉得收获很大,那么不妨小额赞助一下,让我们有动力继续写出高质量的教程与更棒的程序教程。打赏记录

赞助方式

donate_zhifubao 支付宝手机客户端扫描上面的二维码进行赞助

donate_weixin 微信手机客户端扫描上面的二维码进行赞助

来源:DedeCms织梦工场 » DedeCms织梦批量导入关键词
据说喜欢分享的,后来都成了大神: 更多