틀:MainSectionGrid: 두 판 사이의 차이
외관
영웅백과/장비/기술 섹션용 탭+슬롯그리드 템플릿 신규 생성 |
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 | ||
|fields={{{cargo_fields|}}} | |||
|where={{{cargo_where|}}} | |||
|group by={{{cargo_group_by|}}} | |||
|order by={{{cargo_order_by|}}} | |||
|limit={{{cargo_limit|16}}} | |||
|format=template | |||
|template={{{cargo_template|}}} | |||
|named args=yes | |||
}}</div></includeonly><noinclude> | |||
이 템플릿은 대문 섹션 안에 (선택적) 탭 UI와 Cargo 쿼리 결과를 아이콘 그리드로 렌더링하는 데 | |||
사용합니다. 쿼리 결과의 각 행은 <code>cargo_template</code>로 지정한 슬롯 템플릿에 | |||
필드명=값 파라미터로 전달되어 그리드 슬롯 하나를 만듭니다. | |||
</div></includeonly><noinclude> | |||
이 템플릿은 대문 섹션 안에 (선택적) 탭 UI와 | |||
사용합니다. | |||
=== 사용법 === | === 사용법 === | ||
<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는 에러 없이 해당 절을 그냥 생략한다(실측 확인됨).