dede频道封面如何获取当前栏目链接?

99ANYc3cd6
预计阅读时长 11 分钟
位置: 首页 DEDE建站 正文

使用 {dede:field} 标签来获取当前栏目的相关信息,特别是 typedir(栏目目录)或 typeurl(栏目链接)。

dede 频道封面当前栏目链接
(图片来源网络,侵删)

下面我将为你提供详细的步骤和代码示例。


使用 {dede:field.typeurl/} 标签(最推荐)

这是最直接、最简单的方法。{dede:field.typeurl/} 标签会直接输出当前栏目的完整链接地址。

适用场景:

  • 在列表页(list_*.htm
  • 在文章页(article_*.htm
  • 在频道封面页(index_*.htm

操作步骤:

  1. 找到并打开你的模板文件 登录 DedeCMS 后台,进入【模板】->【模板管理】,找到你正在使用的频道封面模板文件,通常这个文件名为 index_*.htm, 是你的栏目ID。

  2. 编辑模板代码 在模板文件中,你需要添加链接的地方,使用以下代码:

    dede 频道封面当前栏目链接
    (图片来源网络,侵删)
    <a href="{dede:field.typeurl/}">
        <!-- 这里是你的封面图片或其他内容 -->
        <img src="/uploads/cover.jpg" alt="{dede:field.seotitle/}" />
        <span>{dede:field.typename/}</span>
    </a>

代码解释:

  • {dede:field.typeurl/}: 这个标签会自动解析为当前栏目的完整URL链接,如果你的栏目在后台设置的“目录”是 news,那么它会输出 http://你的域名/news/
  • {dede:field.typename/}: 获取当前栏目的名称,用作 <a> 标签的文本内容或图片的 alt 属性,这对SEO很有好处。
  • {dede:field.seotitle/}: 获取当前栏目的SEO标题,通常用作 alt 属性,比栏目名称更具描述性。

使用 {dede:field.typedir/} 标签(需要手动处理)

{dede:field.typedir/} 标签获取的是栏目在后台设置的“目录”值,这个值可能是一个相对路径(如 news),也可能是一个以 {cmspath} 开头的路径(如 {cmspath}/news),你需要手动将它处理成完整的URL。

适用场景:

与方法一基本相同,但当你需要对URL进行额外处理时,这个方法更灵活。

操作步骤:

  1. 打开模板文件:同方法一。

  2. 编辑模板代码

    dede 频道封面当前栏目链接
    (图片来源网络,侵删)
    <a href="{dede:field.typedir function='str_replace("{cmspath}", "@me", @me)'/}">
        <!-- 这里是你的封面图片或其他内容 -->
        <img src="/uploads/cover.jpg" alt="{dede:field.typename/}" />
        <span>{dede:field.typename/}</span>
    </a>

代码解释:

  • {dede:field.typedir/}: 获取栏目目录。
  • function='str_replace("{cmspath}", "@me", @me)': 这是一个非常重要的PHP函数调用。
    • 它的作用是:typedir 的值里包含 {cmspath}(这是一个代表网站根目录的占位符),就把它替换成实际的网站根目录路径。
    • @me 在这里代表 {dede:field.typedir/} 标签本身的原始值。
    • 经过这个处理后,无论是 news 还是 {cmspath}/news,都能正确地变成 http://你的域名/news/ 这样的完整链接。

完整示例:一个频道封面列表

假设你的频道封面模板里有一个循环,需要为每个子栏目都生成一个带链接的封面块。

<!-- 在你的 index_*.htm 模板文件中找到类似 {dede:channel} 的循环标签块 -->
<ul class="channel-cover-list">
    {dede:channel type='son' currentstyle=''}
    <li>
        <!-- 使用方法一,最简单直接 -->
        <a href="[field:typeurl/]">
            <!-- 假设你为每个栏目都上传了封面图,字段名为 'pic' -->
            <img src="[field:pic/]" alt="[field:typename function='html2text(@me)'/]" />
            <h3>[field:typename/]</h3>
        </a>
    </li>
    {/dede:channel}
</ul>

注意:在上面的完整示例中,我使用了 [field:xxx/] 这种简写形式,这在 {dede:channel} 等循环标签内部是等效于 {dede:field.xxx/} 的,为了代码清晰,建议统一使用一种风格。


总结与排查

用途 优点 缺点
{dede:field.typeurl/} 直接输出完整URL 简单、直接、不易出错 无明显缺点,是首选方案
{dede:field.typedir/} 输出栏目目录(可能含{cmspath} 灵活,可对路径进行额外处理 需要配合 function 函数处理,稍显复杂

如果链接不生效,请检查以下几点:

  1. 是否在正确的模板文件中修改? 确保你修改的是对应栏目的 index_*.htm 文件。
  2. 标签拼写是否正确? 检查 typeurltypedir 是否拼写错误。
  3. 栏目设置是否正确? 确保该栏目在后台的“栏目类型”中选择了“频道封面”。
  4. 是否更新了缓存? 修改模板后,务必到后台【生成】->【更新HTML】中更新对应的页面。

希望这个详细的解答能帮助你解决问题!

-- 展开阅读全文 --
头像
dede 自定义字段 html
« 上一篇 01-04
c语言 sublimetext
下一篇 » 01-04

相关文章

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

目录[+]