MarvinBurman Posted November 14, 2022 Share Posted November 14, 2022 Hi community, I am planning to build out content pages for long-tail search terms like "Help with XYZ in Place XYZ". I'm looking for an easy way to create a lot of such pages with little effort. E.g. by uploading a spreadsheet with the data. Instead of having to create a ton of pages manually in the frontend. I was wondering if there is any good way of achieving this? E.g. by using code-blocks that allow me to implement content from a headless cms or is there any other good way of doing that? Thanks for your support, Marvin Link to comment
PatVR Posted July 22 Share Posted July 22 Did you ever have any luck finding a headless CMS that works with SqSp? Link to comment
creedon Posted July 22 Share Posted July 22 I don't have a solution but I may be able to point to a direction on the first part the the OP's question. Quote I'm looking for an easy way to create a lot of such pages with little effort. E.g. by uploading a spreadsheet with the data. Instead of having to create a ton of pages manually in the frontend. Little effort here is of course relative to having to do it all in the editor manually. I would try to leverage SS's content import feature using the WordPress WXR (WordPress eXtended RSS) XML format. Be warned that the SS import process has always had its own challenges. The following code is an example of WXR file with a single page that as of this post imports into the current of v7.1 of an SS site. I do not support this example in any way. <?xml version="1.0" encoding="UTF-8"?> <rss xmlns:excerpt="http://wordpress.org/export/1.2/excerpt/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wp="http://wordpress.org/export/1.2/"> <channel> <title>Your Site Title</title> <link>https://your-site.squarespace.com</link> <pubDate>Mon, 22 Jul 2024 19:00:14 +0000</pubDate> <description /> <language>en-US</language> <wp:wxr_version>1.2</wp:wxr_version> <item> <link>/your-page-1</link> <title>Your Page 1</title> <pubDate>Mon, 22 Jul 2024 19:31:26 +0000</pubDate> <content:encoded><![CDATA[<article class="sections" id="sections" data-page-sections="669eb269e2c62a2978c29fd5"> <section data-test="page-section" data-section-theme="" class='page-section full-bleed-section layout-engine-section background-width--full-bleed section-height--medium content-width--wide horizontal-alignment--center vertical-alignment--middle ' data-section-id="669eb3747b39374b9fe3f7bf" data-controller="SectionWrapperController" data-current-styles="{ "imageOverlayOpacity": 0.15, "backgroundWidth": "background-width--full-bleed", "sectionHeight": "section-height--medium", "customSectionHeight": 10, "horizontalAlignment": "horizontal-alignment--center", "verticalAlignment": "vertical-alignment--middle", "contentWidth": "content-width--wide", "customContentWidth": 50, "backgroundColor": "", "sectionTheme": "", "sectionAnimation": "none", "backgroundMode": "image" }" data-current-context="{ "video": { "filterStrength": 0, "zoom": 0, "videoSourceProvider": "none" }, "backgroundImageId": null, "backgroundMediaEffect": null, "divider": null, "typeName": null }" data-animation="none" data-fluid-engine-section > <div class="section-border" > <div class="section-background"> </div> </div> <div class='content-wrapper' style=' ' > <div class="content" > <div data-fluid-engine="true"><style> .fe-669eb374d8dbbdda45e8ec3c { --grid-gutter: calc(var(--sqs-mobile-site-gutter, 6vw) - 11.0px); --cell-max-width: calc( ( var(--sqs-site-max-width, 1500px) - (11.0px * (8 - 1)) ) / 8 ); display: grid; position: relative; grid-area: 1/1/-1/-1; grid-template-rows: repeat(13,minmax(24px, auto)); grid-template-columns: minmax(var(--grid-gutter), 1fr) repeat(8, minmax(0, var(--cell-max-width))) minmax(var(--grid-gutter), 1fr); row-gap: 11.0px; column-gap: 11.0px; } @media (min-width: 768px) { .background-width--inset .fe-669eb374d8dbbdda45e8ec3c { --inset-padding: calc(var(--sqs-site-gutter) * 2); } .fe-669eb374d8dbbdda45e8ec3c { --grid-gutter: calc(var(--sqs-site-gutter, 4vw) - 11.0px); --cell-max-width: calc( ( var(--sqs-site-max-width, 1500px) - (11.0px * (24 - 1)) ) / 24 ); --inset-padding: 0vw; --row-height-scaling-factor: 0.0215; --container-width: min(var(--sqs-site-max-width, 1500px), calc(100vw - var(--sqs-site-gutter, 4vw) * 2 - var(--inset-padding) )); grid-template-rows: repeat(4,minmax(calc(var(--container-width) * var(--row-height-scaling-factor)), auto)); grid-template-columns: minmax(var(--grid-gutter), 1fr) repeat(24, minmax(0, var(--cell-max-width))) minmax(var(--grid-gutter), 1fr); } } .fe-block-669eb374177a08ef56f82acc { grid-area: 1/2/14/10; z-index: 0; @media (max-width: 767px) { } } .fe-block-669eb374177a08ef56f82acc .sqs-block { justify-content: flex-start; } .fe-block-669eb374177a08ef56f82acc .sqs-block-alignment-wrapper { align-items: flex-start; } @media (min-width: 768px) { .fe-block-669eb374177a08ef56f82acc { grid-area: 1/2/5/26; z-index: 0; } .fe-block-669eb374177a08ef56f82acc .sqs-block { justify-content: flex-start; } .fe-block-669eb374177a08ef56f82acc .sqs-block-alignment-wrapper { align-items: flex-start; } } </style><div class="fluid-engine fe-669eb374d8dbbdda45e8ec3c"><div class="fe-block fe-block-669eb374177a08ef56f82acc"><div class="sqs-block html-block sqs-block-html" data-blend-mode="NORMAL" data-block-type="2" data-border-radii="{"topLeft":{"unit":"px","value":0.0},"topRight":{"unit":"px","value":0.0},"bottomLeft":{"unit":"px","value":0.0},"bottomRight":{"unit":"px","value":0.0}}" id="block-669eb374177a08ef56f82acc"><div class="sqs-block-content"> <div class="sqs-html-content"> <p class="" style="white-space:pre-wrap;">Lorem ipsum odor amet, consectetuer adipiscing elit. Senectus himenaeos eget ipsum, turpis maecenas ullamcorper. Nunc magna ullamcorper nam libero blandit. Maecenas natoque mi, condimentum id sit aliquet rutrum. Praesent libero donec hendrerit nisl conubia finibus sit nunc. Arcu dui neque aliquam scelerisque euismod hac placerat placerat. Per nostra felis gravida mi sagittis ligula primis ullamcorper. Turpis proin libero iaculis; fusce felis mauris rhoncus? Malesuada per quam ultricies tortor ac platea. Habitant hac odio nulla molestie praesent sociosqu sociosqu.</p> </div> </div></div></div></div></div> </div> </div> </section> </article>]]></content:encoded> <wp:post_name>your-page-1</wp:post_name> <wp:post_type>page</wp:post_type> <wp:post_id>0</wp:post_id> <wp:status>publish</wp:status> </item> </channel> </rss> Now the trick would be to use this example and come up with a way to populate the file using the item element as a template. I'd probably try to use Google Sheets and some formulas as a first try at the problem. GS might have some issue with the string lengths. If GS didn't work out then I'd be looking at a programming language or perhaps some old school Un*x tools. Find my contributions useful? Please like, upvote, mark my answer as the best ( solution ), and see my profile. Thanks for your support! I am a Squarespace ( and other technological things ) consultant open for new projects. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment