Я не совсем кодер, я сломался и пытаюсь заработать в интернет-магазине. Я открываю интернет-магазин с использованием OpenCart 2.3.0.2 и пытаюсь оптимизировать его до запуска. На этот раз я пытаюсь улучшить его с помощью структурированной разметки данных. Поскольку у меня нет финансовых возможностей (на данный момент) для покупки модулей, я делаю это сам и изучаю, как работают вещи.
Я пытаюсь создать свой собственный модуль Schema for Product для OpenCart 2.3, но застрял в части обзора. JSON-LD полностью собран и протестирован.
Я пытался разметить с помощью JSON-LD, узнал это от эта страница и на форуме OpenCart приведен фрагмент проблемного кода (часть обзора):
"review": [
<?php foreach($reviewss as $review) { ?>
{
"@type": "Review",
"author": "<?php echo $review['author'];?>",
"datePublished": "<?php echo $review['date_added'];?>",
"description": "<?php echo $review['text'];?>",
"name": "<?php echo $review['author'];?>",
"reviewRating": {
"@type": "Rating",
"bestRating": "5",
"ratingValue": "<?php echo $review['rating'];?>",
"worstRating": "1"}
}
<?php } ?>
]
}
Которые производят продукцию:
"review": [
{
"@type": "Review",
"author": "A Parker",
"datePublished": "16/12/2018",
"description": "Wow! Product arrive yesterday and it's well packed. The product is well-designed.",
"name": "A Parker",
"reviewRating": {
"@type": "Rating",
"bestRating": "5",
"ratingValue": "5",
"worstRating": "1"}
} #there should be a comma here after "}".
{
"@type": "Review",
"author": "David Lay",
"datePublished": "15/12/2018",
"description": "Great product! Works as advertised.",
"name": "David Lay",
"reviewRating": {
"@type": "Rating",
"bestRating": "5",
"ratingValue": "5",
"worstRating": "1"}
}
]
}
Here's the correct one. Tested using Google Structured Data Markup.
"review": [
{
"@type": "Review",
"author": "A Parker",
"datePublished": "16/12/2018",
"description": "Wow! Product arrive yesterday and it's well packed. The product is well-designed.",
"name": "A Parker",
"reviewRating": {
"@type": "Rating",
"bestRating": "5",
"ratingValue": "5",
"worstRating": "1"}
},
{
"@type": "Review",
"author": "David Lay",
"datePublished": "15/12/2018",
"description": "Great product! Works as advertised.",
"name": "David Lay",
"reviewRating": {
"@type": "Rating",
"bestRating": "5",
"ratingValue": "5",
"worstRating": "1"}
}
]
}
Я не уверен, как это называется на самом деле, я думаю, что проблема LOOP. Там должна быть запятая, чтобы отделить обзор для каждого поста обзора. Код работает нормально, если есть только 1 отзыв.
Должно быть условие вставить запятую, например, если обзор больше одного, затем вставить запятую, если нет, то нет запятой. Тогда, конечно, последний элемент не должен иметь запятую.
Я дергал себя за волосы, чтобы решить эту проблему. Я не знаю PHP, но я очень старался, читая форум, на тему цикла и условия if / then, foreach
и т.д. Но вряд ли могу это понять.
Я не уверен, как задать вопрос, может быть, Как зациклить публикацию обзора продукта в OpenCart 2.3 для схемы JSON-LD?
Любая помощь с благодарностью.
почему бы не использовать json_encode()
?
JSON-LD
Товар Схема выглядит совсем иначе:
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Product",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "3.5",
"reviewCount": "11"},
"description": "0.7 cubic feet countertop microwave. Has six preset cooking categories and convenience features like Add-A-Minute and Child Lock.",
"name": "Kenmore White 17\" Microwave",
"image": "kenmore-microwave-17in.jpg",
"offers": {
"@type": "Offer",
"availability": "http://schema.org/InStock",
"price": "55.00",
"priceCurrency": "USD"},
"review": [{
"@type": "Review",
"author": "Ellie",
"datePublished": "2011-04-01",
"description": "The lamp burned out and now I have to replace it.",
"name": "Not a happy camper",
"reviewRating": {
"@type": "Rating",
"bestRating": "5",
"ratingValue": "1",
"worstRating": "1"}
}, {
"@type": "Review",
"author": "Lucas",
"datePublished": "2011-03-25",
"description": "Great microwave for the price. It is small and fits in my apartment.",
"name": "Value purchase",
"reviewRating": {
"@type": "Rating",
"bestRating": "5",
"ratingValue": "4",
"worstRating": "1"}
}]
}
</script>
например:
$data = (object) array(
"@context" => "http://schema.org",
"@type" => "Product",
"aggregateRating" => (object) array(
"@type": "AggregateRating",
"ratingValue" => "3.5",
"reviewCount" => "11"),
"description" => "0.7 cubic feet countertop microwave. Has six preset cooking categories and convenience features like Add-A-Minute and Child Lock.",
"name" => "Kenmore White 17\" Microwave",
"image"=> "kenmore-microwave-17in.jpg",
"offers" => (object) array(
"@type": "Offer",
"availability": "http://schema.org/InStock",
"price": "55.00",
"priceCurrency": "USD"),
"review" => array()
);
foreach($reviews as $review) {
array_push($data->review, $review);
}
echo '<script type="application/ld+json">';
echo json_encode($data);
echo '</script>';
также увидеть инструмент для тестирования структурированных данных.
Других решений пока нет …