dede 设置标题长度

99ANYc3cd6
预计阅读时长 14 分钟
位置: 首页 DEDE建站 正文
  1. 后台发布文章时的标题输入框长度限制:防止用户输入过长的标题。
  2. 前台页面显示标题的长度限制在列表页、内容页等地方显示的字符数,避免页面布局错乱。

下面我将分步详细讲解如何设置这两个方面的标题长度。


设置后台标题输入框的长度限制

这个限制主要作用于内容发布界面,通过修改模板文件来实现。

适用场景:你想让后台的标题输入框看起来更整洁,或者从源头上限制用户输入过长的标题。

操作步骤

  1. 找到文件: 登录你的网站后台,通过 FTP 或文件管理器找到以下文件: dede/templets/article_edit.htm

    这个文件是文章编辑页面的模板文件。

  2. 修改代码: 用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开 article_edit.htm 文件。

  3. 定位代码: 在文件中搜索 <input 关键字,找到标题输入框的代码行,它看起来通常是这样的:

    <input name="title" type="text" id="title" value="<?php echo $title; ?>" style="width:400px" class="all-txt" />
  4. 修改 style 中的 width 属性: 你可以通过修改 width: 400px 的值来改变输入框的宽度,想让它变窄一些,可以改成 width: 300px

    修改后示例

    <input name="title" type="text" id="title" value="<?php echo $title; ?>" style="width:300px" class="all-txt" />
  5. 保存文件: 保存修改后的 article_edit.htm 文件,并覆盖服务器上的原文件。

  6. 刷新后台: 重新登录后台,进入“核心” -> “内容模型管理” -> “普通文章” -> “更改”,点击“更新系统缓存”,然后再去发布文章,你就会看到标题输入框的长度已经改变了。

注意:这只是限制了输入框的显示宽度,用户仍然可以通过输入超过数据库字段长度的字符来“绕过”这个限制,要真正限制数据库存储的长度,需要修改数据库结构,但这不推荐普通用户操作,有风险。


设置前台页面标题的显示长度(常用且重要)

这才是我们通常所说的“设置标题长度”,目的是控制标题在前台列表、首页等位置显示的字符数,防止撑破页面布局。

DedeCMS 提供了非常方便的内置函数 cn_substr() 来实现这个功能。

场景1:在列表页(如首页、栏目页)中截取标题

在列表页模板中(通常是 templets/default/index.htmtemplets/default/list_article_category.htm通常通过 arc.title 调用。

修改前代码

<a href='[field:arcurl/]'>[field:title/]</a>

修改后代码(截取前20个字符): 使用 cn_substr() 函数,第一个参数是字段名,第二个参数是截取的长度。

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

代码解释

  • [field:title function='cn_substr(@me,20)'/] 这段代码的意思是:
    • [field:title/]字段的原始内容。
    • function='...':调用一个函数。
    • @me:代表当前字段的值,也就是 [field:title/] 的内容。
    • cn_substr(@me, 20):调用 cn_substr 函数,对 @me 的内容截取前 20 个字符。

你可以根据需要修改 20 这个数字,比如改成 3015

进阶用法(添加省略号): 为了让截取后的标题更美观,我们通常会在末尾加上省略号 ,可以通过 str_replace 函数结合 cn_substr 来实现。

<a href='[field:arcurl/]'>[field:title function='str_replace(cn_substr(@me,20), "...", cn_substr(@me,20))'/]</a>

或者更简洁的写法(如果标题被截断,则加省略号):

{dede:field.title runphp='yes'}
    if(strlen(@me)>20) @me = cn_substr(@me,20)."...";
    else @me = @me;
{/dede:field.title}

然后在 <a> 标签中调用这个变量。

场景2:在文章内容页中截取标题

页模板(通常是 templets/default/article_article.htm通常直接显示。

修改前代码

<h1 class="title">[field:title/]</h1>

修改后代码(截取前50个字符)

<h1 class="title">[field:title function='cn_substr(@me,50)'/]</h1>

同样,你可以根据页面布局调整 50 这个数值。


设置标题在搜索结果页的长度

搜索结果页(search.php)的模板通常是 templets/default/default/search.htm,修改方法与列表页完全相同。

修改前

<a href="[field:arcurl/]">[field:title/]</a>

修改后

<a href="[field:arcurl/]">[field:title function='cn_substr(@me,25)'/]</a>

设置位置 修改文件 修改方法 示例代码
后台输入框长度 dede/templets/article_edit.htm 修改 <input> 标签的 style="width:xxxpx" <input ... style="width:300px" />
前台列表页标题长度 templets/default/.../list_xxx.htm
templets/default/.../index.htm
使用 [field:title function='cn_substr(@me,N)'/] <a ...>[field:title function='cn_substr(@me,20)'/]</a>
页标题长度 templets/default/.../article_xxx.htm 使用 [field:title function='cn_substr(@me,N)'/] <h1>[field:title function='cn_substr(@me,50)'/]</h1>
前台搜索结果页标题长度 templets/default/default/search.htm 使用 [field:title function='cn_substr(@me,N)'/] <a ...>[field:title function='cn_substr(@me,25)'/]</a>

核心要点

  • 后台限制:改 article_edit.htmwidth,主要是为了界面美观。
  • 前台显示:使用 cn_substr() 函数,这是 DedeCMS 的标准做法,也是最安全、最有效的方法。

通过以上方法,你就可以灵活地控制 DedeCMS 在任何位置的标题显示了。

-- 展开阅读全文 --
头像
C语言return语句如何正确使用与返回?
« 上一篇 今天
dede如何调用视频列表?
下一篇 » 今天

相关文章

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

目录[+]