# Form?

**URL:** <https://discourse.joplinapp.org/t/form/50965>\
**Category:** Support\
**Created:** [15 September 2026 13:44 UTC](https://discourse.joplinapp.org/t/form/50965 "2026-09-15T13:44:35Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![DomPython](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/dompython/32/29567_2.png) [@DomPython](https://discourse.joplinapp.org/u/DomPython)\
**Post date:** [15 September 2026 13:44 UTC](https://discourse.joplinapp.org/t/form/50965/1 "2026-09-15T13:44:35Z")

</div>

### Operating system

macOS

### Joplin version

3.7.18

### Desktop version info

Joplin 3.7.18 (prod, darwin)

Appareil : darwin, Apple M2  
ID client : 5ddb7f473f9d4e2d87b93df16e851762  
Version de Synchro : 3  
Version du profil : 53  
Trousseau supporté : Oui  
ID d'instance alternatif : -  
Cible de synchronisation : Joplin Cloud  
Éditeur : Rich Text

Révision : ce25482

Backup: 1.5.1  
Freehand Drawing: 4.3.0  
Note Statistics: 1.0.4  
Templates: 3.0.0

### Sync target

Joplin Cloud

### What issue do you have?

Hello!  
Is it possible to create a form using Joplin? Like a template, but with fields to fill in?  
Dom'-)

---

<div class="post-metadata">

**Author:** ![GrantZ](https://avatars.discourse-cdn.com/v4/letter/g/bb73d2/32.png) [@GrantZ](https://discourse.joplinapp.org/u/GrantZ)\
**Post date:** [15 September 2026 13:59 UTC](https://discourse.joplinapp.org/t/form/50965/2 "2026-09-15T13:59:43Z")

</div>

did you try the plugin "template"?  
i installed this plugin and created a test template with tag "template"

* * *

# ========== 基础自定义变量测试 ==========

test\_text: text  
test\_number: number  
test\_boolean: boolean  
test\_date: date  
test\_time: time  
test\_color: dropdown(Red, Green, Blue, Yellow)

# ========== 带Label的高级变量测试 ==========

user\_name:  
label: 请输入你的名字  
type: text  
project\_name:  
label: 选择所属项目  
type: dropdown(项目A, 项目B, 项目C)  
show\_details:  
label: 显示详细内容？  
type: boolean

# ========== 特殊变量 ==========

template\_title: Joplin模板全功能测试 - {{date}}  
template\_tags: 模板测试, {{test\_color}}

# template\_notebook: 可填写目标笔记本ID，测试时可注释

## template\_todo\_alarm: "{{datetime delta\_days=1 set\_time='09:00' format='YYYY/MM/DD HH:mm'}}"

# Joplin Templates 插件全功能验证模板

> 本模板覆盖官方文档所有功能点，用于完整验证插件运行是否正常

* * *

## 一、内置变量测试

| 变量语法 | 实际输出 |
| --- | --- |
| `{{date}}`（今日日期） | {{date}} |
| `{{time}}`（当前时间） | {{time}} |
| `{{datetime}}`（日期+时间） | {{datetime}} |
| `{{bowm}}`（本周一日期） | {{bowm}} |
| `{{bows}}`（本周日日期） | {{bows}} |
| `{{note_id}}`（生成笔记ID） | {{note\_id}} |
| `custom_datetime` 自定义格式 | {{#custom\_datetime}}YYYY年MM月DD日 dddd{{/custom\_datetime}} |

* * *

## 二、自定义变量测试

### 基础类型变量

- 文本输入 `test_text`：{{test\_text}}
- 数字输入 `test_number`：{{test\_number}}
- 布尔开关 `test_boolean`：{{test\_boolean}}
- 日期选择 `test_date`：{{test\_date}}
- 时间选择 `test_time`：{{test\_time}}
- 下拉选择 `test_color`：{{test\_color}}

### 带Label的高级变量

- 用户名：{{user\_name}}
- 所属项目：{{project\_name}}
- 是否显示详情：{{show\_details}}

{{#if show\_details}}

> ✅ 你勾选了「显示详细内容」，本段条件渲染成功  
> {{else}}  
> ❌ 你取消了「显示详细内容」，本段条件渲染成功  
> {{/if}}

* * *

## 三、Compare Helper 比较运算测试

### 数值比较

{{#if (compare test\_number "\>" 10)}}

- ✅ `test_number > 10` 条件成立  
{{else}}
- ❌ `test_number ≤ 10` 条件不成立  
{{/if}}

{{#if (compare test\_number "\>=" 5)}}

- ✅ `test_number ≥ 5` 条件成立  
{{/if}}

{{#if (compare test\_number "!=" 0)}}

- ✅ `test_number ≠ 0` 条件成立  
{{/if}}

### 字符串比较

{{#if (compare test\_color "eq" "Red")}}

- ✅ 你选择了红色  
{{else if (compare test\_color "eq" "Green")}}
- ✅ 你选择了绿色  
{{else}}
- ✅ 你选择了红色/绿色之外的颜色  
{{/if}}

### 严格相等

{{#if (compare test\_text "===" test\_text)}}

- ✅ 严格相等 `===` 测试通过  
{{/if}}

* * *

## 四、Condition Helper 逻辑运算测试

### AND 逻辑

{{#if (condition test\_boolean "and" show\_details)}}

- ✅ 两个布尔值均为真，`AND` 逻辑成立  
{{else}}
- ❌ `AND` 逻辑不成立  
{{/if}}

### OR 逻辑

{{#if (condition test\_boolean "or" show\_details)}}

- ✅ 至少一个布尔值为真，`OR` 逻辑成立  
{{else}}
- ❌ `OR` 逻辑不成立  
{{/if}}

### Unless 取反

{{#unless test\_boolean}}

- ✅ `test_boolean` 为假，`unless` 取反生效  
{{/unless}}

* * *

## 五、Math Helper 数学运算测试

| 运算类型 | 表达式 | 计算结果 |
| --- | --- | --- |
| 加法 | `{{test_number}} + 5` | {{math test\_number "+" 5}} |
| 减法 | `{{test_number}} - 3` | {{math test\_number "-" 3}} |
| 乘法 | `{{test_number}} × 2` | {{math test\_number "\*" 2}} |
| 除法 | `{{test_number}} ÷ 2` | {{math test\_number "/" 2}} |
| 幂运算 | `{{test_number}}²` | {{math test\_number "\*\*" 2}} |
| 取模 | `{{test_number}} % 3` | {{math test\_number "%" 3}} |

### 复合运算示例：商品总价

单价：¥12.9  
数量：{{test\_number}}  
税率：13%  
**应付总价：¥{{math (math 12.9 "_" test\_number) "_" (math 1 "+" 0.13)}}**

* * *

## 六、Case Helper 大小写转换测试

| 转换类型 | 输入原文 | 转换结果 |
| --- | --- | --- |
| 全大写 `upper` | {{user\_name}} | {{case "upper" user\_name}} |
| 全小写 `lower` | {{project\_name}} | {{case "lower" project\_name}} |

* * *

## 七、Repeat Helper 循环测试

### 生成指定数量待办项

{{#repeat test\_number}}

- 任务 {{math repeat\_index "+" 1}}：待完成  
{{/repeat}}

### 生成一周日程表

{{#repeat 7}}

#### 第{{math repeat\_index "+" 1}}天

- 上午：
- 下午：
- 晚上：

{{/repeat}}

* * *

## 八、DateTime Helper 日期时间操作测试

### 时间偏移

- 明天：{{datetime delta\_days=1}}
- 昨天：{{datetime delta\_days=-1}}
- 一周后：{{datetime delta\_days=7}}
- 一个月后：{{datetime delta\_months=1}}
- 一年前：{{datetime delta\_years=-1}}
- 2小时后：{{datetime delta\_hours=2}}
- 30分钟前：{{datetime delta\_minutes=-30}}

### 指定日期时间

- 2025年元旦零点：{{datetime set\_date="2025/01/01" set\_time="00:00"}}
- 今年圣诞节18点：{{datetime set\_date="2025/12/25" set\_time="18:00"}}

### 自定义格式

- ISO 标准格式：{{datetime format="YYYY/MM/DD HH:mm"}}
- 中文长格式：{{datetime format="YYYY年MM月DD日 dddd"}}
- 仅月份全称：{{datetime format="MMMM"}}

### 组合操作

- 3天后的下午3点：{{datetime delta\_days=3 set\_time="15:00" format="YYYY/MM/DD HH:mm"}}

* * *

## 九、特殊变量验证

- 笔记标题由 `template_title` 自动生成：`{{template_title}}`
- 笔记标签由 `template_tags` 自动添加：`{{template_tags}}`
- 待办提醒由 `template_todo_alarm` 设置：`{{template_todo_alarm}}`

* * *

## 十、综合场景示例：标准会议记录

# {{project\_name}} - 周会记录

**会议日期** ：{{date}}  
**会议时间** ：{{time}}  
**记录人** ：{{user\_name}}  
**会议形式** ：线上

### 会议议题

1. 项目进度同步
2. 问题与风险
3. 下周计划

### 待办事项

{{#repeat 3}}

- 事项{{math repeat\_index "+" 1}}：负责人 \_\_\_，截止日期 {{datetime delta\_days=(math repeat\_index "+" 1) format="YYYY/MM/DD"}}  
{{/repeat}}

### 会议纪要

{{#if show\_details}}

> 详细会议内容在此处记录...  
> {{/if}}

* * *

> 🎯 测试完成提示：如果以上所有内容都正确渲染、没有语法报错，说明 Templates 插件全部功能运行正常。

---

<div class="post-metadata">

**Author:** ![DomPython](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/dompython/32/29567_2.png) [@DomPython](https://discourse.joplinapp.org/u/DomPython)\
**Post date:** [15 September 2026 16:27 UTC](https://discourse.joplinapp.org/t/form/50965/3 "2026-09-15T16:27:06Z")

</div>

Hello GrantZ!

When I saw your message, I started by reading the beginning, which I understood, then I scrolled down and didn’t understand a thing. I’m not very good at English to begin with (I write in French and Deepl translates it for me), let alone Chinese…

I asked Firefox to translate it all for me, and that’s when I realised you’d sent me **a real goldmine**! It’s true that I was hoping there might be a plugin that was more user-friendly and intuitive; I’m not a developer, I use ‘no-code’ tools, I’m 70 years old, and I’m not a quick learner. But actually, if I take my time, I think I should be able to get the hang of it.

So a huge thank you for your generous reply. I’m just getting to know the world of open source and it’s magical!

I’ll take the liberty – if you’ll allow me – of getting back to you if I have a question or a problem.

Thanks again! :-)))

Dom'-)

---

<div class="post-metadata">

**Author:** ![GrantZ](https://avatars.discourse-cdn.com/v4/letter/g/bb73d2/32.png) [@GrantZ](https://discourse.joplinapp.org/u/GrantZ)\
**Post date:** [16 September 2026 01:31 UTC](https://discourse.joplinapp.org/t/form/50965/4 "2026-09-16T01:31:59Z")

</div>

Hi Dom,

Thank you so much for your reply! It really made me happy to read. 😊

I want to share something with you — I'm also not very good at English. I started using Joplin because I love it, and I began logging into the forum to share feedback and learn from others' great ideas. My usual approach is: I read the English original first, then use my browser's translation feature to convert it into Chinese. That way I can get the general meaning. And just like you, I'm not good at coding either.

So if my reply didn't fully solve your problem, I hope you'll understand. But if even a small part of what I wrote was helpful to you, I'll feel really glad. I truly hope we can keep in touch and communicate more.

Please don't hesitate to ask me questions anytime — I'm here to help!

Warm regards,  
Grant Zheng

* * *

Bonjour Dom,

Merci beaucoup pour votre réponse ! J'ai été vraiment heureux de la lire. 😊

Je veux partager quelque chose avec vous — je ne suis pas très bon non plus en anglais. J'ai commencé à utiliser Joplin parce que je l'aime beaucoup, et je me suis connecté au forum pour partager des retours et apprendre des bonnes idées des autres. Mon habitude est : je lis d'abord le texte original en anglais, puis j'utilise la fonction de traduction de mon navigateur pour le convertir en chinois. Comme ça, je peux comprendre le sens général. Et comme vous, je ne suis pas bon en programmation.

Donc, si ma réponse n'a pas complètement résolu votre problème, j'espère que vous me comprendrez. Mais si même une petite partie de ce que j'ai écrit vous a été utile, je serai vraiment content. J'espère vraiment que nous pouvons rester en contact et communiquer plus.

N'hésitez pas à me poser des questions à tout moment — je suis là pour aider !

Cordialement,  
Grant Zheng

---

<div class="post-metadata">

**Author:** ![DomPython](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/dompython/32/29567_2.png) [@DomPython](https://discourse.joplinapp.org/u/DomPython)\
**Post date:** [16 September 2026 16:31 UTC](https://discourse.joplinapp.org/t/form/50965/5 "2026-09-16T16:31:06Z")

</div>

Hello, my Chinese friend!  
I was born in 1956, and I never would have thought I’d one day be corresponding with a Chinese person! The Internet and translation tools are truly amazing!  
I took a closer look at your message from yesterday. But to be honest, I didn’t understand much of it!  
I posted another request ([Vertical Table?](https://discourse.joplinapp.org/t/vertical-table/50976)) approaching the problem from a different angle, and I’ve found my solution.  
But I’d still be curious to understand the details you shared with me. Could you give me a concrete example, using the table I included in my other post? I’d love to see how to use these codes.  
Dom’-)

---

<div class="post-metadata">

**Author:** ![GrantZ](https://avatars.discourse-cdn.com/v4/letter/g/bb73d2/32.png) [@GrantZ](https://discourse.joplinapp.org/u/GrantZ)\
**Post date:** [18 September 2026 08:38 UTC](https://discourse.joplinapp.org/t/form/50965/6 "2026-09-18T08:38:22Z")

</div>

Hi Dom,

I’ve read your other post, and now I fully understand what you are trying to achieve. To be honest, I don’t yet have the knowledge to solve this particular problem for you.

What I shared earlier is merely a note template from the Templates plugin. It helps you quickly generate uniformly‑formatted notes or to‑do items, but it cannot create the interactive form you want.

I am looking through available documentation and resources to learn more about this feature. Hopefully I will be able to figure out a solution someday.

If you have other questions, you are welcome to share them, though I cannot guarantee I will have the answer.

Best regards, Grant
