5.7.5.6 - Custom package on_start method called by conversation block
PermalinkIn the package controller I add this code (for example):
$jsonLDSite = '<script type="application/ld+json">{'; $jsonLDSite .= '"@context" : "http://schema.org",'; $jsonLDSite .= '"@type" : "WebSite",'; $jsonLDSite .= '"name" : "'.$name.'",'; if(!empty($alternateName)){ $jsonLDSite .= '"alternateName" : "'.$alternateName.'",'; } $jsonLDSite .= '"url" : "'.$url.'"'; $jsonLDSite .= '}</script>'; $view->addFooterItem($jsonLDSite);
Everything works except when I add the Conversation block to the page.
Inside the Conversation block view.php my on_start method is called again and put on the website.
This means the json-ld snippet is added to the page twice.
This is the html output from the conversation block:
<div class="ccm-conversation-wrapper" data-conversation-id="5"> <script type="application/ld+json"> {"@context" : "http://schema.org","@type" : "WebSite","name" : Mywebsite Name","url" : "http://www.mywebsite.com"} </script> <h4>Add Message</h4> // code of the conversation block continues
I've solved this by adding an if-condition to my on_start method, however this might not be the best solution...
// Making sure this is only called once at on_start in the index.php. if($_SERVER['CONTEXT_PREFIX'] == DIR_REL.'/index.php'){ //here the code to add the json-ld to the footer }
I've also tried with addHeaderItem instead of the addFooterItem, and both gave the same result.
Anyone else experienced the conversation block adding data through the on_start of a custom package controller ? (my package handle is abc_snippet in case someone wants to try and reproduce)