本文介绍了织梦dedecms怎么批量导入关键词和链接,解决办法:打开这个文件article_keywords_main.php,找到if(empty($keyword)),添加教程给出的代码就可以了。
织梦dedecms怎么批量导入关键词和链接?
操作教程
1、准备好要导入的关键词文件,txt文档,格式如下
注意:无论你的程序是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 `dede_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编码 www.dede58.com $key = ($cfg_soft_lang != 'utf-8') ? iconv( "UTF-8", "gb2312//IGNORE" , $key) : $key;
//如果数据库中存在该关键词,则跳出本次循环。 注意: keyword字段在数据库中长度16字符,需要更更长点 //ALTER TABLE `dede_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 `dede_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 `dede_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> </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">
<input type="button" name="dl1" class="coolbg np" value="反选" onClick="selAll()" />
<input type="button" name="dl2" class="coolbg np" value="保存更改" onClick="this.form.submit();" />
</td>
改成
<td height="28" colspan="4"> <input type="button" name="dl1" class="coolbg np" value="反选" onClick="selAll()" /> <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()" /> <input type="button" name="dl1" class="coolbg np" value="删除全选" onClick="delSel()" /> </td>
这样就可以了。
上面就是织梦批量导入关键词的介绍,若有疑问可以找小编进一步探讨交流~