菜鸟科技网

如何修改dede的tag路径改为拼音,dede tag路径如何改拼音?

要修改DedeCMS(织梦CMS)的Tag标签路径为拼音形式,需要通过修改数据库、配置文件以及相关模板文件来实现,以下是详细的操作步骤和注意事项,帮助您顺利完成修改。

如何修改dede的tag路径改为拼音,dede tag路径如何改拼音?-图1
(图片来源网络,侵删)

修改数据库中的Tag名称为拼音

需要将数据库中dede_tagindexdede_taglist表中的tag字段值从中文改为拼音,可以使用以下方法:

  1. 手动修改:登录phpMyAdmin,选择DedeCMS数据库,找到dede_tagindexdede_taglist表,逐条修改tag字段的值为拼音。
  2. 批量修改:使用SQL语句批量更新,执行以下语句(需确保已安装拼音转换插件或函数):
    UPDATE dede_tagindex SET tag=LOWER(HEX(UNHEX(REPLACE(tag, ' ', ''))));
    UPDATE dede_taglist SET tag=LOWER(HEX(UNHEX(REPLACE(tag, ' ', ''))));

    如果数据库支持拼音转换函数(如pinyin()),可以直接使用:

    UPDATE dede_tagindex SET tag=pinyin(tag);
    UPDATE dede_taglist SET tag=pinyin(tag);

修改Tag生成规则为拼音

DedeCMS的Tag路径默认为/tags/{tag}/,需修改为拼音形式,操作步骤如下:

  1. 修改arc.taglist.class.php文件

    如何修改dede的tag路径改为拼音,dede tag路径如何改拼音?-图2
    (图片来源网络,侵删)
    • 打开/include/arc.taglist.class.php文件。
    • 找到$this->TagInfos['link']相关代码,修改Tag链接生成逻辑。
      $this->TagInfos['link'] = $GLOBALS['cfg_cmsurl'].'/tags/'.GetPinyin($this->TagInfos['tag']).'/';

      其中GetPinyin()是一个自定义函数,需在文件中添加或引入拼音转换库。

  2. 添加拼音转换函数

    • arc.taglist.class.php中添加以下函数(需引入拼音转换类,如Pinyin.php):
      require_once(DEDEINC.'/pinyin.class.php');
      function GetPinyin($str) {
          $pinyin = new Pinyin();
          return $pinyin->convert($str);
      }

修改Tag列表页模板

  1. 修改taglist.htm模板

    • 打开/templets/default/taglist.htm文件。
    • 找到Tag链接的代码,确保调用拼音形式的路径。
      <a href="{dede:tagurl runphp='yes'}$this->Fields['tag'];{/dede:tagurl}">{dede:tagname/}</a>

      需确保{dede:tagurl}标签已支持拼音路径。

      如何修改dede的tag路径改为拼音,dede tag路径如何改拼音?-图3
      (图片来源网络,侵删)
  2. 自定义标签函数

    • /include/taglib/tag.lib.php中修改taglink函数,使其返回拼音路径:
      function lib_taglink(&$ctag, $typeid) {
          $tag = $ctag->GetAtt('tag');
          $pinyin = GetPinyin($tag);
          return $GLOBALS['cfg_cmsurl'].'/tags/'.$pinyin.'/';
      }

伪静态规则配置

  1. Apache伪静态

    • .htaccess文件中添加以下规则:
      RewriteRule ^tags/([^]+)/?$ /tags.php?tag=$1 [L]
  2. Nginx伪静态

    • nginx.conf中添加:
      rewrite ^/tags/([^]+)/?$ /tags.php?tag=$1 last;

测试与验证

  1. 重新生成Tag

    • 进入DedeCMS后台,【系统】-【SQL命令行工具】,执行:
      REPLACE INTO `dede_arctype` (reid, typename, `typedir`, isdefault, defaultname, issend, channeltype, tempindex, templist, templistarticle, temparticle, tempone, temppage, `rank`, keywords, description, `seotitle`, moresite, siteurl, sitepath, `ishidden`) VALUES ('-1', 'Tags', '/tags', '0', '', '0', '-1', '', '', '', '', '', '', '0', '', '', '', '', '', '', '0');
    • 】-【Tag标签管理】中重新生成所有Tag。
  2. 检查路径

    • 访问Tag列表页,确认路径是否为拼音形式(如/tags/yinyue/)。

常见问题与解决方案

  1. 拼音转换失败

    • 确保已正确引入拼音转换库(如Pinyin.php),并检查函数调用是否正确。
    • 可使用第三方拼音转换工具(如Overtrue\Pinyin)替代。
  2. Tag链接不生效

    • 检查伪静态规则是否正确配置,并确保服务器支持伪静态。
    • 清除浏览器缓存和DedeCMS缓存(后台【系统】-【性能优化】-【清除缓存】)。

相关问答FAQs

问题1:修改Tag路径为拼音后,部分中文Tag无法正确显示,如何解决?
解答:可能是拼音转换函数未正确处理中文符号或特殊字符,建议在转换前对Tag名称进行过滤,

function GetPinyin($str) {
    $str = preg_replace('/[^\x{4e00}-\x{9fa5}a-zA-Z0-9]/u', '', $str);
    $pinyin = new Pinyin();
    return $pinyin->convert($str);
}

问题2:如何批量修改已存在的Tag为拼音?
解答:可以通过编写PHP脚本批量处理。

require_once('include/common.inc.php');
require_once('include/pinyin.class.php');
$pinyin = new Pinyin();
$query = $dsql->Execute('SELECT tag FROM dede_tagindex');
while ($row = $dsql->GetArray()) {
    $pinyinTag = $pinyin->convert($row['tag']);
    $dsql->ExecuteNoneQuery("UPDATE dede_tagindex SET tag='$pinyinTag' WHERE tag='{$row['tag']}'");
    $dsql->ExecuteNoneQuery("UPDATE dede_taglist SET tag='$pinyinTag' WHERE tag='{$row['tag']}'");
}
echo '批量修改完成!';

将脚本上传到网站根目录并访问即可执行。

原文来源:https://www.dangtu.net.cn/article/9125.html
分享:
扫描分享到社交APP
上一篇
下一篇