找不到自定义标签的 CFML 模板

Posted

技术标签:

【中文标题】找不到自定义标签的 CFML 模板【英文标题】:Cannot find CFML template for custom tag 【发布时间】:2011-02-19 14:18:11 【问题描述】:

我不是 ColdFusion 编码员。帮一个将他的 CF 站点从 Windows 服务器移植到 GoDaddy 上的 Unix 的朋友。

网站显示错误:

找不到自定义标签 jstk 的 CFML 模板。冷融合 尝试查看已安装自定义标签的树,但没有 查找具有此名称的自定义标签。

我发现的站点位于文档根目录 /CustomTags 中,其中包含 jstk.cfm 文件和 cf_jstk 中的一组文件

我的谷歌搜索找到了这个:

您必须将自定义标签页面存储在以下任一位置: 与调用页面相同的目录; cfusion\CustomTags 目录; cfusion\CustomTags 目录的子目录; 您在 ColdFusion Administrator 中指定的目录

所以我有:

尝试在 /cfusion/CustomTags 中创建放置 /CustomTags 尝试将 /cfusion/CustomTags 复制到以上文档根目录 尝试将 jstk.cfm 和子文件夹复制到与调用文件 (index.cfm) 相同的目录中

更新:根据 GoDaddy 支持,我还尝试添加以下内容但无效:<cfmodule template="CustomTags/jstk.cfm">

任何人都可以给我一些提示,还是我应该告诉我的人寻找 CF 编码器?

谢谢!

【问题讨论】:

【参考方案1】:

我不知道 GoDaddy 是如何设置的,所以作为快速测试,请执行以下操作:

在 webroot 中创建文件test.cfm,内容如下:

<cf_testtag/>
<cfoutput>test</cfoutput><cfabort/>

在 webroot 中创建文件testtag.cfm,内容如下:

<cfdump var=#ThisTag# />

然后在浏览器中访问 test.cfm 页面。

您应该得到两个调试转储,然后是“测试”;这将确认自定义标签通常正常工作。

如果可行,请将 testtag.cfm 移动到 CustomTags 目录,并查看您是否得到相同的行为或错误。

如果这产生错误,对于 CF8 及更高版本,您可以在 Application.cfc 文件中添加 &lt;cfset This.CustomTagPaths = "/CustomTags" /&gt;(假设存在 App cfc 而不是 Application.cfm)以确保检查该目录的标签。

可以将 Application.cfm 转换为 Application.cfc - 这有多容易取决于其中的代码有多复杂 - 可能是您可以弄清楚的,或者可能需要有经验的 CF 开发人员,这取决于。

根据结果,我们可以尝试调试jstk 标记不起作用的原因(除非上述方法之一解决了它)。

【讨论】:

谢谢彼得! webroot 中的初始位置有效。当 testag.cfm 移动到 CustomTags 目录时,我收到错误“找不到自定义标签 testtag 的 CFML 模板。”顺便说一句,每个 GoDaddy“支持”我也尝试添加以下内容但无效: 抱歉,将 添加到现有的 application.cfm 并没有改变结果, 是的,cfmodule 基本上是调用自定义标签的另一种方式,它不需要文件位于特定目录中。如果路径正确,它应该可以工作。你能用简单的测试标签试试这条路线吗? 是的,在 Adob​​e CF 中,CustomTagPaths 仅适用于 Application.cfc - Adob​​e 没有将功能添加到 Application.cfm,因为这是较旧的方式,这很烦人。 Railo(另一个 CFML 引擎)添加了通过 cfapplication 标签(即在 Application.cfm 中)使用 CustomTagsPaths 的能力,但不幸的是,这在这里没有帮助。 尝试添加到 test.cfm 这导致打印“struct”表,然后显示“找不到自定义标签 testtag 的 CFML 模板。” 【参考方案2】:

在担心复杂的事情之前努力检查简单的事情: 请记住,*nix 系统上的文件名区分大小写,但在 Windows 上则不。

例如,Windows 服务器会选择“application.cfm”,但 linux 服务器不会。它需要“Application.cfm”。

检查以确保所有文件名/路径都是正确的。

【讨论】:

谢谢本,我一直在看。到目前为止还没有发现任何大小写错误。【参考方案3】:

一般情况下,CFML 会先检查当前目录下的每个自定义标签,如果没有找到,第二个是在 CFMX8/customtags/ 中。

【讨论】:

以上是关于找不到自定义标签的 CFML 模板的主要内容,如果未能解决你的问题,请参考以下文章

自定义模板标签和过滤器

Python网站开发必备-django模板自定义标签

自定义包含标签出错,找不到文件

django自定义模板标签和过滤器

在自定义模板标签中解析 Django 自定义模板标签

齐博CMS:怎样制作并添加自定义标签模板样式