Template插件<% tp.file.title %>语句失效

请仔细说明自己遇到的问题,以下是参考模板。这里不要求非得按模板发帖,但内容中包含相关要素能让大家更好地帮助你。


遇到的问题

想在quickadd使用捕获功能将文字捕获到同名的另一个位置的文件中,在别人的启示下我试着用Template插件设置了模板,这个模版只有一句话:<% tp.file.title %>也就是读取当前文件标题,理论上这样可以创建一个同名的文件,但是出现的提示显示它直接试图创建一个<% tp.file.title %>为标题的文件,当然就直接失败了。
20250408224740915
我又尝试了一下,似乎这个简单的模板没法直接使用,请告诉我是哪里设置得不对

预期的效果

预期中使用这个模板可以将目前的笔记的标题复制并捕获到新的文件标题中,但是事实上这个模板完全不起作用

已尝试的解决方案

这是一个超级基础的语句,非常简单,如果这个出问题我真不理解
我按照我自己的理解试着用这个模板添加,我用“从模板创建新笔记”时,它直接给我新增了一个Untiled文件,
我使用“打开插入模板模式”,这样能够成功地文档中插入文档名,而且这个方法在我朋友那里是完全能用的,所以程序肯定没错,可能是我的设置那里不对

没太看明白, 感觉目标是想用 QuickAdd 向 “某文件” 里添加文字, 但该文件是动态基于当前打开的笔记的名字

可以考虑在原始笔记里给来个自定义属性:

---
...
my_quickadd_capture_target_file: 自定义笔记名字.md
...
---

然后在 QA 里设置 上层目录/{{FIELD:my_quickadd_capture_target_file}} 就完了
这可能不是最自动的, 但它好理解


这个方法在我朋友那里是完全能用的,所以程序肯定没错

确实有可能, 这俩插件设置项都特别多, 楼主要不就完整对比一下双方咋设置的

我之前就是这么做的,这种做法需要填一下出现的界面选项,我有点强迫症想试着去掉这个步骤。不过还是谢谢建议

好的, 总之我这里 {{TEMPLATE:一个tp模板用于取得文件名.md}} 始终就没试出来


研究了一番, 本来以为能找到个 QuickAdd 自身提供的字段就行了, 没想到还挺折腾…

目前我只会拿 QuickAdd macro 解决, 仓库里造个 qa取得当前笔记标题.js 文件, 其内容为:

// qa取得当前笔记标题.js
module.exports = {
    getActiveFileName,
};
function getActiveFileName() {
    const filename = app.workspace.getActiveFile().name;  // or .path
    console.log("Last active file:", filename);
    return filename.replaceAll(".md", "");
}

然后造个 QuickAdd 宏, 宏里面只写一条 User Script qa取得当前笔记标题::getActiveFileName (QA 的宏可以填 js文件名::导出函数名 这种语法)

image

然后在楼主那个填 “文件路径” 的位置, 原先的 {{TEMPLATE:xxxx}} 改成 固定路径/副本-{{MACRO:macro-getfilename}}.md 就行了

功能是实现了, 就是为抄个当前文件名字, 把 QA 的 宏 / 用户脚本 全都用出来了… 我感觉应该有很简单的办法但实在不熟悉 QA, 没想出来