본문으로 이동

틀:MainSectionGrid: 두 판 사이의 차이

Langrisser Wiki
영웅백과/장비/기술 섹션용 탭+슬롯그리드 템플릿 신규 생성
 
Cargo 쿼리 연동으로 전환 (정적 16슬롯 방식 대체)
 
1번째 줄: 1번째 줄:
<includeonly><div class="mainsection-tabs">{{{탭|}}}</div>
<includeonly><div class="mainsection-tabs">{{{탭|}}}</div>
<div class="mainsection-grid">
<div class="mainsection-grid">{{#cargo_query:tables={{{cargo_table|}}}=T
<div class="mainsection-slot"><div class="mainsection-slot-inner"></div></div>
|fields={{{cargo_fields|}}}
<div class="mainsection-slot"><div class="mainsection-slot-inner"></div></div>
|where={{{cargo_where|}}}
<div class="mainsection-slot"><div class="mainsection-slot-inner"></div></div>
|group by={{{cargo_group_by|}}}
<div class="mainsection-slot"><div class="mainsection-slot-inner"></div></div>
|order by={{{cargo_order_by|}}}
<div class="mainsection-slot"><div class="mainsection-slot-inner"></div></div>
|limit={{{cargo_limit|16}}}
<div class="mainsection-slot"><div class="mainsection-slot-inner"></div></div>
|format=template
<div class="mainsection-slot"><div class="mainsection-slot-inner"></div></div>
|template={{{cargo_template|}}}
<div class="mainsection-slot"><div class="mainsection-slot-inner"></div></div>
|named args=yes
<div class="mainsection-slot"><div class="mainsection-slot-inner"></div></div>
}}</div></includeonly><noinclude>
<div class="mainsection-slot"><div class="mainsection-slot-inner"></div></div>
이 템플릿은 대문 섹션 안에 (선택적) 탭 UI와 Cargo 쿼리 결과를 아이콘 그리드로 렌더링하는 데
<div class="mainsection-slot"><div class="mainsection-slot-inner"></div></div>
사용합니다. 쿼리 결과의 각 행은 <code>cargo_template</code>로 지정한 슬롯 템플릿에
<div class="mainsection-slot"><div class="mainsection-slot-inner"></div></div>
필드명=값 파라미터로 전달되어 그리드 슬롯 하나를 만듭니다.
<div class="mainsection-slot"><div class="mainsection-slot-inner"></div></div>
<div class="mainsection-slot"><div class="mainsection-slot-inner"></div></div>
<div class="mainsection-slot"><div class="mainsection-slot-inner"></div></div>
<div class="mainsection-slot"><div class="mainsection-slot-inner"></div></div>
</div></includeonly><noinclude>
이 템플릿은 대문 섹션 안에 (선택적) 탭 UI와 16개의 빈 플레이스홀더 슬롯 그리드를 만드는 데
사용합니다. 실제 아이템 데이터가 준비되면(Cargo 연동 등) 슬롯을 실제 아이콘으로 교체합니다.


