织梦关键词字数限制是多少?

99ANYc3cd6
预计阅读时长 13 分钟
位置: 首页 织梦建站 正文

后台设置的关键词字数限制

在织梦后台,你添加文章时,有一个“关键词”输入框,这个输入框本身是有一个最大长度限制的。

织梦关键词字数限制
(图片来源网络,侵删)

限制来源

这个限制来自于数据库中 dede_archives 表(文章主表)的 keywords 字段的定义。

  • 默认情况:在织梦的默认安装中,keywords 字段通常被定义为 varchar(255)
  • 字节限制varchar(255) 意味着这个字段最多可以存储 255个字节
  • 中文字符:一个中文字符在UTF-8编码下通常占用 3个字节
  • 英文字符:一个英文字母或数字在UTF-8编码下占用 1个字节

计算公式

根据以上信息,你可以大致计算出后台可以输入的关键词数量:

  • 纯中文关键词255 字节 / 3 字节/字 ≈ 85 个汉字
  • 纯英文关键词255 字节 / 1 字节/字 = 255 个字母
  • 中英文混合:具体数量取决于混合比例,但总字节数不能超过255。

在织梦后台,默认情况下,你最多可以输入大约 85个汉字255个英文字母 作为文章关键词,如果输入超出了这个限制,后台会提示你字数超出,或者无法保存。


前台调用和显示的关键词字数限制

后台设置的字数是存储的上限,但前台实际显示多少,通常由模板文件中的调用标签来控制,这比后台的限制更重要,因为它直接影响到用户体验和SEO效果。

织梦关键词字数限制
(图片来源网络,侵删)

织梦默认的关键词调用标签

在织梦的默认文章模板(如 article_article.htm)中,调用文章关键词的标签通常是:

<meta name="keywords" content="{dede:field name='keywords'/}" />

或者

{dede:field name='keywords'/}

默认行为:这个标签会直接输出你在后台填写的 所有关键词,用英文逗号 分隔,它本身没有额外的字数截取功能。

如何自定义显示的关键词数量(重点)

如果你不想显示所有关键词,只想显示前N个,你需要使用织梦的 substring 函数。

织梦关键词字数限制
(图片来源网络,侵删)

语法:

{dede:field name='keywords' function='html2text(@me)'/}
  • function='...':用于对字段内容进行函数处理。
  • html2text(@me):这是一个常用函数,@me 代表当前字段的原始值。html2text 会将HTML标签转换为纯文本,在这里主要是为了确保安全,但它不截取字数。

要截取字数,你需要这样写:

假设你想只显示前 20个字符(注意,这里是字符,不是单词):

{dede:field name='keywords' function='substr(html2text(@me), 0, 20)'/}

代码解析:

  1. @me:获取 keywords 字段的完整内容,"织梦,dedecms,cms,网站建设,php"。
  2. html2text(@me)转为纯文本,结果同上。
  3. substr(..., 0, 20):从第0个位置开始,截取20个字符。
    • "织梦,dedecms,网站建设",截取后就是 "织梦,dedecms,网站"
    • "织梦,dedecms,cms,网站建设",截取后就是 "织梦,dedecms,cms"

更智能的按“词”截取(推荐)

上面的 substr 是按字符截取,可能会把一个词截断,更专业的方法是按“词”来截取,比如只显示前5个关键词。

织梦没有内置的“按词截取”函数,但你可以通过自定义函数或者使用PHP代码结合正则表达式来实现,对于大多数用户来说,使用 substr 已经足够。

示例:只显示前5个关键词

这是一个更实用和常见的场景,你需要修改织梦的标签,或者在模板中引入一段PHP代码。

在模板文件中直接使用PHP(最直接)

<?php
    $keywords = GetArchivesKeywords($aid); // 获取当前文章ID的所有关键词,以逗号分隔
    $keyword_array = explode(',', $keywords);
    $display_count = 5; // 定义要显示的关键词数量
    $display_keywords = array_slice($keyword_array, 0, $display_count);
    echo implode(',', $display_keywords);
?>

注意GetArchivesKeywords 是织梦的一个内置函数,需要确保在循环内使用(如在文章详情页 {dede:field name='aid'} 是有效的)。

创建自定义函数(更规范)

  1. 在织梦的 /include/extend.func.php 文件中添加以下函数:

    // 获取指定数量的关键词
    function GetLimitedKeywords($aid, $count = 5) {
        $keywords = '';
        if($aid > 0) {
            $row = $GLOBALS['dsql']->GetOne("SELECT keywords FROM `dede_archives` WHERE id = $aid");
            if($row) {
                $keyword_array = explode(',', $row['keywords']);
                $limited_keywords = array_slice($keyword_array, 0, $count);
                $keywords = implode(',', $limited_keywords);
            }
        }
        return $keywords;
    }
  2. 在模板文件中调用这个函数:

    {dede:getfunction name='GetLimitedKeywords([field:id], 5)'/}

    或者直接在模板里写PHP调用(如果熟悉的话):

    <?php echo GetLimitedKeywords($aid, 5); ?>

总结与建议

场景 限制来源 如何修改/查看
后台输入限制 数据库 dede_archives 表的 keywords 字段 (默认 varchar(255)) 无需修改,了解即可,大约85个汉字。
前台默认显示 模板标签 {dede:field.name='keywords'/},无截取功能。 直接修改模板标签,使用 function 进行处理。
前台自定义显示字数 模板标签中的 function 参数。 使用 substr(html2text(@me), 0, N) 来限制显示的字符数
前台自定义显示词数 需要自定义PHP函数。 推荐使用 array_slice 函数按关键词数组进行截取,更符合SEO需求。

最佳实践建议:

  1. 后台:在后台填写关键词时,建议核心关键词放在最前面,并且数量控制在 5-10个 左右,避免堆砌,这样即使前台显示全部,也不会太多。
  2. 前台:为了更好的SEO和用户体验,强烈建议在模板中限制显示的关键词数量,推荐只显示前 5个 核心关键词,可以使用上面提到的“按词截取”的方法来实现。
  3. 修改数据库字段(高级):如果你确定需要更多的关键词,并且有技术能力,可以直接修改数据库 dede_archives 表的结构,将 keywords 字段的 varchar(255) 改为 varchar(500) 或更大。操作前务必备份数据库!
-- 展开阅读全文 --
头像
织梦响应式茶叶网站如何适配多终端?
« 上一篇 04-20
dede后台模板选哪个?怎么选?
下一篇 » 04-20

相关文章

取消
微信二维码
支付宝二维码

目录[+]