[{"data":1,"prerenderedAt":966},["ShallowReactive",2],{"navigation":3,"\u002Fcore-concepts\u002Fdynamic-pages":358,"\u002Fcore-concepts\u002Fdynamic-pages-surround":961},[4,14,36,69,140,341],{"title":5,"path":6,"stem":7,"children":8},"Introduction","\u002Fgetting-started","1.getting-started\u002F1.index",[9,10],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":15,"path":16,"stem":17,"children":18,"page":35},"Guides","\u002Fguides","2.guides",[19,23,27,31],{"title":20,"path":21,"stem":22},"Your First Layout","\u002Fguides\u002Fyour-first-layout","2.guides\u002F1.your-first-layout",{"title":24,"path":25,"stem":26},"Your First Page Template","\u002Fguides\u002Fyour-first-page-template","2.guides\u002F2.your-first-page-template",{"title":28,"path":29,"stem":30},"Your First Component","\u002Fguides\u002Fyour-first-component","2.guides\u002F3.your-first-component",{"title":32,"path":33,"stem":34},"Alternative UI Variants","\u002Fguides\u002Falternative-ui-variants","2.guides\u002F4.alternative-ui-variants",false,{"title":37,"path":38,"stem":39,"children":40,"page":35},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[41,45,49,53,57,61,65],{"title":42,"path":43,"stem":44},"How It All Works","\u002Fcore-concepts\u002Farchitecture","3.core-concepts\u002F1.architecture",{"title":46,"path":47,"stem":48},"The Data Model","\u002Fcore-concepts\u002Fthe-data-model","3.core-concepts\u002F2.the-data-model",{"title":50,"path":51,"stem":52},"Layouts & Pages","\u002Fcore-concepts\u002Flayouts-and-pages","3.core-concepts\u002F3.layouts-and-pages",{"title":54,"path":55,"stem":56},"Dynamic Pages","\u002Fcore-concepts\u002Fdynamic-pages","3.core-concepts\u002F4.dynamic-pages",{"title":58,"path":59,"stem":60},"Components","\u002Fcore-concepts\u002Fcomponents","3.core-concepts\u002F5.components",{"title":62,"path":63,"stem":64},"Draft & Publish Workflow","\u002Fcore-concepts\u002Fdraft-and-publish","3.core-concepts\u002F6.draft-and-publish",{"title":66,"path":67,"stem":68},"The Admin Panel","\u002Fcore-concepts\u002Fadmin-panel","3.core-concepts\u002F7.admin-panel",{"title":70,"path":71,"stem":72,"children":73,"page":35},"Api","\u002Fapi","4.api",[74,78,116,120,124,128,132,136],{"title":75,"path":76,"stem":77},"Bundle Setup","\u002Fapi\u002Fbundle-setup","4.api\u002F1.bundle-setup",{"title":58,"path":79,"stem":80,"children":81,"page":35},"\u002Fapi\u002Fcomponents","4.api\u002F2.components",[82,86,103],{"title":83,"path":84,"stem":85},"Creating Components","\u002Fapi\u002Fcomponents\u002Fcreating-components","4.api\u002F2.components\u002F1.creating-components",{"title":87,"path":88,"stem":89,"children":90,"page":35},"Annotations","\u002Fapi\u002Fcomponents\u002Fannotations","4.api\u002F2.components\u002F2.annotations",[91,95,99],{"title":92,"path":93,"stem":94},"Publishable","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fpublishable","4.api\u002F2.components\u002F2.annotations\u002F1.publishable",{"title":96,"path":97,"stem":98},"Uploadable","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fuploadable","4.api\u002F2.components\u002F2.annotations\u002F2.uploadable",{"title":100,"path":101,"stem":102},"Timestamped","\u002Fapi\u002Fcomponents\u002Fannotations\u002Ftimestamped","4.api\u002F2.components\u002F2.annotations\u002F3.timestamped",{"title":104,"path":105,"stem":106,"children":107,"page":35},"Built Ins","\u002Fapi\u002Fcomponents\u002Fbuilt-ins","4.api\u002F2.components\u002F3.built-ins",[108,112],{"title":109,"path":110,"stem":111},"Collection Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fcollection-component","4.api\u002F2.components\u002F3.built-ins\u002F1.collection-component",{"title":113,"path":114,"stem":115},"Form Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fform-component","4.api\u002F2.components\u002F3.built-ins\u002F2.form-component",{"title":117,"path":118,"stem":119},"Dynamic & Nested Pages","\u002Fapi\u002Fdynamic-pages","4.api\u002F3.dynamic-pages",{"title":121,"path":122,"stem":123},"Users & Security","\u002Fapi\u002Fusers-and-security","4.api\u002F4.users-and-security",{"title":125,"path":126,"stem":127},"Data Fixtures","\u002Fapi\u002Fdata-fixtures","4.api\u002F5.data-fixtures",{"title":129,"path":130,"stem":131},"Configuration Reference","\u002Fapi\u002Fconfiguration","4.api\u002F6.configuration",{"title":133,"path":134,"stem":135},"Console Commands","\u002Fapi\u002Fconsole-commands","4.api\u002F7.console-commands",{"title":137,"path":138,"stem":139},"Debugging & Profiler","\u002Fapi\u002Fdebugging","4.api\u002F8.debugging",{"title":141,"path":142,"stem":143,"children":144,"page":35},"Nuxt Module","\u002Fnuxt-module","5.nuxt-module",[145,149,162,182,207,211,295,320,324],{"title":146,"path":147,"stem":148},"Module Setup","\u002Fnuxt-module\u002Fmodule-setup","5.nuxt-module\u002F1.module-setup",{"title":150,"path":151,"stem":152,"children":153,"page":35},"Configuration","\u002Fnuxt-module\u002Fconfiguration","5.nuxt-module\u002F2.configuration",[154,158],{"title":155,"path":156,"stem":157},"Nuxt Config","\u002Fnuxt-module\u002Fconfiguration\u002Fnuxt-config","5.nuxt-module\u002F2.configuration\u002F1.nuxt-config",{"title":159,"path":160,"stem":161},"Site Config & SEO","\u002Fnuxt-module\u002Fconfiguration\u002Fsite-config-and-seo","5.nuxt-module\u002F2.configuration\u002F2.site-config-and-seo",{"title":163,"path":164,"stem":165,"children":166,"page":35},"Building Your Ui","\u002Fnuxt-module\u002Fbuilding-your-ui","5.nuxt-module\u002F3.building-your-ui",[167,171,175,178],{"title":168,"path":169,"stem":170},"Layouts","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-layouts","5.nuxt-module\u002F3.building-your-ui\u002F1.creating-layouts",{"title":172,"path":173,"stem":174},"Page Templates","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-page-templates","5.nuxt-module\u002F3.building-your-ui\u002F2.creating-page-templates",{"title":83,"path":176,"stem":177},"\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-components","5.nuxt-module\u002F3.building-your-ui\u002F3.creating-components",{"title":179,"path":180,"stem":181},"CLI Generator","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcwa-cli","5.nuxt-module\u002F3.building-your-ui\u002F4.cwa-cli",{"title":183,"path":184,"stem":185,"children":186,"page":35},"Cwa Components","\u002Fnuxt-module\u002Fcwa-components","5.nuxt-module\u002F4.cwa-components",[187,191,195,199,203],{"title":188,"path":189,"stem":190},"\u003CCwaComponentGroup \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-component-group","5.nuxt-module\u002F4.cwa-components\u002F1.cwa-component-group",{"title":192,"path":193,"stem":194},"\u003CCwaPage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-page","5.nuxt-module\u002F4.cwa-components\u002F2.cwa-page",{"title":196,"path":197,"stem":198},"\u003CCwaLink \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-link","5.nuxt-module\u002F4.cwa-components\u002F3.cwa-link",{"title":200,"path":201,"stem":202},"\u003CCwaImage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-image","5.nuxt-module\u002F4.cwa-components\u002F4.cwa-image",{"title":204,"path":205,"stem":206},"\u003CCwaDefaultLayout \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-default-layout","5.nuxt-module\u002F4.cwa-components\u002F5.cwa-default-layout",{"title":208,"path":209,"stem":210},"The useCwa() API","\u002Fnuxt-module\u002Fcwa-api","5.nuxt-module\u002F5.cwa-api",{"title":212,"path":213,"stem":214,"children":215,"page":35},"Composables","\u002Fnuxt-module\u002Fcomposables","5.nuxt-module\u002F6.composables",[216,224,261,278],{"title":217,"path":218,"stem":219,"children":220,"page":35},"Layout","\u002Fnuxt-module\u002Fcomposables\u002Flayout","5.nuxt-module\u002F6.composables\u002F0.layout",[221],{"title":217,"path":222,"stem":223},"\u002Fnuxt-module\u002Fcomposables\u002Flayout\u002Fuse-cwa-layout","5.nuxt-module\u002F6.composables\u002F0.layout\u002F1.use-cwa-layout",{"title":225,"path":226,"stem":227,"children":228,"page":35},"Component","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent","5.nuxt-module\u002F6.composables\u002F1.component",[229,233,237,241,245,249,253,257],{"title":230,"path":231,"stem":232},"Component (recommended)","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-component","5.nuxt-module\u002F6.composables\u002F1.component\u002F0.use-cwa-component",{"title":234,"path":235,"stem":236},"Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F1.use-cwa-resource",{"title":238,"path":239,"stem":240},"Collection Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-collection-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F2.use-cwa-collection-resource",{"title":242,"path":243,"stem":244},"Image Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-image-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F3.use-cwa-image-resource",{"title":246,"path":247,"stem":248},"Form","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form","5.nuxt-module\u002F6.composables\u002F1.component\u002F4.use-cwa-form",{"title":250,"path":251,"stem":252},"Form Input","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-input","5.nuxt-module\u002F6.composables\u002F1.component\u002F5.use-cwa-form-input",{"title":254,"path":255,"stem":256},"Form Repeated","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-repeated","5.nuxt-module\u002F6.composables\u002F1.component\u002F6.use-cwa-form-repeated",{"title":258,"path":259,"stem":260},"Form Collection","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-collection","5.nuxt-module\u002F6.composables\u002F1.component\u002F7.use-cwa-form-collection",{"title":262,"path":263,"stem":264,"children":265,"page":35},"Admin Manager","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager","5.nuxt-module\u002F6.composables\u002F2.admin-manager",[266,270,274],{"title":267,"path":268,"stem":269},"Manager Tab","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-manager-tab","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F1.use-cwa-resource-manager-tab",{"title":271,"path":272,"stem":273},"Resource Model","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-model","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F2.use-cwa-resource-model",{"title":275,"path":276,"stem":277},"Resource Upload","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-upload","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F3.use-cwa-resource-upload",{"title":279,"path":280,"stem":281,"children":282,"page":35},"Utilities","\u002Fnuxt-module\u002Fcomposables\u002Futilities","5.nuxt-module\u002F6.composables\u002F3.utilities",[283,287,291],{"title":284,"path":285,"stem":286},"Resource Endpoint","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-endpoint","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F1.use-cwa-resource-endpoint",{"title":288,"path":289,"stem":290},"Query Model","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-query-bound-model","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F2.use-query-bound-model",{"title":292,"path":293,"stem":294},"Resource Route","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-route","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F3.use-cwa-resource-route",{"title":296,"path":297,"stem":298,"children":299,"page":35},"Component Helpers","\u002Fnuxt-module\u002Fcomponent-helpers","5.nuxt-module\u002F7.component-helpers",[300,304,308,312,316],{"title":301,"path":302,"stem":303},"Images & Media","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fimages-and-uploads","5.nuxt-module\u002F7.component-helpers\u002F1.images-and-uploads",{"title":305,"path":306,"stem":307},"Collections & Pagination","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fcollections-and-pagination","5.nuxt-module\u002F7.component-helpers\u002F2.collections-and-pagination",{"title":309,"path":310,"stem":311},"HTML Content","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fhtml-content","5.nuxt-module\u002F7.component-helpers\u002F3.html-content",{"title":313,"path":314,"stem":315},"Real-Time Updates","\u002Fnuxt-module\u002Fcomponent-helpers\u002Freal-time-updates","5.nuxt-module\u002F7.component-helpers\u002F4.real-time-updates",{"title":317,"path":318,"stem":319},"Forms","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fforms","5.nuxt-module\u002F7.component-helpers\u002F5.forms",{"title":321,"path":322,"stem":323},"Authentication","\u002Fnuxt-module\u002Fauthentication","5.nuxt-module\u002F8.authentication",{"title":325,"path":326,"stem":327,"children":328,"page":35},"Cwa Layer","\u002Fnuxt-module\u002Fcwa-layer","5.nuxt-module\u002F9.cwa-layer",[329,333,337],{"title":330,"path":331,"stem":332},"Overview","\u002Fnuxt-module\u002Fcwa-layer\u002Foverview","5.nuxt-module\u002F9.cwa-layer\u002F1.overview",{"title":334,"path":335,"stem":336},"Auth Pages","\u002Fnuxt-module\u002Fcwa-layer\u002Fauth-pages","5.nuxt-module\u002F9.cwa-layer\u002F2.auth-pages",{"title":338,"path":339,"stem":340},"Admin Panel","\u002Fnuxt-module\u002Fcwa-layer\u002Fadmin-panel","5.nuxt-module\u002F9.cwa-layer\u002F3.admin-panel",{"title":342,"path":343,"stem":344,"children":345,"page":35},"Deployment","\u002Fdeployment","6.deployment",[346,350,354],{"title":347,"path":348,"stem":349},"Docker","\u002Fdeployment\u002Fdocker","6.deployment\u002F1.docker",{"title":351,"path":352,"stem":353},"Kubernetes & Helm","\u002Fdeployment\u002Fkubernetes","6.deployment\u002F2.kubernetes",{"title":355,"path":356,"stem":357},"CI\u002FCD","\u002Fdeployment\u002Fci-cd","6.deployment\u002F3.ci-cd",{"id":359,"title":54,"badge":360,"body":363,"description":954,"extension":955,"links":956,"meta":957,"navigation":958,"path":55,"seo":959,"stem":56,"__hash__":960},"docs\u002F3.core-concepts\u002F4.dynamic-pages.md",{"label":361,"color":362},"Draft","amber",{"type":364,"value":365,"toc":945},"minimark",[366,371,384,392,396,399,452,456,605,619,623,630,633,793,805,809,888,891,895,913,917,924,941],[367,368,370],"h2",{"id":369},"the-problem","The Problem",[372,373,374,375,379,380,383],"p",{},"Imagine you're building a blog. You have 50 articles and you need each one at its own URL (",[376,377,378],"code",{},"\u002Fblog\u002Fmy-first-post",", ",[376,381,382],{},"\u002Fblog\u002Fsecond-article",", etc.). You don't want to create 50 separate pages in the CMS.",[372,385,386,387,391],{},"The solution is ",[388,389,390],"strong",{},"template pages + PageData",".",[367,393,395],{"id":394},"how-it-works","How It Works",[397,398],"diagram-blog-example",{},[400,401,402,414,427,443],"ul",{},[403,404,405,406,409,410,413],"li",{},"The ",[388,407,408],{},"Route"," points to a ",[376,411,412],{},"BlogArticle"," PageData record (not directly to a Page).",[403,415,416,418,419,422,423,426],{},[376,417,412],{}," carries a ",[376,420,421],{},"page"," field naming the ",[376,424,425],{},"BlogTemplate"," page to render — one template shared across all articles.",[403,428,429,431,432,435,436,439,440,442],{},[376,430,425],{}," is a normal Page with ComponentGroups, but some ComponentPositions have a ",[376,433,434],{},"pageDataProperty"," set (e.g. ",[376,437,438],{},"\"htmlContent\"","). At render time those positions resolve to the matching field on the current ",[376,441,412],{}," — so each article shows its own component in that slot.",[403,444,445,447,448,451],{},[376,446,412],{}," also carries its own ",[376,449,450],{},"htmlContent"," component reference. The dashed line in the diagram shows this runtime binding between the ComponentPosition and the component stored on the PageData record.",[367,453,455],{"id":454},"creating-pagedata-in-php","Creating PageData in PHP",[457,458,463],"pre",{"className":459,"code":460,"language":461,"meta":462,"style":462},"language-php shiki shiki-themes github-light github-dark material-theme-palenight","\u002F\u002F api\u002Fsrc\u002FEntity\u002FBlogArticleData.php\n#[ORM\\Entity]\n#[ApiResource(mercure: true)]\nclass BlogArticleData extends AbstractPageData\n{\n    #[ORM\\Column(nullable: true)]\n    public ?string $body = null;\n}\n","php","",[376,464,465,474,495,522,538,544,570,599],{"__ignoreMap":462},[466,467,470],"span",{"class":468,"line":469},"line",1,[466,471,473],{"class":472},"sTBSN","\u002F\u002F api\u002Fsrc\u002FEntity\u002FBlogArticleData.php\n",[466,475,477,481,485,489,492],{"class":468,"line":476},2,[466,478,480],{"class":479},"sPB8G","#[",[466,482,484],{"class":483},"sc2zw","ORM",[466,486,488],{"class":487},"sBtbT","\\",[466,490,491],{"class":483},"Entity",[466,493,494],{"class":479},"]\n",[466,496,498,500,503,507,511,514,517,520],{"class":468,"line":497},3,[466,499,480],{"class":479},[466,501,502],{"class":483},"ApiResource",[466,504,506],{"class":505},"sOvfz","(",[466,508,510],{"class":509},"sRCss","mercure",[466,512,513],{"class":505},":",[466,515,516],{"class":487}," true",[466,518,519],{"class":505},")",[466,521,494],{"class":479},[466,523,525,529,532,535],{"class":468,"line":524},4,[466,526,528],{"class":527},"swB56","class",[466,530,531],{"class":509}," BlogArticleData",[466,533,534],{"class":527}," extends",[466,536,537],{"class":509}," AbstractPageData\n",[466,539,541],{"class":468,"line":540},5,[466,542,543],{"class":505},"{\n",[466,545,547,550,552,554,557,559,562,564,566,568],{"class":468,"line":546},6,[466,548,549],{"class":479},"    #[",[466,551,484],{"class":483},[466,553,488],{"class":487},[466,555,556],{"class":483},"Column",[466,558,506],{"class":505},[466,560,561],{"class":509},"nullable",[466,563,513],{"class":505},[466,565,516],{"class":487},[466,567,519],{"class":505},[466,569,494],{"class":479},[466,571,573,576,580,584,587,590,593,596],{"class":468,"line":572},7,[466,574,575],{"class":527},"    public",[466,577,579],{"class":578},"sVlFx"," ?",[466,581,583],{"class":582},"stmX-","string",[466,585,586],{"class":505}," $",[466,588,589],{"class":479},"body ",[466,591,592],{"class":578},"=",[466,594,595],{"class":487}," null",[466,597,598],{"class":505},";\n",[466,600,602],{"class":468,"line":601},8,[466,603,604],{"class":505},"}\n",[372,606,607,610,611,614,615,618],{},[376,608,609],{},"AbstractPageData"," already provides ",[376,612,613],{},"title"," and ",[376,616,617],{},"metaDescription"," for SEO. You add your custom fields.",[367,620,622],{"id":621},"linking-a-pagedata-field-to-a-region","Linking a PageData Field to a Region",[372,624,625,626,629],{},"A template page region can be bound to a PageData field. This means the component in that region ",[388,627,628],{},"comes from the PageData record"," rather than being manually added.",[372,631,632],{},"In the fixture scaffold:",[457,634,636],{"className":459,"code":635,"language":461,"meta":462,"style":462},"$cwa->page('blog-template', 'PrimaryPageTemplate', layout: 'main', isTemplate: true,\n    configure: function (PageBuilder $p) {\n        $p->group('primary')\n            ->pageDataPosition(BlogArticleData::class, 'htmlContent');  \u002F\u002F binds to BlogArticleData->htmlContent\n    }\n);\n",[376,637,638,701,727,751,783,788],{"__ignoreMap":462},[466,639,640,643,646,649,652,654,658,662,664,667,670,673,675,677,680,682,684,687,689,691,694,696,698],{"class":468,"line":469},[466,641,642],{"class":505},"$",[466,644,645],{"class":479},"cwa",[466,647,648],{"class":578},"->",[466,650,421],{"class":651},"sKpYG",[466,653,506],{"class":505},[466,655,657],{"class":656},"seSrl","'",[466,659,661],{"class":660},"sLL54","blog-template",[466,663,657],{"class":656},[466,665,666],{"class":505},",",[466,668,669],{"class":656}," '",[466,671,672],{"class":660},"PrimaryPageTemplate",[466,674,657],{"class":656},[466,676,666],{"class":505},[466,678,679],{"class":509}," layout",[466,681,513],{"class":505},[466,683,669],{"class":656},[466,685,686],{"class":660},"main",[466,688,657],{"class":656},[466,690,666],{"class":505},[466,692,693],{"class":509}," isTemplate",[466,695,513],{"class":505},[466,697,516],{"class":487},[466,699,700],{"class":505},",\n",[466,702,703,706,708,711,714,718,720,722,724],{"class":468,"line":476},[466,704,705],{"class":509},"    configure",[466,707,513],{"class":505},[466,709,710],{"class":527}," function",[466,712,713],{"class":505}," (",[466,715,717],{"class":716},"sbW4m","PageBuilder",[466,719,586],{"class":505},[466,721,372],{"class":479},[466,723,519],{"class":505},[466,725,726],{"class":505}," {\n",[466,728,729,732,734,736,739,741,743,746,748],{"class":468,"line":497},[466,730,731],{"class":505},"        $",[466,733,372],{"class":479},[466,735,648],{"class":578},[466,737,738],{"class":651},"group",[466,740,506],{"class":505},[466,742,657],{"class":656},[466,744,745],{"class":660},"primary",[466,747,657],{"class":656},[466,749,750],{"class":505},")\n",[466,752,753,756,759,761,764,767,769,771,773,775,777,780],{"class":468,"line":524},[466,754,755],{"class":578},"            ->",[466,757,758],{"class":651},"pageDataPosition",[466,760,506],{"class":505},[466,762,763],{"class":716},"BlogArticleData",[466,765,766],{"class":578},"::",[466,768,528],{"class":582},[466,770,666],{"class":505},[466,772,669],{"class":656},[466,774,450],{"class":660},[466,776,657],{"class":656},[466,778,779],{"class":505},");",[466,781,782],{"class":472},"  \u002F\u002F binds to BlogArticleData->htmlContent\n",[466,784,785],{"class":468,"line":540},[466,786,787],{"class":505},"    }\n",[466,789,790],{"class":468,"line":546},[466,791,792],{"class":505},");\n",[372,794,795,796,798,799,801,802,804],{},"When any ",[376,797,763],{}," page renders, the ",[376,800,745],{}," region shows that article's ",[376,803,450],{}," component.",[367,806,808],{"id":807},"reading-pagedata-in-your-vue-component","Reading PageData in Your Vue Component",[457,810,814],{"className":811,"code":812,"language":813,"meta":462,"style":462},"language-vue shiki shiki-themes github-light github-dark material-theme-palenight","\u003Cscript setup lang=\"ts\">\nconst pageData = $cwa.resources.pageData.value\n\u002F\u002F pageData.data.title, pageData.data.body, etc.\n\u003C\u002Fscript>\n","vue",[376,815,816,845,874,879],{"__ignoreMap":462},[466,817,818,821,825,829,832,834,837,840,842],{"class":468,"line":469},[466,819,820],{"class":505},"\u003C",[466,822,824],{"class":823},"s-h7I","script",[466,826,828],{"class":827},"sGtlX"," setup",[466,830,831],{"class":827}," lang",[466,833,592],{"class":505},[466,835,836],{"class":656},"\"",[466,838,839],{"class":660},"ts",[466,841,836],{"class":656},[466,843,844],{"class":505},">\n",[466,846,847,850,853,856,859,861,864,866,869,871],{"class":468,"line":476},[466,848,849],{"class":527},"const",[466,851,852],{"class":483}," pageData",[466,854,855],{"class":578}," =",[466,857,858],{"class":479}," $cwa",[466,860,391],{"class":505},[466,862,863],{"class":479},"resources",[466,865,391],{"class":505},[466,867,868],{"class":479},"pageData",[466,870,391],{"class":505},[466,872,873],{"class":479},"value\n",[466,875,876],{"class":468,"line":497},[466,877,878],{"class":472},"\u002F\u002F pageData.data.title, pageData.data.body, etc.\n",[466,880,881,884,886],{"class":468,"line":524},[466,882,883],{"class":505},"\u003C\u002F",[466,885,824],{"class":823},[466,887,844],{"class":505},[372,889,890],{},"The module makes the current PageData available globally. Your page template can also pass the IRI down to child components as needed.",[367,892,894],{"id":893},"seo","SEO",[372,896,897,898,614,900,902,903,905,906,614,909,912],{},"PageData records have ",[376,899,613],{},[376,901,617],{}," fields (from ",[376,904,609],{},"). The module automatically uses these to set ",[376,907,908],{},"\u003Ctitle>",[376,910,911],{},"\u003Cmeta name=\"description\">"," for each article's URL — no extra code needed.",[367,914,916],{"id":915},"admin-management","Admin Management",[372,918,919,920,923],{},"All PageData types appear at ",[376,921,922],{},"\u002F_cwa\u002Fdata"," in the admin panel. Admins can:",[400,925,926,929,932,935],{},[403,927,928],{},"Browse all records for a type (e.g. all blog articles)",[403,930,931],{},"Create new records",[403,933,934],{},"Edit title, metaDescription, and any custom fields",[403,936,937,938,519],{},"Publish\u002Funpublish records (if the entity uses ",[376,939,940],{},"#[Silverback\\Publishable]",[942,943,944],"style",{},"html pre.shiki code .sTBSN, html code.shiki .sTBSN{--shiki-light:#6A737D;--shiki-light-font-style:inherit;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sPB8G, html code.shiki .sPB8G{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#BABED8}html pre.shiki code .sc2zw, html code.shiki .sc2zw{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#BABED8}html pre.shiki code .sBtbT, html code.shiki .sBtbT{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#89DDFF}html pre.shiki code .sOvfz, html code.shiki .sOvfz{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#89DDFF}html pre.shiki code .sRCss, html code.shiki .sRCss{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#FFCB6B}html pre.shiki code .swB56, html code.shiki .swB56{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#C792EA}html pre.shiki code .sVlFx, html code.shiki .sVlFx{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#89DDFF}html pre.shiki code .stmX-, html code.shiki .stmX-{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sKpYG, html code.shiki .sKpYG{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#82AAFF}html pre.shiki code .seSrl, html code.shiki .seSrl{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#89DDFF}html pre.shiki code .sLL54, html code.shiki .sLL54{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#C3E88D}html pre.shiki code .sbW4m, html code.shiki .sbW4m{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#FFCB6B}html pre.shiki code .s-h7I, html code.shiki .s-h7I{--shiki-light:#22863A;--shiki-default:#85E89D;--shiki-dark:#F07178}html pre.shiki code .sGtlX, html code.shiki .sGtlX{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#C792EA}",{"title":462,"searchDepth":476,"depth":476,"links":946},[947,948,949,950,951,952,953],{"id":369,"depth":476,"text":370},{"id":394,"depth":476,"text":395},{"id":454,"depth":476,"text":455},{"id":621,"depth":476,"text":622},{"id":807,"depth":476,"text":808},{"id":893,"depth":476,"text":894},{"id":915,"depth":476,"text":916},"How PageData records drive template pages — the pattern for blogs, events, products, and any repeating content type.","md",null,{},true,{"title":54,"description":954},"ISKfM-5xMnFwCOtAY02QWf9EehMNFahVJS_hE1_walU",[962,964],{"title":50,"path":51,"stem":52,"description":963,"children":-1},"How layouts form the site shell and pages define the content structure within — and the difference between static and template pages.",{"title":58,"path":59,"stem":60,"description":965,"children":-1},"The atomic content unit in CWA — what a component is, what it consists of, and the patterns you'll use most.",1782512894926]