=== 사용법 ===
=== 사용법 ===
<pre>
<pre>
{{MainSectionGrid
{{MainSectionGrid
|탭=<ul><li class="active">새로운!</li><li>LLR</li></ul>  (선택, 생략 시 탭 없음)
|탭=<ul><li class="active" data-rarity="all">새로운!</li><li data-rarity="LLR">LLR</li></ul>  (선택, 생략 시 탭 없음)
|cargo_table=Heroes
|cargo_fields=T.name_cn=name_cn,T.icon=icon,T.rarity=rarity
|cargo_where=T.icon IS NOT NULL AND T.icon != ''
|cargo_group_by=T.name_cn
|cargo_order_by=T.name_cn
|cargo_limit=300
|cargo_template=HeroGridSlot
}}
}}
</pre>
</pre>
'''중요(구현 메모)''': 내부적으로 <code>tables={{{cargo_table}}}=T</code> 형태로 항상 테이블 별칭
<code>T</code>를 붙인다(별칭 없이 단일 테이블을 그대로 쿼리하면 Cargo가 <code>_pageID</code> 백링크
컬럼 참조에서 SQL 오류를 내는 버그가 실측 확인됨 — group by를 쓰는 쿼리는 이 버그를 우회하지만,
group by가 없는 쿼리(장비/기술)는 반드시 별칭이 있어야 한다. 별칭을 항상 붙이는 쪽으로 통일).
따라서 <code>cargo_fields</code>/<code>cargo_where</code>/<code>cargo_group_by</code>/
<code>cargo_order_by</code> 작성 시 반드시 <code>T.</code> 접두사를 쓰고, <code>cargo_fields</code>는
<code>필드명=필드명</code> 형태(자기 자신에 별칭)로 써야 한다 — 그래야 <code>named args=yes</code>
옵션에서 슬롯 템플릿에 원래 필드명 그대로(예: <code>name_cn</code>)가 전달된다. 그렇지 않으면(별칭 없이
쓰면) Cargo가 밑줄을 공백으로 바꾼 표시용 라벨(예: <code>name cn</code>)을 파라미터 키로 써버려서
슬롯 템플릿의 <nowiki>{{{name_cn}}}</nowiki> 같은 파라미터가 채워지지 않는다.
where/group by가 빈 문자열이면 Cargo는 에러 없이 해당 절을 그냥 생략한다(실측 확인됨).


[[Category:템플릿]]
[[Category:템플릿]]
</noinclude>
</noinclude>

2026년 7월 14일 (화) 09:23 기준 최신판

이 템플릿은 대문 섹션 안에 (선택적) 탭 UI와 Cargo 쿼리 결과를 아이콘 그리드로 렌더링하는 데 사용합니다. 쿼리 결과의 각 행은 cargo_template로 지정한 슬롯 템플릿에 필드명=값 파라미터로 전달되어 그리드 슬롯 하나를 만듭니다.

사용법[편집]

{{MainSectionGrid
|탭=<ul><li class="active" data-rarity="all">새로운!</li><li data-rarity="LLR">LLR</li></ul>  (선택, 생략 시 탭 없음)
|cargo_table=Heroes
|cargo_fields=T.name_cn=name_cn,T.icon=icon,T.rarity=rarity
|cargo_where=T.icon IS NOT NULL AND T.icon != ''
|cargo_group_by=T.name_cn
|cargo_order_by=T.name_cn
|cargo_limit=300
|cargo_template=HeroGridSlot
}}

중요(구현 메모): 내부적으로 tables={{{cargo_table}}}=T 형태로 항상 테이블 별칭 T를 붙인다(별칭 없이 단일 테이블을 그대로 쿼리하면 Cargo가 _pageID 백링크 컬럼 참조에서 SQL 오류를 내는 버그가 실측 확인됨 — group by를 쓰는 쿼리는 이 버그를 우회하지만, group by가 없는 쿼리(장비/기술)는 반드시 별칭이 있어야 한다. 별칭을 항상 붙이는 쪽으로 통일). 따라서 cargo_fields/cargo_where/cargo_group_by/ cargo_order_by 작성 시 반드시 T. 접두사를 쓰고, cargo_fields는 필드명=필드명 형태(자기 자신에 별칭)로 써야 한다 — 그래야 named args=yes 옵션에서 슬롯 템플릿에 원래 필드명 그대로(예: name_cn)가 전달된다. 그렇지 않으면(별칭 없이 쓰면) Cargo가 밑줄을 공백으로 바꾼 표시용 라벨(예: name cn)을 파라미터 키로 써버려서 슬롯 템플릿의 {{{name_cn}}} 같은 파라미터가 채워지지 않는다.

where/group by가 빈 문자열이면 Cargo는 에러 없이 해당 절을 그냥 생략한다(실측 확인됨).