97 lines
3.3 KiB
JSON
97 lines
3.3 KiB
JSON
{
|
|
"version": "1.0.0",
|
|
"layout_name": "board/index",
|
|
"permissions": [],
|
|
"extends": "_user_base",
|
|
"meta": {
|
|
"seo": {
|
|
"enabled": true,
|
|
"extensions": [
|
|
{ "type": "module", "id": "sirsoft-board" }
|
|
],
|
|
"data_sources": ["posts"],
|
|
"page_type": "board",
|
|
"toggle_setting": "$module_settings:sirsoft-board:seo.seo_board",
|
|
"vars": {
|
|
"site_name": "$core_settings:general.site_name",
|
|
"board_name": "{{posts.data.board.name ?? ''}}",
|
|
"board_description": "{{posts.data.board.description ?? ''}}"
|
|
},
|
|
"priority": 0.6,
|
|
"changefreq": "daily",
|
|
"og": {
|
|
"type": "website",
|
|
"description": "{{_seo.board.description ?? posts.data.board.description ?? ''}}"
|
|
},
|
|
"structured_data": {
|
|
"@type": "ItemList"
|
|
}
|
|
}
|
|
},
|
|
"data_sources": [
|
|
{
|
|
"id": "posts",
|
|
"label_key": "$t:editor.data_source.posts",
|
|
"type": "api",
|
|
"endpoint": "/api/modules/sirsoft-board/boards/{{route.slug}}/posts",
|
|
"method": "GET",
|
|
"params": {
|
|
"page": "{{query.page ?? 1}}",
|
|
"search": "{{query.search ?? ''}}",
|
|
"category": "{{query.category ?? ''}}",
|
|
"filters[0][field]": "{{query['filters[0][field]'] ?? ''}}",
|
|
"filters[0][value]": "{{query['filters[0][value]'] ?? ''}}",
|
|
"filters[0][operator]": "{{query['filters[0][operator]'] ?? ''}}",
|
|
"del": "{{query.del ?? ''}}"
|
|
},
|
|
"auto_fetch": true,
|
|
"auth_mode": "optional",
|
|
"refetchOnMount": true,
|
|
"errorHandling": {
|
|
"401": {
|
|
"handler": "sequence",
|
|
"actions": [
|
|
{ "handler": "toast", "params": { "type": "info", "message": "$t:board.login_required" } },
|
|
{ "handler": "redirectToLoginWithReturn" }
|
|
]
|
|
},
|
|
"403": {
|
|
"handler": "showErrorPage",
|
|
"params": {
|
|
"target": "content"
|
|
}
|
|
}
|
|
},
|
|
"onError": {
|
|
"handler": "setState",
|
|
"params": {
|
|
"target": "global",
|
|
"hasError": true
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"slots": {
|
|
"content": [
|
|
{
|
|
"comment": "로딩 스켈레톤 + 오류 페이지 (type 불명 시점에도 표시 필요 → _type_renderer 밖에 배치)",
|
|
"partial": "partials/board/index/_loading_error.json"
|
|
},
|
|
{
|
|
"type": "layout",
|
|
"name": "Container",
|
|
"if": "{{posts?.data?.board}}",
|
|
"props": {
|
|
"className": "py-8"
|
|
},
|
|
"children": [
|
|
{
|
|
"comment": "유형별 렌더러 (basic/gallery/card + fallback)",
|
|
"partial": "partials/board/index/_type_renderer.json"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|