织梦标题隐藏指定字符

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

使用织梦自带的 {title} 函数参数(最推荐,最简单)

织梦的 {title} 标签本身就支持一个 function 参数,可以直接在模板里调用PHP函数来处理标题,这是最简洁、最高效的方法。

织梦标题隐藏指定字符
(图片来源网络,侵删)

适用场景:在列表页(如 arclist.htm页(如 article_article.htm)中隐藏标题的一部分。

操作步骤

  1. 打开你需要修改的织梦模板文件(/templets/default/list_article.htm/templets/default/article_article.htm)。
  2. 找到调用标题的标签,通常是 {dede:field.title/}{dede:arctitle}
  3. 修改这个标签,为其添加 function="substr(@me, 0, 30)" 这样的属性。

代码示例: 是“织梦CMS标题隐藏指定字符的几种方法”,你想只显示前20个字符。

原始代码:

织梦标题隐藏指定字符
(图片来源网络,侵删)
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>

修改后的代码(显示前20个字符):

<h3><a href="[field:arcurl/]" title="[field:title/]">[field:title function='substr(@me, 0, 20)'/]</a></h3>

代码解析

  • [field:title function='substr(@me, 0, 20)'/]
    • function='...':表示要对这个字段应用一个PHP函数。
    • @me:这是织梦模板的固定用法,代表当前字段的原始值,在这里就是完整的标题。
    • substr(@me, 0, 20):这是一个PHP的字符串截取函数,表示从字符串 @me 的第0个位置(开头)开始,截取20个字符。
    • 注意:中文字符在UTF-8编码下,一个字符算3个字节,直接用 substr 可能会出现乱码,为了安全,推荐使用 mb_substr 函数,它支持多字节字符。

更优的写法(推荐使用 mb_substr):

<h3><a href="[field:arcurl/]" title="[field:title/]">[field:title function='mb_substr(@me, 0, 20, "utf-8")'/]</a></h3>
  • mb_substr(@me, 0, 20, "utf-8")mb_substr 是多字节安全的字符串截取函数,第四个参数指定了字符编码为 "utf-8",可以完美处理中文,不会出现乱码。

其他常用函数

  • 隐藏中间部分:只显示前10个和后5个字符。
    [field:title function='mb_substr(@me, 0, 10, "utf-8")." ... ".mb_substr(@me, -5, 5, "utf-8")'/]
  • 隐藏后缀里有“_新闻”、“_公告”等,想去掉。
    [field:title function='str_replace("_新闻", "", @me)'/]

使用CSS的 text-overflow 属性(视觉效果)

这种方法不是真正“隐藏”字符,而是通过CSS将超出容器宽度的部分用省略号(...)代替,用户体验很好,但SEO上可能不如方法一(因为搜索引擎能看到完整标题)。

适用场景:列表页标题,希望标题长度统一,排版整齐。

操作步骤

  1. 在模板文件中,给包含标题的 <a> 标签或 <h3> 标签添加一个 class
  2. 在模板的CSS文件(如 /templets/default/style/dedecms.css)中定义这个 class 的样式。

代码示例

修改模板HTML:

<h3><a href="[field:arcurl/]" title="[field:title/]" class="title-ellipsis">[field:title/]</a></h3>

在CSS文件中添加样式:

  display: block; /* 或者 inline-block */
  width: 200px;   /* 设置一个固定的宽度 */
  white-space: nowrap;      /* 强制文本在一行内显示 */
  overflow: hidden;         /* 隐藏超出部分 */
  text-overflow: ellipsis;  /* 用省略号表示被隐藏的文本 */
}

优点

  • 纯前端实现,不涉及PHP修改,非常安全。
  • 视觉效果好,能保持列表布局的整洁。

缺点

  • 搜索蜘蛛看到的是完整标题,对SEO的“隐藏”效果不如方法一。
  • 需要为每个标题设置一个固定的宽度,在不同屏幕尺寸下可能需要响应式调整。

修改织梦PHP源码(不推荐,风险高)

这种方法可以实现“彻底”的隐藏,即在前端HTML源码中,标题本身就是被截断后的,但这种方法非常不推荐,因为它会修改核心文件,升级织梦版本时所有修改都会丢失,且容易引发未知错误。

仅供了解,操作前请务必备份!

操作步骤(以修改 arc.archives.class.php 为例)

  1. 打开 /include/arc.archives.class.php 文件。
  2. 找到处理标题输出的地方,通常在 GetArcTitle() 或类似方法中。
  3. 前,加上截取逻辑。

示例代码(伪代码,具体位置需自行查找)

// 假设在某个函数里
function GetArcTitle() {
    $title = $this->Fields['title'];
    // 在这里添加截取逻辑
    $title = mb_substr($title, 0, 20, 'utf-8');
    return $title;
}

为什么不推荐

  • 破坏升级:织梦每次升级都会覆盖这些核心文件,你的修改会丢失。
  • 风险高:修改核心文件可能导致其他功能异常。
  • 不灵活:一旦修改,所有地方都生效,无法在特定模板中灵活控制。

总结与建议

方法 优点 缺点 推荐度
function 参数 最简单、最安全、最灵活,不修改核心文件,可针对不同模板单独设置。 无明显缺点。 ★★★★★ (强烈推荐)
CSS text-overflow 视觉效果好,纯前端实现,安全。 SEO上“隐藏”效果弱,需要固定宽度。 ★★★☆☆ (适合追求视觉排版的场景)
修改PHP源码 能从根源上“隐藏”标题。 风险极高,破坏升级,不灵活。 ☆☆☆☆☆ (绝对不推荐,除非有特殊且不可替代的需求)

最终建议

请优先使用【方法一】,它完美地结合了SEO优化和前端显示的需求,是织梦用户处理标题显示问题的标准做法,只需在模板文件中简单修改一行代码即可,既高效又安全。

-- 展开阅读全文 --
头像
织梦后台删除 a目录
« 上一篇 03-28
dede自定义字段删除
下一篇 » 03-28

相关文章

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

目录[+]