テンプレート処理中にエラーが発生しました。
Syntax error in template "57868206215768#32483061#37081361" in line 37, column 46:
Unknown built-in: "step". Help (latest version): https://freemarker.apache.org/docs/ref_builtins.html; you're using FreeMarker 2.3.33.
The alphabetical list of built-ins:
abs, absolute_template_name, ancestors, api,
boolean, byte,
c, c_lower_case, c_upper_case, cap_first, capitalize, ceiling, children, chop_linebreak, chunk, cn, contains, counter,
date, date_if_unknown, datetime, datetime_if_unknown, default, double, drop_while,
ends_with, ensure_ends_with, ensure_starts_with, esc, eval, eval_json, exists,
filter, first, float, floor,
groups,
has_api, has_content, has_next, html,
if_exists, index, index_of, int, interpret, is_boolean, is_collection, is_collection_ex, is_date, is_date_like, is_date_only, is_datetime, is_directive, is_enumerable, is_even_item, is_first, is_hash, is_hash_ex, is_indexable, is_infinite, is_last, is_macro, is_markup_output, is_method, is_nan, is_node, is_number, is_odd_item, is_sequence, is_string, is_time, is_transform, is_unknown_date_like, iso, iso_h, iso_h_nz, iso_local, iso_local_h, iso_local_h_nz, iso_local_m, iso_local_m_nz, iso_local_ms, iso_local_ms_nz, iso_local_nz, iso_m, iso_m_nz, iso_ms, iso_ms_nz, iso_nz, iso_utc, iso_utc_fz, iso_utc_h, iso_utc_h_nz, iso_utc_m, iso_utc_m_nz, iso_utc_ms, iso_utc_ms_nz, iso_utc_nz, item_cycle, item_parity, item_parity_cap,
j_string, join, js_string, json_string,
keep_after, keep_after_last, keep_before, keep_before_last, keys,
last, last_index_of, left_pad, length, long, lower_abc, lower_case,
map, markup_string, matches, max, min,
namespace, new, next_sibling, no_esc, node_name, node_namespace, node_type, number, number_to_date, number_to_datetime, number_to_time,
parent, previous_sibling,
remove_beginning, remove_ending, replace, reverse, right_pad, root, round, rtf,
seq_contains, seq_index_of, seq_last_index_of, sequence, short, size, sort, sort_by, split, starts_with, string, substring, switch,
take_while, then, time, time_if_unknown, trim, truncate, truncate_c, truncate_c_m, truncate_m, truncate_w, truncate_w_m,
uncap_first, upper_abc, upper_case, url, url_path,
values,
web_safe, with_args, with_args_last, word_list,
xhtml, xml
1<#assign
2 groupFriendlyURL=themeDisplay.getScopeGroup().getFriendlyURL()
3 groupPathFriendlyURLPublic=themeDisplay.getPathFriendlyURLPublic() + groupFriendlyURL
4 navigationJSONObject=jsonFactoryUtil.createJSONObject(htmlUtil.unescape(navigation.getData()?trim))
5 breadcrumbJSONArray=navigationJSONObject.getJSONArray("breadcrumb")
6 childrenJSONArray=navigationJSONObject.getJSONArray("children")
7 parentJSONObject=navigationJSONObject.getJSONObject("parent")
8 productJSONObject=breadcrumbJSONArray.getJSONObject(breadcrumbJSONArray.length()-1)!navigationJSONObject.getJSONObject("self")
9 siblingsJSONArray=navigationJSONObject.getJSONArray("siblings")
10 selfJSONObject=navigationJSONObject.getJSONObject("self")
11/>
12
13<div class="learn-article-nav">
14 <div class="learn-article-breadcrumbs">
15 <div class="learn-article-breadcrumbs-content">
16 <div class="align-items-baseline d-flex justify-content-between mb-3">
17 <ul aria-label="breadcrumb navigation" class="learn-article-breadcrumb" role="navigation">
18 <#if breadcrumbJSONArray.length() gt 0>
19 <#if breadcrumbJSONArray.length() lt 3>
20 <li>
21 <a href="/"><@clay["icon"] symbol="home-full" /></a>
22 </li>
23 <#list 0..breadcrumbJSONArray.length()-1 as i>
24 <li>
25 <a href='${breadcrumbJSONArray.getJSONObject(i).getString("url")}'>
26 ${breadcrumbJSONArray.getJSONObject(i).getString("title")}
27 </a>
28 </li>
29 </#list>
30 <#else>
31 <li>
32 <a href='${breadcrumbJSONArray.getJSONObject(0).getString("url")}'>...</a>
33 </li>
34
35 <#assign startIndex = breadcrumbJSONArray.length() - 1>
36 <#assign stopIndex = 1>
37 <#list startIndex..stopIndex?step(-1) as i>
38 <li>
39 <a href='${breadcrumbJSONArray.getJSONObject(i).getString("url")}'>
40 ${breadcrumbJSONArray.getJSONObject(i).getString("title")}
41 </a>
42 </li>
43 </#list>
44 </#if>
45 </#if>
46
47 <li>
48 ${navigationJSONObject.getJSONObject("self").getString("title")}
49 </li>
50 </ul>
51 </div>
52 </div>
53 </div>
54
55 <div class="learn-article-nav-content">
56 <#if parentJSONObject?has_content && parentJSONObject.getString("url")?has_content>
57 <div class="learn-article-nav-item learn-article-nav-parent p-3">
58 <div class="mr-2">
59 <a
60 href='${parentJSONObject.getString("url")}'>
61 <svg
62 class="lexicon-icon lexicon-icon-angle-left"
63 role="presentation"
64 viewBox="0 0 512 512">
65 <use xlink:href="/o/admin-theme/images/clay/icons.svg#angle-left"></use>
66 </svg>
67 </a>
68 </div>
69 <span>
70 ${parentJSONObject.getString("title")}
71 </span>
72 </div>
73 </#if>
74 <#if childrenJSONArray.length() gt 0>
75 <ul class="m-0 p-2">
76 <#list 0..childrenJSONArray.length()-1 as i>
77 <li class="learn-article-nav-item">
78 <a
79 class='liferay-nav-item ${(navigationJSONObject.getJSONObject("self").url == childrenJSONArray.getJSONObject(i).url)?then("selected", "")}'
80 href="${childrenJSONArray.getJSONObject(i).url}">
81 <span>
82 ${childrenJSONArray.getJSONObject(i).getString("title")}
83 </span>
84 </a>
85 </li>
86 </#list>
87 </ul>
88 <#elseif siblingsJSONArray.length() gt 0>
89 <ul class="m-0 p-2">
90 <#list 0..siblingsJSONArray.length()-1 as i>
91 <li class="learn-article-nav-item">
92 <a
93 class='liferay-nav-item ${(navigationJSONObject.getJSONObject("self").url == siblingsJSONArray.getJSONObject(i).url)?then("selected", "")}'
94 href="${siblingsJSONArray.getJSONObject(i).url}">
95 <span>
96 ${siblingsJSONArray.getJSONObject(i).getString("title")}
97 </span>
98 </a>
99 </li>
100 </#list>
101 </ul>
102 </#if>
103 </div>
104</div>
105<style>
106 .learn-article-breadcrumb {
107 display: flex;
108 flex-wrap: wrap;
109 gap: 2px;
110 }
111
112 .learn-article-breadcrumb li {
113 font-size: 13px;
114 color: #6C6C75;
115 font-weight: 400;
116 }
117
118 .learn-article-breadcrumb li+li::before {
119 content: "/";
120 padding: 0 8px;
121 }
122</style>