[{"data":1,"prerenderedAt":950},["ShallowReactive",2],{"navigation":3,"\u002Fcore-concepts\u002Fdynamic-pages":342,"\u002Fcore-concepts\u002Fdynamic-pages-surround":945},[4,14,36,69,140,325],{"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,178,203,207,279,304,308],{"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],{"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,"children":182,"page":35},"Cwa Components","\u002Fnuxt-module\u002Fcwa-components","5.nuxt-module\u002F4.cwa-components",[183,187,191,195,199],{"title":184,"path":185,"stem":186},"\u003CCwaComponentGroup \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-component-group","5.nuxt-module\u002F4.cwa-components\u002F1.cwa-component-group",{"title":188,"path":189,"stem":190},"\u003CCwaPage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-page","5.nuxt-module\u002F4.cwa-components\u002F2.cwa-page",{"title":192,"path":193,"stem":194},"\u003CCwaLink \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-link","5.nuxt-module\u002F4.cwa-components\u002F3.cwa-link",{"title":196,"path":197,"stem":198},"\u003CCwaImage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-image","5.nuxt-module\u002F4.cwa-components\u002F4.cwa-image",{"title":200,"path":201,"stem":202},"\u003CCwaDefaultLayout \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-default-layout","5.nuxt-module\u002F4.cwa-components\u002F5.cwa-default-layout",{"title":204,"path":205,"stem":206},"The useCwa() API","\u002Fnuxt-module\u002Fcwa-api","5.nuxt-module\u002F5.cwa-api",{"title":208,"path":209,"stem":210,"children":211,"page":35},"Composables","\u002Fnuxt-module\u002Fcomposables","5.nuxt-module\u002F6.composables",[212,245,262],{"title":213,"path":214,"stem":215,"children":216,"page":35},"Component","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent","5.nuxt-module\u002F6.composables\u002F1.component",[217,221,225,229,233,237,241],{"title":218,"path":219,"stem":220},"Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F1.use-cwa-resource",{"title":222,"path":223,"stem":224},"Collection Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-collection-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F2.use-cwa-collection-resource",{"title":226,"path":227,"stem":228},"Image Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-image-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F3.use-cwa-image-resource",{"title":230,"path":231,"stem":232},"Form","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form","5.nuxt-module\u002F6.composables\u002F1.component\u002F4.use-cwa-form",{"title":234,"path":235,"stem":236},"Form Input","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-input","5.nuxt-module\u002F6.composables\u002F1.component\u002F5.use-cwa-form-input",{"title":238,"path":239,"stem":240},"Form Repeated","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-repeated","5.nuxt-module\u002F6.composables\u002F1.component\u002F6.use-cwa-form-repeated",{"title":242,"path":243,"stem":244},"Form Collection","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-collection","5.nuxt-module\u002F6.composables\u002F1.component\u002F7.use-cwa-form-collection",{"title":246,"path":247,"stem":248,"children":249,"page":35},"Admin Manager","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager","5.nuxt-module\u002F6.composables\u002F2.admin-manager",[250,254,258],{"title":251,"path":252,"stem":253},"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":255,"path":256,"stem":257},"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":259,"path":260,"stem":261},"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":263,"path":264,"stem":265,"children":266,"page":35},"Utilities","\u002Fnuxt-module\u002Fcomposables\u002Futilities","5.nuxt-module\u002F6.composables\u002F3.utilities",[267,271,275],{"title":268,"path":269,"stem":270},"Resource Endpoint","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-endpoint","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F1.use-cwa-resource-endpoint",{"title":272,"path":273,"stem":274},"Query Model","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-query-bound-model","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F2.use-query-bound-model",{"title":276,"path":277,"stem":278},"Resource Route","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-route","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F3.use-cwa-resource-route",{"title":280,"path":281,"stem":282,"children":283,"page":35},"Component Helpers","\u002Fnuxt-module\u002Fcomponent-helpers","5.nuxt-module\u002F7.component-helpers",[284,288,292,296,300],{"title":285,"path":286,"stem":287},"Images & Media","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fimages-and-uploads","5.nuxt-module\u002F7.component-helpers\u002F1.images-and-uploads",{"title":289,"path":290,"stem":291},"Collections & Pagination","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fcollections-and-pagination","5.nuxt-module\u002F7.component-helpers\u002F2.collections-and-pagination",{"title":293,"path":294,"stem":295},"HTML Content","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fhtml-content","5.nuxt-module\u002F7.component-helpers\u002F3.html-content",{"title":297,"path":298,"stem":299},"Real-Time Updates","\u002Fnuxt-module\u002Fcomponent-helpers\u002Freal-time-updates","5.nuxt-module\u002F7.component-helpers\u002F4.real-time-updates",{"title":301,"path":302,"stem":303},"Forms","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fforms","5.nuxt-module\u002F7.component-helpers\u002F5.forms",{"title":305,"path":306,"stem":307},"Authentication","\u002Fnuxt-module\u002Fauthentication","5.nuxt-module\u002F8.authentication",{"title":309,"path":310,"stem":311,"children":312,"page":35},"Cwa Layer","\u002Fnuxt-module\u002Fcwa-layer","5.nuxt-module\u002F9.cwa-layer",[313,317,321],{"title":314,"path":315,"stem":316},"Overview","\u002Fnuxt-module\u002Fcwa-layer\u002Foverview","5.nuxt-module\u002F9.cwa-layer\u002F1.overview",{"title":318,"path":319,"stem":320},"Auth Pages","\u002Fnuxt-module\u002Fcwa-layer\u002Fauth-pages","5.nuxt-module\u002F9.cwa-layer\u002F2.auth-pages",{"title":322,"path":323,"stem":324},"Admin Panel","\u002Fnuxt-module\u002Fcwa-layer\u002Fadmin-panel","5.nuxt-module\u002F9.cwa-layer\u002F3.admin-panel",{"title":326,"path":327,"stem":328,"children":329,"page":35},"Deployment","\u002Fdeployment","6.deployment",[330,334,338],{"title":331,"path":332,"stem":333},"Docker","\u002Fdeployment\u002Fdocker","6.deployment\u002F1.docker",{"title":335,"path":336,"stem":337},"Kubernetes & Helm","\u002Fdeployment\u002Fkubernetes","6.deployment\u002F2.kubernetes",{"title":339,"path":340,"stem":341},"CI\u002FCD","\u002Fdeployment\u002Fci-cd","6.deployment\u002F3.ci-cd",{"id":343,"title":54,"badge":344,"body":347,"description":938,"extension":939,"links":940,"meta":941,"navigation":942,"path":55,"seo":943,"stem":56,"__hash__":944},"docs\u002F3.core-concepts\u002F4.dynamic-pages.md",{"label":345,"color":346},"Draft","amber",{"type":348,"value":349,"toc":929},"minimark",[350,355,368,376,380,383,436,440,589,603,607,614,617,777,789,793,872,875,879,897,901,908,925],[351,352,354],"h2",{"id":353},"the-problem","The Problem",[356,357,358,359,363,364,367],"p",{},"Imagine you're building a blog. You have 50 articles and you need each one at its own URL (",[360,361,362],"code",{},"\u002Fblog\u002Fmy-first-post",", ",[360,365,366],{},"\u002Fblog\u002Fsecond-article",", etc.). You don't want to create 50 separate pages in the CMS.",[356,369,370,371,375],{},"The solution is ",[372,373,374],"strong",{},"template pages + PageData",".",[351,377,379],{"id":378},"how-it-works","How It Works",[381,382],"diagram-blog-example",{},[384,385,386,398,411,427],"ul",{},[387,388,389,390,393,394,397],"li",{},"The ",[372,391,392],{},"Route"," points to a ",[360,395,396],{},"BlogArticle"," PageData record (not directly to a Page).",[387,399,400,402,403,406,407,410],{},[360,401,396],{}," carries a ",[360,404,405],{},"page"," field naming the ",[360,408,409],{},"BlogTemplate"," page to render — one template shared across all articles.",[387,412,413,415,416,419,420,423,424,426],{},[360,414,409],{}," is a normal Page with ComponentGroups, but some ComponentPositions have a ",[360,417,418],{},"pageDataProperty"," set (e.g. ",[360,421,422],{},"\"htmlContent\"","). At render time those positions resolve to the matching field on the current ",[360,425,396],{}," — so each article shows its own component in that slot.",[387,428,429,431,432,435],{},[360,430,396],{}," also carries its own ",[360,433,434],{},"htmlContent"," component reference. The dashed line in the diagram shows this runtime binding between the ComponentPosition and the component stored on the PageData record.",[351,437,439],{"id":438},"creating-pagedata-in-php","Creating PageData in PHP",[441,442,447],"pre",{"className":443,"code":444,"language":445,"meta":446,"style":446},"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","",[360,448,449,458,479,506,522,528,554,583],{"__ignoreMap":446},[450,451,454],"span",{"class":452,"line":453},"line",1,[450,455,457],{"class":456},"sTBSN","\u002F\u002F api\u002Fsrc\u002FEntity\u002FBlogArticleData.php\n",[450,459,461,465,469,473,476],{"class":452,"line":460},2,[450,462,464],{"class":463},"sPB8G","#[",[450,466,468],{"class":467},"sc2zw","ORM",[450,470,472],{"class":471},"sBtbT","\\",[450,474,475],{"class":467},"Entity",[450,477,478],{"class":463},"]\n",[450,480,482,484,487,491,495,498,501,504],{"class":452,"line":481},3,[450,483,464],{"class":463},[450,485,486],{"class":467},"ApiResource",[450,488,490],{"class":489},"sOvfz","(",[450,492,494],{"class":493},"sRCss","mercure",[450,496,497],{"class":489},":",[450,499,500],{"class":471}," true",[450,502,503],{"class":489},")",[450,505,478],{"class":463},[450,507,509,513,516,519],{"class":452,"line":508},4,[450,510,512],{"class":511},"swB56","class",[450,514,515],{"class":493}," BlogArticleData",[450,517,518],{"class":511}," extends",[450,520,521],{"class":493}," AbstractPageData\n",[450,523,525],{"class":452,"line":524},5,[450,526,527],{"class":489},"{\n",[450,529,531,534,536,538,541,543,546,548,550,552],{"class":452,"line":530},6,[450,532,533],{"class":463},"    #[",[450,535,468],{"class":467},[450,537,472],{"class":471},[450,539,540],{"class":467},"Column",[450,542,490],{"class":489},[450,544,545],{"class":493},"nullable",[450,547,497],{"class":489},[450,549,500],{"class":471},[450,551,503],{"class":489},[450,553,478],{"class":463},[450,555,557,560,564,568,571,574,577,580],{"class":452,"line":556},7,[450,558,559],{"class":511},"    public",[450,561,563],{"class":562},"sVlFx"," ?",[450,565,567],{"class":566},"stmX-","string",[450,569,570],{"class":489}," $",[450,572,573],{"class":463},"body ",[450,575,576],{"class":562},"=",[450,578,579],{"class":471}," null",[450,581,582],{"class":489},";\n",[450,584,586],{"class":452,"line":585},8,[450,587,588],{"class":489},"}\n",[356,590,591,594,595,598,599,602],{},[360,592,593],{},"AbstractPageData"," already provides ",[360,596,597],{},"title"," and ",[360,600,601],{},"metaDescription"," for SEO. You add your custom fields.",[351,604,606],{"id":605},"linking-a-pagedata-field-to-a-region","Linking a PageData Field to a Region",[356,608,609,610,613],{},"A template page region can be bound to a PageData field. This means the component in that region ",[372,611,612],{},"comes from the PageData record"," rather than being manually added.",[356,615,616],{},"In the fixture scaffold:",[441,618,620],{"className":443,"code":619,"language":445,"meta":446,"style":446},"$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",[360,621,622,685,711,735,767,772],{"__ignoreMap":446},[450,623,624,627,630,633,636,638,642,646,648,651,654,657,659,661,664,666,668,671,673,675,678,680,682],{"class":452,"line":453},[450,625,626],{"class":489},"$",[450,628,629],{"class":463},"cwa",[450,631,632],{"class":562},"->",[450,634,405],{"class":635},"sKpYG",[450,637,490],{"class":489},[450,639,641],{"class":640},"seSrl","'",[450,643,645],{"class":644},"sLL54","blog-template",[450,647,641],{"class":640},[450,649,650],{"class":489},",",[450,652,653],{"class":640}," '",[450,655,656],{"class":644},"PrimaryPageTemplate",[450,658,641],{"class":640},[450,660,650],{"class":489},[450,662,663],{"class":493}," layout",[450,665,497],{"class":489},[450,667,653],{"class":640},[450,669,670],{"class":644},"main",[450,672,641],{"class":640},[450,674,650],{"class":489},[450,676,677],{"class":493}," isTemplate",[450,679,497],{"class":489},[450,681,500],{"class":471},[450,683,684],{"class":489},",\n",[450,686,687,690,692,695,698,702,704,706,708],{"class":452,"line":460},[450,688,689],{"class":493},"    configure",[450,691,497],{"class":489},[450,693,694],{"class":511}," function",[450,696,697],{"class":489}," (",[450,699,701],{"class":700},"sbW4m","PageBuilder",[450,703,570],{"class":489},[450,705,356],{"class":463},[450,707,503],{"class":489},[450,709,710],{"class":489}," {\n",[450,712,713,716,718,720,723,725,727,730,732],{"class":452,"line":481},[450,714,715],{"class":489},"        $",[450,717,356],{"class":463},[450,719,632],{"class":562},[450,721,722],{"class":635},"group",[450,724,490],{"class":489},[450,726,641],{"class":640},[450,728,729],{"class":644},"primary",[450,731,641],{"class":640},[450,733,734],{"class":489},")\n",[450,736,737,740,743,745,748,751,753,755,757,759,761,764],{"class":452,"line":508},[450,738,739],{"class":562},"            ->",[450,741,742],{"class":635},"pageDataPosition",[450,744,490],{"class":489},[450,746,747],{"class":700},"BlogArticleData",[450,749,750],{"class":562},"::",[450,752,512],{"class":566},[450,754,650],{"class":489},[450,756,653],{"class":640},[450,758,434],{"class":644},[450,760,641],{"class":640},[450,762,763],{"class":489},");",[450,765,766],{"class":456},"  \u002F\u002F binds to BlogArticleData->htmlContent\n",[450,768,769],{"class":452,"line":524},[450,770,771],{"class":489},"    }\n",[450,773,774],{"class":452,"line":530},[450,775,776],{"class":489},");\n",[356,778,779,780,782,783,785,786,788],{},"When any ",[360,781,747],{}," page renders, the ",[360,784,729],{}," region shows that article's ",[360,787,434],{}," component.",[351,790,792],{"id":791},"reading-pagedata-in-your-vue-component","Reading PageData in Your Vue Component",[441,794,798],{"className":795,"code":796,"language":797,"meta":446,"style":446},"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",[360,799,800,829,858,863],{"__ignoreMap":446},[450,801,802,805,809,813,816,818,821,824,826],{"class":452,"line":453},[450,803,804],{"class":489},"\u003C",[450,806,808],{"class":807},"s-h7I","script",[450,810,812],{"class":811},"sGtlX"," setup",[450,814,815],{"class":811}," lang",[450,817,576],{"class":489},[450,819,820],{"class":640},"\"",[450,822,823],{"class":644},"ts",[450,825,820],{"class":640},[450,827,828],{"class":489},">\n",[450,830,831,834,837,840,843,845,848,850,853,855],{"class":452,"line":460},[450,832,833],{"class":511},"const",[450,835,836],{"class":467}," pageData",[450,838,839],{"class":562}," =",[450,841,842],{"class":463}," $cwa",[450,844,375],{"class":489},[450,846,847],{"class":463},"resources",[450,849,375],{"class":489},[450,851,852],{"class":463},"pageData",[450,854,375],{"class":489},[450,856,857],{"class":463},"value\n",[450,859,860],{"class":452,"line":481},[450,861,862],{"class":456},"\u002F\u002F pageData.data.title, pageData.data.body, etc.\n",[450,864,865,868,870],{"class":452,"line":508},[450,866,867],{"class":489},"\u003C\u002F",[450,869,808],{"class":807},[450,871,828],{"class":489},[356,873,874],{},"The module makes the current PageData available globally. Your page template can also pass the IRI down to child components as needed.",[351,876,878],{"id":877},"seo","SEO",[356,880,881,882,598,884,886,887,889,890,598,893,896],{},"PageData records have ",[360,883,597],{},[360,885,601],{}," fields (from ",[360,888,593],{},"). The module automatically uses these to set ",[360,891,892],{},"\u003Ctitle>",[360,894,895],{},"\u003Cmeta name=\"description\">"," for each article's URL — no extra code needed.",[351,898,900],{"id":899},"admin-management","Admin Management",[356,902,903,904,907],{},"All PageData types appear at ",[360,905,906],{},"\u002F_cwa\u002Fdata"," in the admin panel. Admins can:",[384,909,910,913,916,919],{},[387,911,912],{},"Browse all records for a type (e.g. all blog articles)",[387,914,915],{},"Create new records",[387,917,918],{},"Edit title, metaDescription, and any custom fields",[387,920,921,922,503],{},"Publish\u002Funpublish records (if the entity uses ",[360,923,924],{},"#[Silverback\\Publishable]",[926,927,928],"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":446,"searchDepth":460,"depth":460,"links":930},[931,932,933,934,935,936,937],{"id":353,"depth":460,"text":354},{"id":378,"depth":460,"text":379},{"id":438,"depth":460,"text":439},{"id":605,"depth":460,"text":606},{"id":791,"depth":460,"text":792},{"id":877,"depth":460,"text":878},{"id":899,"depth":460,"text":900},"How PageData records drive template pages — the pattern for blogs, events, products, and any repeating content type.","md",null,{},true,{"title":54,"description":938},"ISKfM-5xMnFwCOtAY02QWf9EehMNFahVJS_hE1_walU",[946,948],{"title":50,"path":51,"stem":52,"description":947,"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":949,"children":-1},"The atomic content unit in CWA — what a component is, what it consists of, and the patterns you'll use most.",1782241278654]