dede如何调用文件名?

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

使用全局变量 {dede:global name='filename'/} (最推荐)

这是 DedeCMS 官方提供的最直接、最简单的方法,专门用于获取当前页面的文件名(不含后缀)。

语法:

{dede:global name='filename'/}

特点:

  • 简单高效:直接调用,无需复杂逻辑。
  • 结果准确:返回的是当前模板文件的主文件名,如果文件是 article_article.htm,它将返回 article_article
  • 适用范围广:可以在任何模板文件中使用。

示例场景: 假设您想在文章详情页的面包屑中显示“文章详情”,而不是固定的文字。

面包屑代码示例:

<div class="breadcrumb">
    <a href="{dede:global.cfg_cmsurl/}/">首页</a> > 
    <a href="{dede:type typeid='1'}[field:typelink/]{/dede:type}">栏目名称</a> > 
    文章详情
</div>

使用 filename 变量后,可以动态替换“文章详情”:

<div class="breadcrumb">
    <a href="{dede:global.cfg_cmsurl/}/">首页</a> > 
    <a href="{dede:type typeid='1'}[field:typelink/]{/dede:type}">栏目名称</a> > 
    {dede:global name='filename'/}
</div>

注意:这种方法获取的是模板文件名,而不是文章标题,如果您的意图是获取文章的标题,应该使用 [field:title/]


使用PHP代码 {dede:geturl runphp='yes'} (最灵活)

当您需要更复杂的处理,比如获取带后缀的文件名,或者对文件名进行修改时,可以在模板中嵌入 PHP 代码。

语法:

{dede:geturl runphp='yes'}
    $filename = basename($dtp->GetSourceResult(), '.htm');
    // 如果需要带后缀,使用下面这行
    // $filename = basename($dtp->GetSourceResult());
    @me = $filename;
{/dede:geturl}

代码解析:

  • {dede:geturl runphp='yes'}:开启 PHP 执行模式。
  • $dtp->GetSourceResult():获取当前页面的完整路径。
  • basename():从路径中提取文件名。/templets/default/article_article.htm 会得到 article_article.htm
  • ', '.htmbasename 的第二个参数是文件后缀,将其移除,只得到主文件名 article_article
  • @me = $filename;:将处理后的结果赋值给 @me 变量,@me 是 DedeCMS 模板中 PHP 代码块的输出变量。

示例场景: 您想获取文件名,并将其转换为大写,并加上“_PAGE”后缀。

{dede:geturl runphp='yes'}
    $filename = basename($dtp->GetSourceResult(), '.htm');
    @me = strtoupper($filename) . '_PAGE';
{/dede:geturl}

如果当前文件是 article_article.htm,输出结果将是 ARTICLE_ARTICLE_PAGE


通过JS获取当前URL并解析 (前端方法)

这种方法完全在浏览器端执行,不依赖 DedeCMS 的模板引擎,它获取的是浏览器地址栏里的 URL,而不是服务器上的模板文件名。

适用场景:

  • 当您需要在 JavaScript 代码中获取当前页面的文件名时。
  • 或者想验证一下 URL 中的文件名。

代码示例: 在您的模板文件中 <head><body> 标签内加入以下 script:

<script>
    // 获取当前页面的完整URL
    var currentUrl = window.location.href;
    // 创建一个临时的 <a> 标签来解析路径
    var a = document.createElement('a');
    a.href = currentUrl;
    // 获取文件名(带后缀)
    var filenameWithExt = a.pathname.split('/').pop();
    // 获取文件名(不带后缀)
    var filename = filenameWithExt.split('.')[0];
    // 在控制台打印出来,方便查看
    console.log("完整URL: " + currentUrl);
    console.log("带后缀的文件名: " + filenameWithExt);
    console.log("不带后缀的文件名: " + filename);
    // 您可以将 filename 变量用于其他JS逻辑
</script>

总结与对比

方法 优点 缺点 适用场景
{dede:global name='filename'/} 最简单、最官方、性能最好 功能单一,只能获取不带后缀的模板文件名 绝大多数场景,如动态面包屑、页面标题等。
{dede:geturl runphp='yes'} 最灵活,可以进行任何PHP字符串处理 代码稍复杂,对新手不友好 需要对文件名进行复杂处理(如拼接、大小写转换等)。
JS方法 完全在前端,不受模板限制 获取的是浏览器URL,可能和服务器文件名不一致(如URL重写) 需要在JavaScript中获取URL信息,或进行前端交互。

对于绝大多数 DedeCMS 用户,强烈推荐使用第一种方法 {dede:global name='filename'/},它简洁、高效且是官方支持的,能满足大部分调用文件名的需求。

如果您需要更高级的定制,再考虑使用第二种 PHP 方法,第三种 JS 方法则主要用于前端特定的逻辑。

-- 展开阅读全文 --
头像
dede关键词替换怎么用?
« 上一篇 今天
c语言func什么意思
下一篇 » 今天

相关文章

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

目录[+]