News:

You may pay someone to create your store, or you visit our seminar and become a professional yourself with the silver certification

Main Menu

ld-json and double quote in product descriptions

Started by diri, November 23, 2019, 09:03:46 AM

Previous topic - Next topic

diri

Long standing issue:

To get correct ld-json double quotes should be escaped in sublayouts/snippets.php.

Something like
  "description":"<?php $escdescription str_replace('"','\"',$description); echo $escdescription?>",

should be sufficient (line 80).

Milbo

or maybe directly an htmlspecialchars?

I see in the code before

if (empty($description)){
if (!empty($product->product_s_desc)){
$description = htmlspecialchars(strip_tags($product->product_s_desc));
} else {
$description = htmlspecialchars(strip_tags($product->product_desc));
}
}
Should I fix your bug, please support the VirtueMart project and become a member
______________________________________
Extensions approved by the core team: http://extensions.virtuemart.net/

diri

I've seen this code as well and used the extra variable to not to "disturb" any other functionality or overwrite because it's a problem with LD-JSON only in some cases (eg product  wheel size like 2" or height 19" in description).

AFAIR it's no problem when using TinyMCE or JCE but, using them can cause other problems especially when there is an update after you tweaked them a bit. Some automatic behaviour of those editors look comfortable, but ... .

Milbo

how works this for you?


if (empty($description)){
if (!empty($product->product_s_desc)){
$description = $product->product_s_desc;
} else {
$description = $product->product_desc;
}
}
$description = str_replace('"','\"',htmlspecialchars(strip_tags($description)));
Should I fix your bug, please support the VirtueMart project and become a member
______________________________________
Extensions approved by the core team: http://extensions.virtuemart.net/

Studio 42

About this problem,
why you dont use an Object and PHP json_encode function?
This is 100% safe