/include/arc.archives.class.php
文件;,2. 找到function GetTagsUrl($tagname)
函数;,3. 在函数内部,将$tagurl = MakeUrl(str_replace(' ', '', $tagname));
替换为$tagurl = MakeUrl(rawurlencode($tagname));
。,,这样就可以将dedecms织梦Tags标签URL去掉中文加密URLEncode采用标准化URL。在织梦CMS(DedeCMS)中,Tags标签的URL默认情况下是带有中文加密字符串的形式,虽然Google对中文URL比较友好,但百度对中文URL的支持可能不够理想,为了提升搜索引擎的友好性,尤其是针对百度,可以采用标准化的URL形式,即使用Tag ID来构造URL。
修改步骤
1、登录后台:
登录到织梦CMS 5.7的后台管理界面。
2、修改tag.lib.php文件:
找到include/taglib/tag.lib.php
文件,大约在第87行,将以下代码:
```php
$row['link'] = $cfg_cmsurl."/tags.php?/".urlencode($row['keyword'])."/";
```
修改为:
```php
$row['link'] = $cfg_cmsurl."/tags.php?/".urlencode($row['id'])."/";
```
3、修改arc.taglist.class.php文件:
找到include/arc.taglistview.class.php
文件,大约在第70行,将以下代码:
```php
$this>TagInfos = $this>dsql>GetOne("Select * Fromdede_tagindex
where tag like '{$this>Tag}'");
```
修改为:
```php
$this>TagInfos = $this>dsql>GetOne("Select * Fromdede_tagindex
where id like '{$this>Tag}'");
```
4、显示:
找到templets/default/taglist.htm
文件中的所有{dede:field.title /}
,将其替换成:
```html
{dede:sql sql="select tag from dede_tagindex where id=~title~"}[field:tag/]{/dede:sql}
```
示例表格
原始代码 | 修改后的代码 |
$row['link'] = $cfg_cmsurl."/tags.php?/".urlencode($row['keyword'])."/"; | $row['link'] = $cfg_cmsurl."/tags.php?/".urlencode($row['id'])."/"; |
$this>TagInfos = $this>dsql>GetOne("Select * From dede_tagindex where tag like '{$this>Tag}'"); | $this>TagInfos = $this>dsql>GetOne("Select * From dede_tagindex where id like '{$this>Tag}'"); |
{dede:field.title /} | {dede:sql sql="select tag from dede_tagindex where id=~title~"}[field:tag/]{/dede:sql} |
FAQs
Q1: 为什么需要将Tags标签URL从中文加密改为ID?
A1: 虽然Google对中文URL较为友好,但百度对中文URL的支持可能不足,使用ID构造URL不仅更简洁,还能提升搜索引擎的友好性,特别是针对百度。
Q2: 修改后如何确保标题正常显示?
A2: 在模板文件taglist.htm
中,将所有的{dede:field.title /}
替换为SQL查询语句{dede:sql sql="select tag from dede_tagindex where id=~title~"}[field:tag/]{/dede:sql}
,这样就能根据ID获取并显示对应的标签名称。
通过这些步骤,可以有效地优化DedeCMS中的Tags标签URL,使其更加标准化和搜索引擎友好。
为了将DedeCMS(织梦)中的Tags标签URL去掉中文加密(URLEncode)并采用标准化URL,我们需要进行以下步骤:
步骤 1:获取当前Tags标签URL
我们需要获取当前DedeCMS系统中Tags标签的URL,这样的URL会包含一些中文参数,并且可能经过URLEncode编码。
步骤 2:解码URLEncode
对于URL中的URLEncode编码的中文参数,我们需要将其解码为原始的中文。
import urllib.parse def decode_url(url): return urllib.parse.unquote(url)
步骤 3:标准化URL
我们需要将URL中的中文参数替换为对应的标准化URL编码。
def standardize_url(url): return urllib.parse.quote(url)
步骤 4:替换URL中的中文参数
我们将URL中的中文参数替换为标准化后的URL编码。
def replace_and_standardize(url): # 假设我们有一个字典,包含需要替换的中文参数及其标准化编码 replacements = { '中文参数1': 'standardized1', '中文参数2': 'standardized2', # ... 更多替换项 } # 解码URL decoded_url = decode_url(url) # 替换并重新编码URL for chinese_param, standardized_param in replacements.items(): decoded_url = decoded_url.replace(chinese_param, standardized_param) # 标准化URL standardized_url = standardize_url(decoded_url) return standardized_url
示例代码
以下是一个完整的示例代码,展示如何将一个包含中文参数的Tags标签URL进行解码、标准化处理:
import urllib.parse 假设这是从DedeCMS获取的原始URL original_url = 'http://example.com/tags?中文参数1=值1&中文参数2=值2' 定义一个替换字典 replacements = { '中文参数1': 'standardized1', '中文参数2': 'standardized2', } 替换并标准化URL standardized_url = replace_and_standardize(original_url) print("标准化后的URL:", standardized_url)
注意事项
确保替换字典replacements
中包含所有需要替换的中文参数及其对应的标准化编码。
如果URL中有多个相同的中文字符串需要替换,确保在替换过程中不会引起重复编码。
此代码示例仅作为处理DedeCMS Tags标签URL的参考,实际应用中可能需要根据具体情况进行调整。