Reusable Content Blocks
From Code + Tonic.
Order Number: #00129
accounts@maynarddesign.com.
product-reusable-blocks.html
Password apple-pear
Link to the plugin: https://codeandtonic.com/rub1
PAGE Code Snippet:
Create page in SS. replace url slug.
(in SHF website, .sidebar1 class is my addition - for styling only in css. Remove in snippet if style not in use)
<!--Reusable block--> <div class=sidebar1><div class="vp-reusable-content"></div></div> <script> reusableBlock("URLSLUG"); </script>
Code Snippets
Reusable Content Block / PAGE:
Place on the page in a code block. Can add css style class - see above. You may need to Hard-Refresh.
Content Blocks Used on This Site
RCB-BOOKS
<!--Reusable block--> <div class=sidebar1><div class="vp-reusable-content"></div></div> <script> reusableBlock("URLSLUG"); </script>
RCB-LEY-Sidebar
<!--Reusable block--> <div class=sidebar1><div class="vp-reusable-content"></div></div> <script> reusableBlock("rcb-ley-sidebar"); </script>
<!--Reusable block-->
<div class="vp-reusable-content"></div>
<script>
reusableBlock("URL-SLUG-HERE");
</script>
SITE HEADER SNIPPET / Block 1:
Insert into Site Header with Code Injection
<!--jQuery--> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
SITE HEADER SNIPPET / Block 2:
Insert into Site Header with Code Injection after block 1
<!--REUSABLE BLOCKS INIT START-->
<style>
/* Non-rendered Newsletter Blocks are hidden by default. Fix.*/
.vp-reusable-content .newsletter-block:not(.rendered) {
opacity:1 !important;
}
</style>
<script>
function reusableBlock(fetchUrl) {
// in case there are several on page, get the last / latest div.vp-reusable-content as we want to only work on that
var thisReusableBlock = $(".vp-reusable-content:last");
//JS-fetch location: http/https + domain + page url + SQS json format
var fetchUrl = window.location.protocol + "//" + window.location.hostname + "/" + fetchUrl + "?format=json-pretty";
fetch(fetchUrl, {credentials: 'include'})
.then(response => {
return response.json();
})
.then(data => {
thisReusableBlock.html(data.mainContent);
thisReusableBlock.find('.sqs-layout').removeClass('sqs-layout');
// loop images and set data-src as src
thisReusableBlock.find( ".image-block" ).each(function(i) {
var reusableImg = $( this ).find( "img" );
reusableImg.attr("src", reusableImg.attr("data-src"));
});
//remove double paddings
thisReusableBlock.closest(".sqs-block.code-block")
.addClass("vp-reusable-parent-codeblock")
.css("padding", "0px");
})
.catch(err => {
// Fetch Erorr
console.log("REUSABLE BLOCKS ERROR: Error fetching content. Check fetchUrl. Might also be caused by an older browser. Please update to new Chrome, Firefox, Safari or Microsoft Edge");
});
}
</script>
<!--REUSABLE BLOCKS INIT END-->
