Deployed 2063d78 to 5.4 with MkDocs 1.1.2 and mike 0.5.5
[GitHub/WoltLab/woltlab.github.io.git] / latest / view / templates / index.html
CommitLineData
0c5338dd
TD
1
2<!doctype html>
3<html lang="en" class="no-js">
4 <head>
5
6 <meta charset="utf-8">
7 <meta name="viewport" content="width=device-width,initial-scale=1">
8
9
10
11
12 <link rel="shortcut icon" href="../../assets/default.favicon.ico">
fb88dc6e 13 <meta name="generator" content="mkdocs-1.1.2, mkdocs-material-7.0.5">
0c5338dd
TD
14
15
16
17 <title>Templates - WoltLab Suite Documentation</title>
18
19
20
fb88dc6e 21 <link rel="stylesheet" href="../../assets/stylesheets/main.77f3fd56.min.css">
0c5338dd
TD
22
23
24 <link rel="stylesheet" href="../../assets/stylesheets/palette.7fa14f5b.min.css">
25
26
27
28 <meta name="theme-color" content="#009485">
29
30
31
32
33
fd8430cb
WG
34
35
0c5338dd
TD
36
37
38 <link rel="stylesheet" href="../../stylesheets/extra.css">
39
40
41
42
43
44 </head>
45
46
47
48
49
50
51
52 <body dir="ltr" data-md-color-scheme="" data-md-color-primary="teal" data-md-color-accent="">
53
54
55
56 <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
57 <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
58 <label class="md-overlay" for="__drawer"></label>
59 <div data-md-component="skip">
60
61
62 <a href="#templates" class="md-skip">
63 Skip to content
64 </a>
65
66 </div>
67 <div data-md-component="announce">
68
69 <aside class="md-announce">
70 <div class="md-announce__inner md-grid md-typeset">
71
72 <a href="https://www.woltlab.com">Back to <strong>woltlab.com</strong></a>
73
74 </div>
75 </aside>
76
77 </div>
78
79
80
81<header class="md-header" data-md-component="header">
82 <nav class="md-header__inner md-grid" aria-label="Header">
83 <a href="../.." title="WoltLab Suite Documentation" class="md-header__button md-logo" aria-label="WoltLab Suite Documentation">
84
85 <img src="../../assets/logo.png" alt="logo">
86
87 </a>
88 <label class="md-header__button md-icon" for="__drawer">
89 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
90 </label>
91 <div class="md-header__title" data-md-component="header-title">
92 <div class="md-header__ellipsis">
93 <div class="md-header__topic">
94 <span class="md-ellipsis">
95 WoltLab Suite Documentation
96 </span>
97 </div>
98 <div class="md-header__topic" data-md-component="header-topic">
99 <span class="md-ellipsis">
100
101 Templates
102
103 </span>
104 </div>
105 </div>
106 </div>
107 <div class="md-header__options">
108
109 </div>
110
0c5338dd 111
7124f4cb
WG
112 <div class="md-header__source">
113
114<a href="https://github.com/WoltLab/docs.woltlab.com/" title="Go to repository" class="md-source" data-md-component="source">
115 <div class="md-source__icon md-icon">
116
117 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05L244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
118 </div>
119 <div class="md-source__repository">
120 GitHub
121 </div>
122</a>
123 </div>
124
0c5338dd
TD
125 </nav>
126</header>
127
128 <div class="md-container" data-md-component="container">
129
130
131
132
133 <main class="md-main" data-md-component="main">
134 <div class="md-main__inner md-grid">
135
136
137
138 <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
139 <div class="md-sidebar__scrollwrap">
140 <div class="md-sidebar__inner">
141
142
143
144
145
146<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
147 <label class="md-nav__title" for="__drawer">
148 <a href="../.." title="WoltLab Suite Documentation" class="md-nav__button md-logo" aria-label="WoltLab Suite Documentation">
149
150 <img src="../../assets/logo.png" alt="logo">
151
152 </a>
153 WoltLab Suite Documentation
154 </label>
155
7124f4cb
WG
156 <div class="md-nav__source">
157
158<a href="https://github.com/WoltLab/docs.woltlab.com/" title="Go to repository" class="md-source" data-md-component="source">
159 <div class="md-source__icon md-icon">
160
161 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05L244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
162 </div>
163 <div class="md-source__repository">
164 GitHub
165 </div>
166</a>
167 </div>
168
0c5338dd
TD
169 <ul class="md-nav__list" data-md-scrollfix>
170
171
172
173
174
175
176
177
178 <li class="md-nav__item">
179 <a href="../../getting-started/" class="md-nav__link">
180 Getting Started
181 </a>
182 </li>
183
184
185
186
187
188
189
190
191
192
193
194 <li class="md-nav__item md-nav__item--nested">
195
196
197 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2" type="checkbox" id="__nav_2" >
198
199 <label class="md-nav__link" for="__nav_2">
200 PHP API
201 <span class="md-nav__icon md-icon"></span>
202 </label>
203 <nav class="md-nav" aria-label="PHP API" data-md-level="1">
204 <label class="md-nav__title" for="__nav_2">
205 <span class="md-nav__icon md-icon"></span>
206 PHP API
207 </label>
208 <ul class="md-nav__list" data-md-scrollfix>
209
210
211
212
213
214 <li class="md-nav__item">
215 <a href="../../php/pages/" class="md-nav__link">
216 Pages
217 </a>
218 </li>
219
220
221
222
223
224
225
226 <li class="md-nav__item">
227 <a href="../../php/database-objects/" class="md-nav__link">
228 Database Objects
229 </a>
230 </li>
231
232
233
234
235
236
237
238 <li class="md-nav__item">
239 <a href="../../php/database-access/" class="md-nav__link">
240 Database Access
241 </a>
242 </li>
243
244
245
246
247
248
249
250 <li class="md-nav__item">
251 <a href="../../php/exceptions/" class="md-nav__link">
252 Exceptions
253 </a>
254 </li>
255
256
257
258
259
260
261
262
263 <li class="md-nav__item md-nav__item--nested">
264
265
266 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_5" type="checkbox" id="__nav_2_5" >
267
268 <label class="md-nav__link" for="__nav_2_5">
269 API
270 <span class="md-nav__icon md-icon"></span>
271 </label>
272 <nav class="md-nav" aria-label="API" data-md-level="2">
273 <label class="md-nav__title" for="__nav_2_5">
274 <span class="md-nav__icon md-icon"></span>
275 API
276 </label>
277 <ul class="md-nav__list" data-md-scrollfix>
278
279
280
281
282
283 <li class="md-nav__item">
284 <a href="../../php/api/caches/" class="md-nav__link">
285 Caches
286 </a>
287 </li>
288
289
290
291
292
293
294
295 <li class="md-nav__item">
296 <a href="../../php/api/comments/" class="md-nav__link">
297 Comments
298 </a>
299 </li>
300
301
302
303
304
305
306
307 <li class="md-nav__item">
308 <a href="../../php/api/cronjobs/" class="md-nav__link">
309 Cronjobs
310 </a>
311 </li>
312
313
314
315
316
317
318
319 <li class="md-nav__item">
320 <a href="../../php/api/events/" class="md-nav__link">
321 Events
322 </a>
323 </li>
324
325
326
327
328
329
330
331
332 <li class="md-nav__item md-nav__item--nested">
333
334
335 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_5_5" type="checkbox" id="__nav_2_5_5" >
336
337 <label class="md-nav__link" for="__nav_2_5_5">
338 Form Builder
339 <span class="md-nav__icon md-icon"></span>
340 </label>
341 <nav class="md-nav" aria-label="Form Builder" data-md-level="3">
342 <label class="md-nav__title" for="__nav_2_5_5">
343 <span class="md-nav__icon md-icon"></span>
344 Form Builder
345 </label>
346 <ul class="md-nav__list" data-md-scrollfix>
347
348
349
350
351
352 <li class="md-nav__item">
353 <a href="../../php/api/form_builder/overview/" class="md-nav__link">
354 Overview
355 </a>
356 </li>
357
358
359
360
361
362
363
364 <li class="md-nav__item">
365 <a href="../../php/api/form_builder/structure/" class="md-nav__link">
366 Structure
367 </a>
368 </li>
369
370
371
372
373
374
375
376 <li class="md-nav__item">
377 <a href="../../php/api/form_builder/form_fields/" class="md-nav__link">
378 Fields
379 </a>
380 </li>
381
382
383
384
385
386
387
388 <li class="md-nav__item">
389 <a href="../../php/api/form_builder/validation_data/" class="md-nav__link">
390 Validation and Data
391 </a>
392 </li>
393
394
395
396
397
398
399
400 <li class="md-nav__item">
401 <a href="../../php/api/form_builder/dependencies/" class="md-nav__link">
402 Dependencies
403 </a>
404 </li>
405
406
407
408 </ul>
409 </nav>
410 </li>
411
412
413
414
415
416
417
418 <li class="md-nav__item">
419 <a href="../../php/api/package_installation_plugins/" class="md-nav__link">
420 Package Installation Plugins
421 </a>
422 </li>
423
424
425
426
427
428
429
430 <li class="md-nav__item">
431 <a href="../../php/api/user_activity_points/" class="md-nav__link">
432 User Activity Points
433 </a>
434 </li>
435
436
437
438
439
440
441
442 <li class="md-nav__item">
443 <a href="../../php/api/user_notifications/" class="md-nav__link">
444 User Notifications
445 </a>
446 </li>
447
448
449
450
451
452
453
454 <li class="md-nav__item">
455 <a href="../../php/api/sitemaps/" class="md-nav__link">
456 Sitemaps
457 </a>
458 </li>
459
460
461
462 </ul>
463 </nav>
464 </li>
465
466
467
468
469
470
471
472 <li class="md-nav__item">
473 <a href="../../php/code-style/" class="md-nav__link">
474 Code Style
475 </a>
476 </li>
477
478
479
480
481
482
483
484 <li class="md-nav__item">
485 <a href="../../php/apps/" class="md-nav__link">
486 Apps
487 </a>
488 </li>
489
490
491
492
493
494
495
496 <li class="md-nav__item">
497 <a href="../../php/gdpr/" class="md-nav__link">
498 GDPR
499 </a>
500 </li>
501
502
503
504 </ul>
505 </nav>
506 </li>
507
508
509
510
511
512
513
514
515
516
517
518
519
520 <li class="md-nav__item md-nav__item--active md-nav__item--nested">
521
522
523 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3" type="checkbox" id="__nav_3" checked>
524
525 <label class="md-nav__link" for="__nav_3">
526 Languages, Templates & CSS
527 <span class="md-nav__icon md-icon"></span>
528 </label>
529 <nav class="md-nav" aria-label="Languages, Templates & CSS" data-md-level="1">
530 <label class="md-nav__title" for="__nav_3">
531 <span class="md-nav__icon md-icon"></span>
532 Languages, Templates & CSS
533 </label>
534 <ul class="md-nav__list" data-md-scrollfix>
535
536
537
538
539
540 <li class="md-nav__item">
541 <a href="../languages/" class="md-nav__link">
542 Languages
543 </a>
544 </li>
545
546
547
548
549
550
551
552
553
554 <li class="md-nav__item md-nav__item--active">
555
556 <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
557
558
559
560
561 <label class="md-nav__link md-nav__link--active" for="__toc">
562 Templates
563 <span class="md-nav__icon md-icon"></span>
564 </label>
565
566 <a href="./" class="md-nav__link md-nav__link--active">
567 Templates
568 </a>
569
570
571<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
572
573
574
575
576
577 <label class="md-nav__title" for="__toc">
578 <span class="md-nav__icon md-icon"></span>
579 Table of contents
580 </label>
581 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
582
583 <li class="md-nav__item">
584 <a href="#template-types-and-conventions" class="md-nav__link">
585 Template Types and Conventions
586 </a>
587
588</li>
589
590 <li class="md-nav__item">
591 <a href="#installing-templates" class="md-nav__link">
592 Installing Templates
593 </a>
594
595</li>
596
597 <li class="md-nav__item">
598 <a href="#base-templates" class="md-nav__link">
599 Base Templates
600 </a>
601
602 <nav class="md-nav" aria-label="Base Templates">
603 <ul class="md-nav__list">
604
605 <li class="md-nav__item">
606 <a href="#frontend" class="md-nav__link">
607 Frontend
608 </a>
609
610</li>
611
612 <li class="md-nav__item">
613 <a href="#backend" class="md-nav__link">
614 Backend
615 </a>
616
617</li>
618
619 </ul>
620 </nav>
621
622</li>
623
624 <li class="md-nav__item">
625 <a href="#common-template-components" class="md-nav__link">
626 Common Template Components
627 </a>
628
629 <nav class="md-nav" aria-label="Common Template Components">
630 <ul class="md-nav__list">
631
632 <li class="md-nav__item">
633 <a href="#forms" class="md-nav__link">
634 Forms
635 </a>
636
637</li>
638
639 <li class="md-nav__item">
640 <a href="#tab-menus" class="md-nav__link">
641 Tab Menus
642 </a>
643
644</li>
645
646 </ul>
647 </nav>
648
649</li>
650
651 <li class="md-nav__item">
652 <a href="#template-scripting" class="md-nav__link">
653 Template Scripting
654 </a>
655
656 <nav class="md-nav" aria-label="Template Scripting">
657 <ul class="md-nav__list">
658
659 <li class="md-nav__item">
660 <a href="#template-variables" class="md-nav__link">
661 Template Variables
662 </a>
663
664 <nav class="md-nav" aria-label="Template Variables">
665 <ul class="md-nav__list">
666
667 <li class="md-nav__item">
668 <a href="#modifiers" class="md-nav__link">
669 Modifiers
670 </a>
671
672</li>
673
674 <li class="md-nav__item">
675 <a href="#system-template-variable" class="md-nav__link">
676 System Template Variable
677 </a>
678
679</li>
680
681 </ul>
682 </nav>
683
684</li>
685
686 <li class="md-nav__item">
687 <a href="#comments" class="md-nav__link">
688 Comments
689 </a>
690
691</li>
692
693 <li class="md-nav__item">
694 <a href="#conditions" class="md-nav__link">
695 Conditions
696 </a>
697
698</li>
699
700 <li class="md-nav__item">
701 <a href="#foreach-loops" class="md-nav__link">
702 Foreach Loops
703 </a>
704
705</li>
706
707 <li class="md-nav__item">
708 <a href="#including-other-templates" class="md-nav__link">
709 Including Other Templates
710 </a>
711
712</li>
713
714 <li class="md-nav__item">
715 <a href="#template-plugins" class="md-nav__link">
716 Template Plugins
717 </a>
718
719</li>
720
721 </ul>
722 </nav>
723
724</li>
725
726 </ul>
727
728</nav>
729
730 </li>
731
732
733
734
735
736
737
738 <li class="md-nav__item">
739 <a href="../css/" class="md-nav__link">
740 CSS
741 </a>
742 </li>
743
744
745
746 </ul>
747 </nav>
748 </li>
749
750
751
752
753
754
755
756
757
758
759
760 <li class="md-nav__item md-nav__item--nested">
761
762
763 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4" type="checkbox" id="__nav_4" >
764
765 <label class="md-nav__link" for="__nav_4">
766 JavaScript API
767 <span class="md-nav__icon md-icon"></span>
768 </label>
769 <nav class="md-nav" aria-label="JavaScript API" data-md-level="1">
770 <label class="md-nav__title" for="__nav_4">
771 <span class="md-nav__icon md-icon"></span>
772 JavaScript API
773 </label>
774 <ul class="md-nav__list" data-md-scrollfix>
775
776
777
778
779
780 <li class="md-nav__item">
781 <a href="../../javascript/general-usage/" class="md-nav__link">
782 General Usage
783 </a>
784 </li>
785
786
787
788
789
790
791
792
793 <li class="md-nav__item md-nav__item--nested">
794
795
796 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" >
797
798 <label class="md-nav__link" for="__nav_4_2">
799 New API
800 <span class="md-nav__icon md-icon"></span>
801 </label>
802 <nav class="md-nav" aria-label="New API" data-md-level="2">
803 <label class="md-nav__title" for="__nav_4_2">
804 <span class="md-nav__icon md-icon"></span>
805 New API
806 </label>
807 <ul class="md-nav__list" data-md-scrollfix>
808
809
810
811
812
813 <li class="md-nav__item">
814 <a href="../../javascript/new-api_writing-a-module/" class="md-nav__link">
815 Writing a module
816 </a>
817 </li>
818
819
820
821
822
823
824
825 <li class="md-nav__item">
826 <a href="../../javascript/new-api_data-structures/" class="md-nav__link">
827 Data Structures
828 </a>
829 </li>
830
831
832
833
834
835
836
837 <li class="md-nav__item">
838 <a href="../../javascript/new-api_core/" class="md-nav__link">
839 Core Functions
840 </a>
841 </li>
842
843
844
845
846
847
848
849 <li class="md-nav__item">
850 <a href="../../javascript/new-api_dom/" class="md-nav__link">
851 DOM
852 </a>
853 </li>
854
855
856
857
858
859
860
861 <li class="md-nav__item">
862 <a href="../../javascript/new-api_events/" class="md-nav__link">
863 Event Handling
864 </a>
865 </li>
866
867
868
869
870
871
872
873 <li class="md-nav__item">
874 <a href="../../javascript/new-api_ajax/" class="md-nav__link">
875 Ajax
876 </a>
877 </li>
878
879
880
881
882
883
884
885 <li class="md-nav__item">
886 <a href="../../javascript/new-api_dialogs/" class="md-nav__link">
887 Dialogs
888 </a>
889 </li>
890
891
892
893
894
895
896
897 <li class="md-nav__item">
898 <a href="../../javascript/new-api_browser/" class="md-nav__link">
899 Browser and Screen Sizes
900 </a>
901 </li>
902
903
904
905
906
907
908
909 <li class="md-nav__item">
910 <a href="../../javascript/new-api_ui/" class="md-nav__link">
911 User Interface
912 </a>
913 </li>
914
915
916
917 </ul>
918 </nav>
919 </li>
920
921
922
923
924
925
926
927 <li class="md-nav__item">
928 <a href="../../javascript/legacy-api/" class="md-nav__link">
929 Legacy API
930 </a>
931 </li>
932
933
934
935
936
937
938
939 <li class="md-nav__item">
940 <a href="../../javascript/helper-functions/" class="md-nav__link">
941 Helper Functions
942 </a>
943 </li>
944
945
946
947
948
949
950
951 <li class="md-nav__item">
952 <a href="../../javascript/code-snippets/" class="md-nav__link">
953 Code Snippets
954 </a>
955 </li>
956
957
958
959 </ul>
960 </nav>
961 </li>
962
963
964
965
966
967
968
969
970
971
972
973 <li class="md-nav__item md-nav__item--nested">
974
975
976 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" type="checkbox" id="__nav_5" >
977
978 <label class="md-nav__link" for="__nav_5">
979 Package Components
980 <span class="md-nav__icon md-icon"></span>
981 </label>
982 <nav class="md-nav" aria-label="Package Components" data-md-level="1">
983 <label class="md-nav__title" for="__nav_5">
984 <span class="md-nav__icon md-icon"></span>
985 Package Components
986 </label>
987 <ul class="md-nav__list" data-md-scrollfix>
988
989
990
991
992
993 <li class="md-nav__item">
994 <a href="../../package/package-xml/" class="md-nav__link">
995 package.xml
996 </a>
997 </li>
998
999
1000
1001
1002
1003
1004
1005
1006 <li class="md-nav__item md-nav__item--nested">
1007
1008
1009 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5_2" type="checkbox" id="__nav_5_2" >
1010
1011 <label class="md-nav__link" for="__nav_5_2">
1012 PIPs
1013 <span class="md-nav__icon md-icon"></span>
1014 </label>
1015 <nav class="md-nav" aria-label="PIPs" data-md-level="2">
1016 <label class="md-nav__title" for="__nav_5_2">
1017 <span class="md-nav__icon md-icon"></span>
1018 PIPs
1019 </label>
1020 <ul class="md-nav__list" data-md-scrollfix>
1021
1022
1023
1024
1025
1026 <li class="md-nav__item">
1027 <a href="../../package/pip/" class="md-nav__link">
1028 Overview
1029 </a>
1030 </li>
1031
1032
1033
1034
1035
1036
1037
1038 <li class="md-nav__item">
1039 <a href="../../package/pip/acl-option/" class="md-nav__link">
1040 aclOption
1041 </a>
1042 </li>
1043
1044
1045
1046
1047
1048
1049
1050 <li class="md-nav__item">
1051 <a href="../../package/pip/acp-menu/" class="md-nav__link">
1052 acpMenu
1053 </a>
1054 </li>
1055
1056
1057
1058
1059
1060
1061
1062 <li class="md-nav__item">
1063 <a href="../../package/pip/acp-search-provider/" class="md-nav__link">
1064 acpSearchProvider
1065 </a>
1066 </li>
1067
1068
1069
1070
1071
1072
1073
1074 <li class="md-nav__item">
1075 <a href="../../package/pip/acp-template/" class="md-nav__link">
1076 acpTemplate
1077 </a>
1078 </li>
1079
1080
1081
1082
1083
1084
1085
1086 <li class="md-nav__item">
1087 <a href="../../package/pip/bbcode/" class="md-nav__link">
1088 bbcode
1089 </a>
1090 </li>
1091
1092
1093
1094
1095
1096
1097
1098 <li class="md-nav__item">
1099 <a href="../../package/pip/box/" class="md-nav__link">
1100 box
1101 </a>
1102 </li>
1103
1104
1105
1106
1107
1108
1109
1110 <li class="md-nav__item">
1111 <a href="../../package/pip/clipboard-action/" class="md-nav__link">
1112 clipboardAction
1113 </a>
1114 </li>
1115
1116
1117
1118
1119
1120
1121
1122 <li class="md-nav__item">
1123 <a href="../../package/pip/core-object/" class="md-nav__link">
1124 coreObject
1125 </a>
1126 </li>
1127
1128
1129
1130
1131
1132
1133
1134 <li class="md-nav__item">
1135 <a href="../../package/pip/cronjob/" class="md-nav__link">
1136 cronjob
1137 </a>
1138 </li>
1139
1140
1141
1142
1143
1144
1145
1146 <li class="md-nav__item">
1147 <a href="../../package/pip/event-listener/" class="md-nav__link">
1148 eventListener
1149 </a>
1150 </li>
1151
1152
1153
1154
1155
1156
1157
1158 <li class="md-nav__item">
1159 <a href="../../package/pip/file/" class="md-nav__link">
1160 file
1161 </a>
1162 </li>
1163
1164
1165
1166
1167
1168
1169
1170 <li class="md-nav__item">
1171 <a href="../../package/pip/language/" class="md-nav__link">
1172 language
1173 </a>
1174 </li>
1175
1176
1177
1178
1179
1180
1181
1182 <li class="md-nav__item">
1183 <a href="../../package/pip/media-provider/" class="md-nav__link">
1184 mediaProvider
1185 </a>
1186 </li>
1187
1188
1189
1190
1191
1192
1193
1194 <li class="md-nav__item">
1195 <a href="../../package/pip/menu/" class="md-nav__link">
1196 menu
1197 </a>
1198 </li>
1199
1200
1201
1202
1203
1204
1205
1206 <li class="md-nav__item">
1207 <a href="../../package/pip/menu-item/" class="md-nav__link">
1208 menuItem
1209 </a>
1210 </li>
1211
1212
1213
1214
1215
1216
1217
1218 <li class="md-nav__item">
1219 <a href="../../package/pip/object-type/" class="md-nav__link">
1220 objectType
1221 </a>
1222 </li>
1223
1224
1225
1226
1227
1228
1229
1230 <li class="md-nav__item">
1231 <a href="../../package/pip/object-type-definition/" class="md-nav__link">
1232 objectTypeDefinition
1233 </a>
1234 </li>
1235
1236
1237
1238
1239
1240
1241
1242 <li class="md-nav__item">
1243 <a href="../../package/pip/option/" class="md-nav__link">
1244 option
1245 </a>
1246 </li>
1247
1248
1249
1250
1251
1252
1253
1254 <li class="md-nav__item">
1255 <a href="../../package/pip/page/" class="md-nav__link">
1256 page
1257 </a>
1258 </li>
1259
1260
1261
1262
1263
1264
1265
1266 <li class="md-nav__item">
1267 <a href="../../package/pip/pip/" class="md-nav__link">
1268 pip
1269 </a>
1270 </li>
1271
1272
1273
1274
1275
1276
1277
1278 <li class="md-nav__item">
1279 <a href="../../package/pip/script/" class="md-nav__link">
1280 script
1281 </a>
1282 </li>
1283
1284
1285
1286
1287
1288
1289
1290 <li class="md-nav__item">
1291 <a href="../../package/pip/smiley/" class="md-nav__link">
1292 smiley
1293 </a>
1294 </li>
1295
1296
1297
1298
1299
1300
1301
1302 <li class="md-nav__item">
1303 <a href="../../package/pip/sql/" class="md-nav__link">
1304 sql
1305 </a>
1306 </li>
1307
1308
1309
1310
1311
1312
1313
1314 <li class="md-nav__item">
1315 <a href="../../package/pip/style/" class="md-nav__link">
1316 style
1317 </a>
1318 </li>
1319
1320
1321
1322
1323
1324
1325
1326 <li class="md-nav__item">
1327 <a href="../../package/pip/template/" class="md-nav__link">
1328 template
1329 </a>
1330 </li>
1331
1332
1333
1334
1335
1336
1337
1338 <li class="md-nav__item">
1339 <a href="../../package/pip/template-listener/" class="md-nav__link">
1340 templateListener
1341 </a>
1342 </li>
1343
1344
1345
1346
1347
1348
1349
1350 <li class="md-nav__item">
1351 <a href="../../package/pip/user-group-option/" class="md-nav__link">
1352 userGroupOption
1353 </a>
1354 </li>
1355
1356
1357
1358
1359
1360
1361
1362 <li class="md-nav__item">
1363 <a href="../../package/pip/user-menu/" class="md-nav__link">
1364 userMenu
1365 </a>
1366 </li>
1367
1368
1369
1370
1371
1372
1373
1374 <li class="md-nav__item">
1375 <a href="../../package/pip/user-notification-event/" class="md-nav__link">
1376 userNotificationEvent
1377 </a>
1378 </li>
1379
1380
1381
1382
1383
1384
1385
1386 <li class="md-nav__item">
1387 <a href="../../package/pip/user-option/" class="md-nav__link">
1388 userOption
1389 </a>
1390 </li>
1391
1392
1393
1394
1395
1396
1397
1398 <li class="md-nav__item">
1399 <a href="../../package/pip/user-profile-menu/" class="md-nav__link">
1400 userProfileMenu
1401 </a>
1402 </li>
1403
1404
1405
1406 </ul>
1407 </nav>
1408 </li>
1409
1410
1411
1412
1413
1414
1415
1416 <li class="md-nav__item">
1417 <a href="../../package/database-php-api/" class="md-nav__link">
1418 Database PHP API
1419 </a>
1420 </li>
1421
1422
1423
1424 </ul>
1425 </nav>
1426 </li>
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438 <li class="md-nav__item md-nav__item--nested">
1439
1440
1441 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6" type="checkbox" id="__nav_6" >
1442
1443 <label class="md-nav__link" for="__nav_6">
1444 Migration
1445 <span class="md-nav__icon md-icon"></span>
1446 </label>
1447 <nav class="md-nav" aria-label="Migration" data-md-level="1">
1448 <label class="md-nav__title" for="__nav_6">
1449 <span class="md-nav__icon md-icon"></span>
1450 Migration
1451 </label>
1452 <ul class="md-nav__list" data-md-scrollfix>
1453
1454
1455
1456
1457
1458
1459 <li class="md-nav__item md-nav__item--nested">
1460
1461
1462 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_1" type="checkbox" id="__nav_6_1" >
1463
1464 <label class="md-nav__link" for="__nav_6_1">
1465 Migrating from WSC 5.3
1466 <span class="md-nav__icon md-icon"></span>
1467 </label>
1468 <nav class="md-nav" aria-label="Migrating from WSC 5.3" data-md-level="2">
1469 <label class="md-nav__title" for="__nav_6_1">
1470 <span class="md-nav__icon md-icon"></span>
1471 Migrating from WSC 5.3
1472 </label>
1473 <ul class="md-nav__list" data-md-scrollfix>
1474
1475
1476
1477
1478
1479 <li class="md-nav__item">
1480 <a href="../../migration/wsc53/php/" class="md-nav__link">
1481 PHP API
1482 </a>
1483 </li>
1484
1485
1486
1487
1488
1489
1490
1491 <li class="md-nav__item">
1492 <a href="../../migration/wsc53/session/" class="md-nav__link">
1493 Session Handling and Authentication
1494 </a>
1495 </li>
1496
1497
1498
1499
1500
1501
1502
1503 <li class="md-nav__item">
1504 <a href="../../migration/wsc53/javascript/" class="md-nav__link">
1505 JavaScript
1506 </a>
1507 </li>
1508
1509
1510
1511
1512
1513
1514
1515 <li class="md-nav__item">
1516 <a href="../../migration/wsc53/templates/" class="md-nav__link">
1517 Templates
1518 </a>
1519 </li>
1520
1521
1522
1523
1524
1525
1526
1527 <li class="md-nav__item">
1528 <a href="../../migration/wsc53/libraries/" class="md-nav__link">
1529 Third Party Libraries
1530 </a>
1531 </li>
1532
1533
1534
1535 </ul>
1536 </nav>
1537 </li>
1538
1539
1540
1541
1542
1543
1544
1545
1546 <li class="md-nav__item md-nav__item--nested">
1547
1548
1549 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_2" type="checkbox" id="__nav_6_2" >
1550
1551 <label class="md-nav__link" for="__nav_6_2">
1552 Migrating from WSC 5.2
1553 <span class="md-nav__icon md-icon"></span>
1554 </label>
1555 <nav class="md-nav" aria-label="Migrating from WSC 5.2" data-md-level="2">
1556 <label class="md-nav__title" for="__nav_6_2">
1557 <span class="md-nav__icon md-icon"></span>
1558 Migrating from WSC 5.2
1559 </label>
1560 <ul class="md-nav__list" data-md-scrollfix>
1561
1562
1563
1564
1565
1566 <li class="md-nav__item">
1567 <a href="../../migration/wsc52/php/" class="md-nav__link">
1568 PHP API
1569 </a>
1570 </li>
1571
1572
1573
1574
1575
1576
1577
1578 <li class="md-nav__item">
1579 <a href="../../migration/wsc52/templates/" class="md-nav__link">
1580 Templates and Languages
1581 </a>
1582 </li>
1583
1584
1585
1586
1587
1588
1589
1590 <li class="md-nav__item">
1591 <a href="../../migration/wsc52/libraries/" class="md-nav__link">
1592 Third Party Libraries
1593 </a>
1594 </li>
1595
1596
1597
1598 </ul>
1599 </nav>
1600 </li>
1601
1602
1603
1604
1605
1606
1607
1608
1609 <li class="md-nav__item md-nav__item--nested">
1610
1611
1612 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_3" type="checkbox" id="__nav_6_3" >
1613
1614 <label class="md-nav__link" for="__nav_6_3">
1615 Migrating from WSC 3.1
1616 <span class="md-nav__icon md-icon"></span>
1617 </label>
1618 <nav class="md-nav" aria-label="Migrating from WSC 3.1" data-md-level="2">
1619 <label class="md-nav__title" for="__nav_6_3">
1620 <span class="md-nav__icon md-icon"></span>
1621 Migrating from WSC 3.1
1622 </label>
1623 <ul class="md-nav__list" data-md-scrollfix>
1624
1625
1626
1627
1628
1629 <li class="md-nav__item">
1630 <a href="../../migration/wsc31/php/" class="md-nav__link">
1631 PHP API
1632 </a>
1633 </li>
1634
1635
1636
1637 </ul>
1638 </nav>
1639 </li>
1640
1641
1642
1643
1644
1645
1646
1647
1648 <li class="md-nav__item md-nav__item--nested">
1649
1650
1651 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_4" type="checkbox" id="__nav_6_4" >
1652
1653 <label class="md-nav__link" for="__nav_6_4">
1654 Migrating from WSC 3.0
1655 <span class="md-nav__icon md-icon"></span>
1656 </label>
1657 <nav class="md-nav" aria-label="Migrating from WSC 3.0" data-md-level="2">
1658 <label class="md-nav__title" for="__nav_6_4">
1659 <span class="md-nav__icon md-icon"></span>
1660 Migrating from WSC 3.0
1661 </label>
1662 <ul class="md-nav__list" data-md-scrollfix>
1663
1664
1665
1666
1667
1668 <li class="md-nav__item">
1669 <a href="../../migration/wsc30/php/" class="md-nav__link">
1670 PHP API
1671 </a>
1672 </li>
1673
1674
1675
1676
1677
1678
1679
1680 <li class="md-nav__item">
1681 <a href="../../migration/wsc30/javascript/" class="md-nav__link">
1682 JavaScript API
1683 </a>
1684 </li>
1685
1686
1687
1688
1689
1690
1691
1692 <li class="md-nav__item">
1693 <a href="../../migration/wsc30/templates/" class="md-nav__link">
1694 Templates
1695 </a>
1696 </li>
1697
1698
1699
1700
1701
1702
1703
1704 <li class="md-nav__item">
1705 <a href="../../migration/wsc30/css/" class="md-nav__link">
1706 CSS
1707 </a>
1708 </li>
1709
1710
1711
1712
1713
1714
1715
1716 <li class="md-nav__item">
1717 <a href="../../migration/wsc30/package/" class="md-nav__link">
1718 Package Components
1719 </a>
1720 </li>
1721
1722
1723
1724 </ul>
1725 </nav>
1726 </li>
1727
1728
1729
1730
1731
1732
1733
1734
1735 <li class="md-nav__item md-nav__item--nested">
1736
1737
1738 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_5" type="checkbox" id="__nav_6_5" >
1739
1740 <label class="md-nav__link" for="__nav_6_5">
1741 Migrating from WCF 2.1
1742 <span class="md-nav__icon md-icon"></span>
1743 </label>
1744 <nav class="md-nav" aria-label="Migrating from WCF 2.1" data-md-level="2">
1745 <label class="md-nav__title" for="__nav_6_5">
1746 <span class="md-nav__icon md-icon"></span>
1747 Migrating from WCF 2.1
1748 </label>
1749 <ul class="md-nav__list" data-md-scrollfix>
1750
1751
1752
1753
1754
1755 <li class="md-nav__item">
1756 <a href="../../migration/wcf21/php/" class="md-nav__link">
1757 PHP API
1758 </a>
1759 </li>
1760
1761
1762
1763
1764
1765
1766
1767 <li class="md-nav__item">
1768 <a href="../../migration/wcf21/templates/" class="md-nav__link">
1769 Templates
1770 </a>
1771 </li>
1772
1773
1774
1775
1776
1777
1778
1779 <li class="md-nav__item">
1780 <a href="../../migration/wcf21/css/" class="md-nav__link">
1781 CSS
1782 </a>
1783 </li>
1784
1785
1786
1787
1788
1789
1790
1791 <li class="md-nav__item">
1792 <a href="../../migration/wcf21/package/" class="md-nav__link">
1793 Package Components
1794 </a>
1795 </li>
1796
1797
1798
1799 </ul>
1800 </nav>
1801 </li>
1802
1803
1804
1805 </ul>
1806 </nav>
1807 </li>
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819 <li class="md-nav__item md-nav__item--nested">
1820
1821
1822 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7" type="checkbox" id="__nav_7" >
1823
1824 <label class="md-nav__link" for="__nav_7">
1825 Tutorials
1826 <span class="md-nav__icon md-icon"></span>
1827 </label>
1828 <nav class="md-nav" aria-label="Tutorials" data-md-level="1">
1829 <label class="md-nav__title" for="__nav_7">
1830 <span class="md-nav__icon md-icon"></span>
1831 Tutorials
1832 </label>
1833 <ul class="md-nav__list" data-md-scrollfix>
1834
1835
1836
1837
1838
1839
1840 <li class="md-nav__item md-nav__item--nested">
1841
1842
1843 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7_1" type="checkbox" id="__nav_7_1" >
1844
1845 <label class="md-nav__link" for="__nav_7_1">
1846 Tutorial Series
1847 <span class="md-nav__icon md-icon"></span>
1848 </label>
1849 <nav class="md-nav" aria-label="Tutorial Series" data-md-level="2">
1850 <label class="md-nav__title" for="__nav_7_1">
1851 <span class="md-nav__icon md-icon"></span>
1852 Tutorial Series
1853 </label>
1854 <ul class="md-nav__list" data-md-scrollfix>
1855
1856
1857
1858
1859
1860 <li class="md-nav__item">
1861 <a href="../../tutorial/series/overview/" class="md-nav__link">
1862 Overview
1863 </a>
1864 </li>
1865
1866
1867
1868
1869
1870
1871
1872 <li class="md-nav__item">
1873 <a href="../../tutorial/series/part_1/" class="md-nav__link">
1874 Part 1
1875 </a>
1876 </li>
1877
1878
1879
1880
1881
1882
1883
1884 <li class="md-nav__item">
1885 <a href="../../tutorial/series/part_2/" class="md-nav__link">
1886 Part 2
1887 </a>
1888 </li>
1889
1890
1891
1892
1893
1894
1895
1896 <li class="md-nav__item">
1897 <a href="../../tutorial/series/part_3/" class="md-nav__link">
1898 Part 3
1899 </a>
1900 </li>
1901
1902
1903
1904 </ul>
1905 </nav>
1906 </li>
1907
1908
1909
1910 </ul>
1911 </nav>
1912 </li>
1913
1914
1915
1916 </ul>
1917</nav>
1918 </div>
1919 </div>
1920 </div>
1921
1922
1923
1924 <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
1925 <div class="md-sidebar__scrollwrap">
1926 <div class="md-sidebar__inner">
1927
1928<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1929
1930
1931
1932
1933
1934 <label class="md-nav__title" for="__toc">
1935 <span class="md-nav__icon md-icon"></span>
1936 Table of contents
1937 </label>
1938 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1939
1940 <li class="md-nav__item">
1941 <a href="#template-types-and-conventions" class="md-nav__link">
1942 Template Types and Conventions
1943 </a>
1944
1945</li>
1946
1947 <li class="md-nav__item">
1948 <a href="#installing-templates" class="md-nav__link">
1949 Installing Templates
1950 </a>
1951
1952</li>
1953
1954 <li class="md-nav__item">
1955 <a href="#base-templates" class="md-nav__link">
1956 Base Templates
1957 </a>
1958
1959 <nav class="md-nav" aria-label="Base Templates">
1960 <ul class="md-nav__list">
1961
1962 <li class="md-nav__item">
1963 <a href="#frontend" class="md-nav__link">
1964 Frontend
1965 </a>
1966
1967</li>
1968
1969 <li class="md-nav__item">
1970 <a href="#backend" class="md-nav__link">
1971 Backend
1972 </a>
1973
1974</li>
1975
1976 </ul>
1977 </nav>
1978
1979</li>
1980
1981 <li class="md-nav__item">
1982 <a href="#common-template-components" class="md-nav__link">
1983 Common Template Components
1984 </a>
1985
1986 <nav class="md-nav" aria-label="Common Template Components">
1987 <ul class="md-nav__list">
1988
1989 <li class="md-nav__item">
1990 <a href="#forms" class="md-nav__link">
1991 Forms
1992 </a>
1993
1994</li>
1995
1996 <li class="md-nav__item">
1997 <a href="#tab-menus" class="md-nav__link">
1998 Tab Menus
1999 </a>
2000
2001</li>
2002
2003 </ul>
2004 </nav>
2005
2006</li>
2007
2008 <li class="md-nav__item">
2009 <a href="#template-scripting" class="md-nav__link">
2010 Template Scripting
2011 </a>
2012
2013 <nav class="md-nav" aria-label="Template Scripting">
2014 <ul class="md-nav__list">
2015
2016 <li class="md-nav__item">
2017 <a href="#template-variables" class="md-nav__link">
2018 Template Variables
2019 </a>
2020
2021 <nav class="md-nav" aria-label="Template Variables">
2022 <ul class="md-nav__list">
2023
2024 <li class="md-nav__item">
2025 <a href="#modifiers" class="md-nav__link">
2026 Modifiers
2027 </a>
2028
2029</li>
2030
2031 <li class="md-nav__item">
2032 <a href="#system-template-variable" class="md-nav__link">
2033 System Template Variable
2034 </a>
2035
2036</li>
2037
2038 </ul>
2039 </nav>
2040
2041</li>
2042
2043 <li class="md-nav__item">
2044 <a href="#comments" class="md-nav__link">
2045 Comments
2046 </a>
2047
2048</li>
2049
2050 <li class="md-nav__item">
2051 <a href="#conditions" class="md-nav__link">
2052 Conditions
2053 </a>
2054
2055</li>
2056
2057 <li class="md-nav__item">
2058 <a href="#foreach-loops" class="md-nav__link">
2059 Foreach Loops
2060 </a>
2061
2062</li>
2063
2064 <li class="md-nav__item">
2065 <a href="#including-other-templates" class="md-nav__link">
2066 Including Other Templates
2067 </a>
2068
2069</li>
2070
2071 <li class="md-nav__item">
2072 <a href="#template-plugins" class="md-nav__link">
2073 Template Plugins
2074 </a>
2075
2076</li>
2077
2078 </ul>
2079 </nav>
2080
2081</li>
2082
2083 </ul>
2084
2085</nav>
2086 </div>
2087 </div>
2088 </div>
2089
2090
2091 <div class="md-content" data-md-component="content">
2092 <article class="md-content__inner md-typeset">
2093
2094
9b8bddda 2095 <a href="https://github.com/WoltLab/docs.woltlab.com/edit/5.4/docs/view/templates.md" title="Edit this page" class="md-content__button md-icon">
7124f4cb
WG
2096 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"/></svg>
2097 </a>
2098
0c5338dd
TD
2099
2100 <h1 id="templates">Templates<a class="headerlink" href="#templates" title="Permanent link">#</a></h1>
2101<p>Templates are responsible for the output a user sees when requesting a page (while the PHP code is responsible for providing the data that will be shown).
2102Templates are text files with <code>.tpl</code> as the file extension.
2103WoltLab Suite Core compiles the template files once into a PHP file that is executed when a user requests the page.
2104In subsequent request, as the PHP file containing the compiled template already exists, compiling the template is not necessary anymore.</p>
2105<h2 id="template-types-and-conventions">Template Types and Conventions<a class="headerlink" href="#template-types-and-conventions" title="Permanent link">#</a></h2>
2106<p>WoltLab Suite Core supports two types of templates:
2107frontend templates (or simply <em>templates</em>) and backend templates (<em>ACP templates</em>).
2108Each type of template is only available in its respective domain, thus frontend templates cannot be included or used in the ACP and vice versa.</p>
2109<p>For pages and forms, the name of the template matches the unqualified name of the PHP class except for the <code>Page</code> or <code>Form</code> suffix:</p>
2110<ul>
2111<li><code>RegisterForm.class.php</code> → <code>register.tpl</code></li>
2112<li><code>UserPage.class.php</code> → <code>user.tpl</code></li>
2113</ul>
2114<p>If you follow this convention, WoltLab Suite Core will automatically determine the template name so that you do not have to explicitly set it.</p>
2115<div class="admonition info">
2116<p class="admonition-title">For forms that handle creating and editing objects, in general, there are two form classes: <code>FooAddForm</code> and <code>FooEditForm</code>. WoltLab Suite Core, however, generally only uses one template <code>fooAdd.tpl</code> and the template variable <code>$action</code> to distinguish between creating a new object (<code>$action = 'add'</code>) and editing an existing object (<code>$action = 'edit'</code>) as the differences between templates for adding and editing an object are minimal.</p>
2117</div>
2118<h2 id="installing-templates">Installing Templates<a class="headerlink" href="#installing-templates" title="Permanent link">#</a></h2>
2119<p>Templates and ACP templates are installed by two different package installation plugins:
2120the <a href="../../package/pip/template/">template PIP</a> and the <a href="../../package/pip/acp-template/">ACP template PIP</a>.
2121More information about installing templates can be found on those pages. </p>
2122<h2 id="base-templates">Base Templates<a class="headerlink" href="#base-templates" title="Permanent link">#</a></h2>
2123<h3 id="frontend">Frontend<a class="headerlink" href="#frontend" title="Permanent link">#</a></h3>
2124<div class="highlight"><pre><span></span><code><span class="cp">{</span><span class="nf">include</span> <span class="na">file</span><span class="o">=</span><span class="s1">&#39;header&#39;</span><span class="cp">}</span><span class="x"></span>
2125
2126<span class="cp">{</span><span class="c">* content *</span><span class="cp">}</span><span class="x"></span>
2127
2128<span class="cp">{</span><span class="nf">include</span> <span class="na">file</span><span class="o">=</span><span class="s1">&#39;footer&#39;</span><span class="cp">}</span><span class="x"></span>
2129</code></pre></div>
0c5338dd
TD
2130<h3 id="backend">Backend<a class="headerlink" href="#backend" title="Permanent link">#</a></h3>
2131<div class="highlight"><pre><span></span><code><span class="cp">{</span><span class="nf">include</span> <span class="na">file</span><span class="o">=</span><span class="s1">&#39;header&#39;</span> <span class="na">pageTitle</span><span class="o">=</span><span class="s1">&#39;foo.bar.baz&#39;</span><span class="cp">}</span><span class="x"></span>
2132
2133<span class="x">&lt;header class=&quot;contentHeader&quot;&gt;</span>
2134<span class="x"> &lt;div class=&quot;contentHeaderTitle&quot;&gt;</span>
2135<span class="x"> &lt;h1 class=&quot;contentTitle&quot;&gt;Title&lt;/h1&gt;</span>
2136<span class="x"> &lt;/div&gt;</span>
2137
2138<span class="x"> &lt;nav class=&quot;contentHeaderNavigation&quot;&gt;</span>
2139<span class="x"> &lt;ul&gt;</span>
2140<span class="x"> </span><span class="cp">{</span><span class="c">* your default content header navigation buttons *</span><span class="cp">}</span><span class="x"></span>
2141
2142<span class="x"> </span><span class="cp">{</span><span class="nf">event</span> <span class="na">name</span><span class="o">=</span><span class="s1">&#39;contentHeaderNavigation&#39;</span><span class="cp">}</span><span class="x"></span>
2143<span class="x"> &lt;/ul&gt;</span>
2144<span class="x"> &lt;/nav&gt;</span>
2145<span class="x">&lt;/header&gt;</span>
2146
2147<span class="cp">{</span><span class="c">* content *</span><span class="cp">}</span><span class="x"></span>
2148
2149<span class="cp">{</span><span class="nf">include</span> <span class="na">file</span><span class="o">=</span><span class="s1">&#39;footer&#39;</span><span class="cp">}</span><span class="x"></span>
2150</code></pre></div>
0c5338dd
TD
2151<p><code>foo.bar.baz</code> is the language item that contains the title of the page.</p>
2152<h2 id="common-template-components">Common Template Components<a class="headerlink" href="#common-template-components" title="Permanent link">#</a></h2>
2153<h3 id="forms">Forms<a class="headerlink" href="#forms" title="Permanent link">#</a></h3>
2154<div class="admonition info">
2155<p class="admonition-title">For new forms, use the new <a href="../../php/api/form_builder/overview/">form builder API</a> introduced with WoltLab Suite 5.2.</p>
2156</div>
2157<div class="highlight"><pre><span></span><code><span class="x">&lt;form method=&quot;post&quot; action=&quot;</span><span class="cp">{</span><span class="nf">link</span> <span class="na">controller</span><span class="o">=</span><span class="s1">&#39;FooBar&#39;</span><span class="cp">}{</span><span class="nf">/link</span><span class="cp">}</span><span class="x">&quot;&gt;</span>
2158<span class="x"> &lt;div class=&quot;section&quot;&gt;</span>
2159<span class="x"> &lt;dl</span><span class="cp">{</span><span class="nf">if</span> <span class="nv">$errorField</span> <span class="o">==</span> <span class="s1">&#39;baz&#39;</span><span class="cp">}</span><span class="x"> class=&quot;formError&quot;</span><span class="cp">{</span><span class="nf">/if</span><span class="cp">}</span><span class="x">&gt;</span>
2160<span class="x"> &lt;dt&gt;&lt;label for=&quot;baz&quot;&gt;</span><span class="cp">{</span><span class="nf">lang</span><span class="cp">}</span><span class="x">foo.bar.baz</span><span class="cp">{</span><span class="nf">/lang</span><span class="cp">}</span><span class="x">&lt;/label&gt;&lt;/dt&gt;</span>
2161<span class="x"> &lt;dd&gt;</span>
2162<span class="x"> &lt;input type=&quot;text&quot; id=&quot;baz&quot; name=&quot;baz&quot; value=&quot;</span><span class="cp">{</span><span class="nv">$baz</span><span class="cp">}</span><span class="x">&quot; class=&quot;long&quot; required autofocus&gt;</span>
2163<span class="x"> </span><span class="cp">{</span><span class="nf">if</span> <span class="nv">$errorField</span> <span class="o">==</span> <span class="s1">&#39;baz&#39;</span><span class="cp">}</span><span class="x"></span>
2164<span class="x"> &lt;small class=&quot;innerError&quot;&gt;</span>
2165<span class="x"> </span><span class="cp">{</span><span class="nf">if</span> <span class="nv">$errorType</span> <span class="o">==</span> <span class="s1">&#39;empty&#39;</span><span class="cp">}</span><span class="x"></span>
2166<span class="x"> </span><span class="cp">{</span><span class="nf">lang</span><span class="cp">}</span><span class="x">wcf.global.form.error.empty</span><span class="cp">{</span><span class="nf">/lang</span><span class="cp">}</span><span class="x"></span>
2167<span class="x"> </span><span class="cp">{</span><span class="nf">else</span><span class="cp">}</span><span class="x"></span>
2168<span class="x"> </span><span class="cp">{</span><span class="nf">lang</span><span class="cp">}</span><span class="x">foo.bar.baz.error.</span><span class="cp">{</span><span class="o">@</span><span class="nv">$errorType</span><span class="cp">}{</span><span class="nf">/lang</span><span class="cp">}</span><span class="x"></span>
2169<span class="x"> </span><span class="cp">{</span><span class="nf">/if</span><span class="cp">}</span><span class="x"></span>
2170<span class="x"> &lt;/small&gt;</span>
2171<span class="x"> </span><span class="cp">{</span><span class="nf">/if</span><span class="cp">}</span><span class="x"></span>
2172<span class="x"> &lt;/dd&gt;</span>
2173<span class="x"> &lt;/dl&gt;</span>
2174
2175<span class="x"> &lt;dl&gt;</span>
2176<span class="x"> &lt;dt&gt;&lt;label for=&quot;bar&quot;&gt;</span><span class="cp">{</span><span class="nf">lang</span><span class="cp">}</span><span class="x">foo.bar.bar</span><span class="cp">{</span><span class="nf">/lang</span><span class="cp">}</span><span class="x">&lt;/label&gt;&lt;/dt&gt;</span>
2177<span class="x"> &lt;dd&gt;</span>
2178<span class="x"> &lt;textarea name=&quot;bar&quot; id=&quot;bar&quot; cols=&quot;40&quot; rows=&quot;10&quot;&gt;</span><span class="cp">{</span><span class="nv">$bar</span><span class="cp">}</span><span class="x">&lt;/textarea&gt;</span>
2179<span class="x"> </span><span class="cp">{</span><span class="nf">if</span> <span class="nv">$errorField</span> <span class="o">==</span> <span class="s1">&#39;bar&#39;</span><span class="cp">}</span><span class="x"></span>
2180<span class="x"> &lt;small class=&quot;innerError&quot;&gt;</span><span class="cp">{</span><span class="nf">lang</span><span class="cp">}</span><span class="x">foo.bar.bar.error.</span><span class="cp">{</span><span class="o">@</span><span class="nv">$errorType</span><span class="cp">}{</span><span class="nf">/lang</span><span class="cp">}</span><span class="x">&lt;/small&gt;</span>
2181<span class="x"> </span><span class="cp">{</span><span class="nf">/if</span><span class="cp">}</span><span class="x"></span>
2182<span class="x"> &lt;/dd&gt;</span>
2183<span class="x"> &lt;/dl&gt;</span>
2184
2185<span class="x"> </span><span class="cp">{</span><span class="c">* other fields *</span><span class="cp">}</span><span class="x"></span>
2186
2187<span class="x"> </span><span class="cp">{</span><span class="nf">event</span> <span class="na">name</span><span class="o">=</span><span class="s1">&#39;dataFields&#39;</span><span class="cp">}</span><span class="x"></span>
2188<span class="x"> &lt;/div&gt;</span>
2189
2190<span class="x"> </span><span class="cp">{</span><span class="c">* other sections *</span><span class="cp">}</span><span class="x"></span>
2191
2192<span class="x"> </span><span class="cp">{</span><span class="nf">event</span> <span class="na">name</span><span class="o">=</span><span class="s1">&#39;sections&#39;</span><span class="cp">}</span><span class="x"></span>
2193
2194<span class="x"> &lt;div class=&quot;formSubmit&quot;&gt;</span>
2195<span class="x"> &lt;input type=&quot;submit&quot; value=&quot;</span><span class="cp">{</span><span class="nf">lang</span><span class="cp">}</span><span class="x">wcf.global.button.submit</span><span class="cp">{</span><span class="nf">/lang</span><span class="cp">}</span><span class="x">&quot; accesskey=&quot;s&quot;&gt;</span>
2196<span class="x"> </span><span class="cp">{</span><span class="nf">csrfToken</span><span class="cp">}</span><span class="x"></span>
2197<span class="x"> &lt;/div&gt;</span>
2198<span class="x">&lt;/form&gt;</span>
2199</code></pre></div>
0c5338dd
TD
2200<h3 id="tab-menus">Tab Menus<a class="headerlink" href="#tab-menus" title="Permanent link">#</a></h3>
2201<div class="highlight"><pre><span></span><code><span class="x">&lt;div class=&quot;section tabMenuContainer&quot;&gt;</span>
2202<span class="x"> &lt;nav class=&quot;tabMenu&quot;&gt;</span>
2203<span class="x"> &lt;ul&gt;</span>
2204<span class="x"> &lt;li&gt;&lt;a href=&quot;</span><span class="cp">{</span><span class="o">@</span><span class="nv">$__wcf</span><span class="o">-&gt;</span><span class="na">getAnchor</span><span class="o">(</span><span class="s1">&#39;tab1&#39;</span><span class="o">)</span><span class="cp">}</span><span class="x">&quot;&gt;Tab 1&lt;/a&gt;&lt;/li&gt;</span>
2205<span class="x"> &lt;li&gt;&lt;a href=&quot;</span><span class="cp">{</span><span class="o">@</span><span class="nv">$__wcf</span><span class="o">-&gt;</span><span class="na">getAnchor</span><span class="o">(</span><span class="s1">&#39;tab2&#39;</span><span class="o">)</span><span class="cp">}</span><span class="x">&quot;&gt;Tab 2&lt;/a&gt;&lt;/li&gt;</span>
2206
2207<span class="x"> </span><span class="cp">{</span><span class="nf">event</span> <span class="na">name</span><span class="o">=</span><span class="s1">&#39;tabMenuTabs&#39;</span><span class="cp">}</span><span class="x"></span>
2208<span class="x"> &lt;/ul&gt;</span>
2209<span class="x"> &lt;/nav&gt;</span>
2210
2211<span class="x"> &lt;div id=&quot;tab1&quot; class=&quot;tabMenuContent&quot;&gt;</span>
2212<span class="x"> &lt;div class=&quot;section&quot;&gt;</span>
2213<span class="x"> </span><span class="cp">{</span><span class="c">* contents of first tab *</span><span class="cp">}</span><span class="x"></span>
2214<span class="x"> &lt;/div&gt;</span>
2215<span class="x"> &lt;/div&gt;</span>
2216
2217<span class="x"> &lt;div id=&quot;tab2&quot; class=&quot;tabMenuContainer tabMenuContent&quot;&gt;</span>
2218<span class="x"> &lt;nav class=&quot;menu&quot;&gt;</span>
2219<span class="x"> &lt;ul&gt;</span>
2220<span class="x"> &lt;li&gt;&lt;a href=&quot;</span><span class="cp">{</span><span class="o">@</span><span class="nv">$__wcf</span><span class="o">-&gt;</span><span class="na">getAnchor</span><span class="o">(</span><span class="s1">&#39;tab2A&#39;</span><span class="o">)</span><span class="cp">}</span><span class="x">&quot;&gt;Tab 2A&lt;/a&gt;&lt;/li&gt;</span>
2221<span class="x"> &lt;li&gt;&lt;a href=&quot;</span><span class="cp">{</span><span class="o">@</span><span class="nv">$__wcf</span><span class="o">-&gt;</span><span class="na">getAnchor</span><span class="o">(</span><span class="s1">&#39;tab2B&#39;</span><span class="o">)</span><span class="cp">}</span><span class="x">&quot;&gt;Tab 2B&lt;/a&gt;&lt;/li&gt;</span>
2222
2223<span class="x"> </span><span class="cp">{</span><span class="nf">event</span> <span class="na">name</span><span class="o">=</span><span class="s1">&#39;tabMenuTab2Subtabs&#39;</span><span class="cp">}</span><span class="x"></span>
2224<span class="x"> &lt;/ul&gt;</span>
2225<span class="x"> &lt;/nav&gt;</span>
2226
2227<span class="x"> &lt;div id=&quot;tab2A&quot; class=&quot;tabMenuContent&quot;&gt;</span>
2228<span class="x"> &lt;div class=&quot;section&quot;&gt;</span>
2229<span class="x"> </span><span class="cp">{</span><span class="c">* contents of first subtab for second tab *</span><span class="cp">}</span><span class="x"></span>
2230<span class="x"> &lt;/div&gt;</span>
2231<span class="x"> &lt;/div&gt;</span>
2232
2233<span class="x"> &lt;div id=&quot;tab2B&quot; class=&quot;tabMenuContent&quot;&gt;</span>
2234<span class="x"> &lt;div class=&quot;section&quot;&gt;</span>
2235<span class="x"> </span><span class="cp">{</span><span class="c">* contents of second subtab for second tab *</span><span class="cp">}</span><span class="x"></span>
2236<span class="x"> &lt;/div&gt;</span>
2237<span class="x"> &lt;/div&gt;</span>
2238
2239<span class="x"> </span><span class="cp">{</span><span class="nf">event</span> <span class="na">name</span><span class="o">=</span><span class="s1">&#39;tabMenuTab2Contents&#39;</span><span class="cp">}</span><span class="x"></span>
2240<span class="x"> &lt;/div&gt;</span>
2241
2242<span class="x"> </span><span class="cp">{</span><span class="nf">event</span> <span class="na">name</span><span class="o">=</span><span class="s1">&#39;tabMenuContents&#39;</span><span class="cp">}</span><span class="x"></span>
2243<span class="x">&lt;/div&gt;</span>
2244</code></pre></div>
0c5338dd
TD
2245<h2 id="template-scripting">Template Scripting<a class="headerlink" href="#template-scripting" title="Permanent link">#</a></h2>
2246<h3 id="template-variables">Template Variables<a class="headerlink" href="#template-variables" title="Permanent link">#</a></h3>
2247<p>Template variables can be assigned via <code>WCF::getTPL()-&gt;assign('foo', 'bar')</code> and accessed in templates via <code>$foo</code>:</p>
2248<ul>
2249<li><code>{$foo}</code> will result in the contents of <code>$foo</code> to be passed to <code>StringUtil::encodeHTML()</code> before being printed.</li>
2250<li><code>{#$foo}</code> will result in the contents of <code>$foo</code> to be passed to <code>StringUtil::formatNumeric()</code> before being printed.
2251 Thus, this method is relevant when printing numbers and having them formatted correctly according the the user’s language.</li>
2252<li><code>{@$foo}</code> will result in the contents of <code>$foo</code> to be printed directly.
2253 In general, this method should not be used for user-generated input.</li>
2254</ul>
2255<p>Multiple template variables can be assigned by passing an array:</p>
2256<div class="highlight"><pre><span></span><code><span class="nx">WCF</span><span class="o">::</span><span class="na">getTPL</span><span class="p">()</span><span class="o">-&gt;</span><span class="na">assign</span><span class="p">([</span>
2257 <span class="s1">&#39;foo&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;bar&#39;</span><span class="p">,</span>
2258 <span class="s1">&#39;baz&#39;</span> <span class="o">=&gt;</span> <span class="k">false</span>
2259<span class="p">]);</span>
2260</code></pre></div>
0c5338dd
TD
2261<h4 id="modifiers">Modifiers<a class="headerlink" href="#modifiers" title="Permanent link">#</a></h4>
2262<p>If you want to call a function on a variable, you can use the modifier syntax:
2263<code>{@$foo|trim}</code>, for example, results in the trimmed contents of <code>$foo</code> to be printed.</p>
2264<h4 id="system-template-variable">System Template Variable<a class="headerlink" href="#system-template-variable" title="Permanent link">#</a></h4>
2265<p>The template variable <code>$tpl</code> is automatically assigned and is an array containing different data:</p>
2266<ul>
2267<li><code>$tpl[get]</code> contains <code>$_GET</code>.</li>
2268<li><code>$tpl[post]</code> contains <code>$_POST</code>.</li>
2269<li><code>$tpl[cookie]</code> contains <code>$_COOKIE</code>.</li>
2270<li><code>$tpl[server]</code> contains <code>$_SERVER</code>.</li>
2271<li><code>$tpl[env]</code> contains <code>$_ENV</code>.</li>
2272<li><code>$tpl[now]</code> contains <code>TIME_NOW</code> (current timestamp).</li>
2273</ul>
2274<p>Furthermore, the following template variables are also automatically assigned:</p>
2275<ul>
2276<li><code>$__wcf</code> contains the <code>WCF</code> object (or <code>WCFACP</code> object in the backend).</li>
2277</ul>
2278<h3 id="comments">Comments<a class="headerlink" href="#comments" title="Permanent link">#</a></h3>
2279<p>Comments are wrapped in <code>{*</code> and <code>*}</code> and can span multiple lines:</p>
2280<div class="highlight"><pre><span></span><code><span class="cp">{</span><span class="c">* some</span>
2281<span class="c"> comment *</span><span class="cp">}</span><span class="x"></span>
2282</code></pre></div>
0c5338dd
TD
2283<div class="admonition info">
2284<p class="admonition-title">The template compiler discards the comments, so that they not included in the compiled template.</p>
2285</div>
2286<h3 id="conditions">Conditions<a class="headerlink" href="#conditions" title="Permanent link">#</a></h3>
2287<p>Conditions follow a similar syntax to PHP code:</p>
2288<div class="highlight"><pre><span></span><code><span class="cp">{</span><span class="nf">if</span> <span class="nv">$foo</span> <span class="o">===</span> <span class="s1">&#39;bar&#39;</span><span class="cp">}</span><span class="x"></span>
2289<span class="x"> foo is bar</span>
2290<span class="cp">{</span><span class="nf">elseif</span> <span class="nv">$foo</span> <span class="o">===</span> <span class="s1">&#39;baz&#39;</span><span class="cp">}</span><span class="x"></span>
2291<span class="x"> foo is baz</span>
2292<span class="cp">{</span><span class="nf">else</span><span class="cp">}</span><span class="x"></span>
2293<span class="x"> foo is neither bar nor baz</span>
2294<span class="cp">{</span><span class="nf">/if</span><span class="cp">}</span><span class="x"></span>
2295</code></pre></div>
0c5338dd
TD
2296<p>The supported operators in conditions are <code>===</code>, <code>!==</code>, <code>==</code>, <code>!=</code>, <code>&lt;=</code>, <code>&lt;</code>, <code>&gt;=</code>, <code>&gt;</code>, <code>||</code>, <code>&amp;&amp;</code>, <code>!</code>, and <code>=</code>.</p>
2297<p>More examples:</p>
2298<div class="highlight"><pre><span></span><code><span class="cp">{</span><span class="nf">if</span> <span class="nv">$bar</span><span class="o">|</span><span class="na">isset</span><span class="cp">}</span><span class="x">…</span><span class="cp">{</span><span class="nf">/if</span><span class="cp">}</span><span class="x"></span>
2299
2300<span class="cp">{</span><span class="nf">if</span> <span class="nv">$bar</span><span class="o">|</span><span class="na">count</span> <span class="o">&gt;</span> <span class="m">3</span> <span class="o">&amp;&amp;</span> <span class="nv">$bar</span><span class="o">|</span><span class="na">count</span> <span class="o">&lt;</span> <span class="m">100</span><span class="cp">}</span><span class="x">…</span><span class="cp">{</span><span class="nf">/if</span><span class="cp">}</span><span class="x"></span>
2301</code></pre></div>
0c5338dd
TD
2302<h3 id="foreach-loops">Foreach Loops<a class="headerlink" href="#foreach-loops" title="Permanent link">#</a></h3>
2303<p>Foreach loops allow to iterate over arrays or iterable objects:</p>
2304<div class="highlight"><pre><span></span><code><span class="x">&lt;ul&gt;</span>
2305<span class="x"> </span><span class="cp">{</span><span class="nf">foreach</span> <span class="na">from</span><span class="o">=</span><span class="nv">$array</span> <span class="na">key</span><span class="o">=</span><span class="na">key</span> <span class="na">item</span><span class="o">=</span><span class="na">value</span><span class="cp">}</span><span class="x"></span>
2306<span class="x"> &lt;li&gt;</span><span class="cp">{</span><span class="nv">$key</span><span class="cp">}</span><span class="x">: </span><span class="cp">{</span><span class="nv">$value</span><span class="cp">}</span><span class="x">&lt;/li&gt;</span>
2307<span class="x"> </span><span class="cp">{</span><span class="nf">/foreach</span><span class="cp">}</span><span class="x"></span>
2308<span class="x">&lt;/ul&gt;</span>
2309</code></pre></div>
0c5338dd
TD
2310<p>While the <code>from</code> attribute containing the iterated structure and the <code>item</code> attribute containg the current value are mandatory, the <code>key</code> attribute is optional.
2311If the foreach loop has a name assigned to it via the <code>name</code> attribute, the <code>$tpl</code> template variable provides additional data about the loop:</p>
2312<div class="highlight"><pre><span></span><code><span class="x">&lt;ul&gt;</span>
2313<span class="x"> </span><span class="cp">{</span><span class="nf">foreach</span> <span class="na">from</span><span class="o">=</span><span class="nv">$array</span> <span class="na">key</span><span class="o">=</span><span class="na">key</span> <span class="na">item</span><span class="o">=</span><span class="na">value</span> <span class="na">name</span><span class="o">=</span><span class="na">foo</span><span class="cp">}</span><span class="x"></span>
2314<span class="x"> </span><span class="cp">{</span><span class="nf">if</span> <span class="nv">$tpl</span><span class="o">[</span><span class="na">foreach</span><span class="o">][</span><span class="na">foo</span><span class="o">][</span><span class="na">first</span><span class="o">]</span><span class="cp">}</span><span class="x"></span>
2315<span class="x"> something special for the first iteration</span>
2316<span class="x"> </span><span class="cp">{</span><span class="nf">elseif</span> <span class="nv">$tpl</span><span class="o">[</span><span class="na">foreach</span><span class="o">][</span><span class="na">foo</span><span class="o">][</span><span class="na">last</span><span class="o">]</span><span class="cp">}</span><span class="x"></span>
2317<span class="x"> something special for the last iteration</span>
2318<span class="x"> </span><span class="cp">{</span><span class="nf">/if</span><span class="cp">}</span><span class="x"></span>
2319
2320<span class="x"> &lt;li&gt;iteration </span><span class="cp">{</span><span class="err">#</span><span class="nv">$tpl</span><span class="o">[</span><span class="na">foreach</span><span class="o">][</span><span class="na">foo</span><span class="o">][</span><span class="na">iteration</span><span class="o">]+</span><span class="m">1</span><span class="cp">}</span><span class="x"> out of </span><span class="cp">{</span><span class="err">#</span><span class="nv">$tpl</span><span class="o">[</span><span class="na">foreach</span><span class="o">][</span><span class="na">foo</span><span class="o">][</span><span class="na">total</span><span class="o">]</span><span class="cp">}</span><span class="x"> </span><span class="cp">{</span><span class="nv">$key</span><span class="cp">}</span><span class="x">: </span><span class="cp">{</span><span class="nv">$value</span><span class="cp">}</span><span class="x">&lt;/li&gt;</span>
2321<span class="x"> </span><span class="cp">{</span><span class="nf">/foreach</span><span class="cp">}</span><span class="x"></span>
2322<span class="x">&lt;/ul&gt;</span>
2323</code></pre></div>
0c5338dd
TD
2324<p>In contrast to PHP’s foreach loop, templates also support <code>foreachelse</code>:</p>
2325<div class="highlight"><pre><span></span><code><span class="cp">{</span><span class="nf">foreach</span> <span class="na">from</span><span class="o">=</span><span class="nv">$array</span> <span class="na">item</span><span class="o">=</span><span class="na">value</span><span class="cp">}</span><span class="x"></span>
2326<span class="x"> …</span>
2327<span class="cp">{</span><span class="nf">foreachelse</span><span class="cp">}</span><span class="x"></span>
2328<span class="x"> there is nothing to iterate over</span>
2329<span class="cp">{</span><span class="nf">/foreach</span><span class="cp">}</span><span class="x"></span>
2330</code></pre></div>
0c5338dd
TD
2331<h3 id="including-other-templates">Including Other Templates<a class="headerlink" href="#including-other-templates" title="Permanent link">#</a></h3>
2332<p>To include template named <code>foo</code> from the same domain (frontend/backend), you can use</p>
2333<div class="highlight"><pre><span></span><code><span class="cp">{</span><span class="nf">include</span> <span class="na">file</span><span class="o">=</span><span class="s1">&#39;foo&#39;</span><span class="cp">}</span><span class="x"></span>
2334</code></pre></div>
0c5338dd
TD
2335<p>If the template belongs to an application, you have to specify that application using the <code>application</code> attribute:</p>
2336<div class="highlight"><pre><span></span><code><span class="cp">{</span><span class="nf">include</span> <span class="na">file</span><span class="o">=</span><span class="s1">&#39;foo&#39;</span> <span class="na">application</span><span class="o">=</span><span class="s1">&#39;app&#39;</span><span class="cp">}</span><span class="x"></span>
2337</code></pre></div>
0c5338dd
TD
2338<p>Additional template variables can be passed to the included template as additional attributes:</p>
2339<div class="highlight"><pre><span></span><code><span class="cp">{</span><span class="nf">include</span> <span class="na">file</span><span class="o">=</span><span class="s1">&#39;foo&#39;</span> <span class="na">application</span><span class="o">=</span><span class="s1">&#39;app&#39;</span> <span class="na">var1</span><span class="o">=</span><span class="s1">&#39;foo1&#39;</span> <span class="na">var2</span><span class="o">=</span><span class="s1">&#39;foo2&#39;</span><span class="cp">}</span><span class="x"></span>
2340</code></pre></div>
0c5338dd
TD
2341<h3 id="template-plugins">Template Plugins<a class="headerlink" href="#template-plugins" title="Permanent link">#</a></h3>
2342<p>An overview of all available template plugins can be found <a href="../template-plugins/">here</a>.</p>
2343
4a5c32e1
WG
2344
2345
2346
2347<hr>
2348<div class="md-source-date">
2349 <small>
2350
2351 Last update: 2021-01-15
2352
2353 </small>
2354</div>
2355
2356
0c5338dd
TD
2357
2358
2359
2360
2361
2362
2363 </article>
2364 </div>
2365 </div>
2366 </main>
2367
2368
2369<footer class="md-footer">
2370
2371 <nav class="md-footer__inner md-grid" aria-label="Footer">
2372
2373 <a href="../languages/" class="md-footer__link md-footer__link--prev" rel="prev">
2374 <div class="md-footer__button md-icon">
2375 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
2376 </div>
2377 <div class="md-footer__title">
2378 <div class="md-ellipsis">
2379 <span class="md-footer__direction">
2380 Previous
2381 </span>
2382 Languages
2383 </div>
2384 </div>
2385 </a>
2386
2387
2388 <a href="../css/" class="md-footer__link md-footer__link--next" rel="next">
2389 <div class="md-footer__title">
2390 <div class="md-ellipsis">
2391 <span class="md-footer__direction">
2392 Next
2393 </span>
2394 CSS
2395 </div>
2396 </div>
2397 <div class="md-footer__button md-icon">
2398 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
2399 </div>
2400 </a>
2401
2402 </nav>
2403
2404 <div class="md-footer-meta md-typeset">
2405 <div class="md-footer-meta__inner md-grid">
2406 <div class="md-footer-copyright">
2407
2408 <div class="md-footer-copyright__highlight">
2409 Copyright © 2020 WoltLab GmbH
2410 </div>
2411
2412 Made with
2413 <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2414 Material for MkDocs
2415 </a>
fb88dc6e 2416
0c5338dd
TD
2417 </div>
2418 <div class="md-footer-copyright">
2419 <a href="https://www.woltlab.com/legal-notice/">Legal Notice</a>
2420 <a href="https://www.woltlab.com/privacy-policy/">Privacy Policy</a>
2421</div>
2422 </div>
2423 </div>
2424</footer>
2425
2426 </div>
2427 <div class="md-dialog" data-md-component="dialog">
2428 <div class="md-dialog__inner md-typeset"></div>
2429 </div>
2430 <script id="__config" type="application/json">{"base": "../..", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}, "search": "../../assets/javascripts/workers/search.fb4a9340.min.js", "version": {"provider": "mike"}}</script>
2431
2432
fb88dc6e 2433 <script src="../../assets/javascripts/bundle.5cf3e710.min.js"></script>
0c5338dd
TD
2434
2435
2436 </body>
2437</html>