每个循环的OpenCart 2.3产品审阅模式JSON-LD?

时间:2018-12-27 10:02:41

标签: php jsonschema opencart2.3

我不是真正的编码员,我破产了,试图在网上商店赚钱。我正在使用OpenCart 2.3.0.2开一个在线商店,并一直在尝试SEO在启动之前对其进行优化。这次,我试图通过结构化数据标记对其进行改进。由于我目前没有足够的经济能力购买模块,因此我自己动手做并学习东西的工作原理。

我试图为OpenCart 2.3创建自己的产品模块架构,但陷入了“评论”部分。 JSON-LD已完全构建并经过测试。

我正尝试使用JSON-LD进行标记,是从this page和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模式循环产品评论? 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

为什么不使用json_encode()

JSON-LD Product模式看上去完全不同:

<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>';

另请参阅structured data testing tool

答案 1 :(得分:0)

尝试一下

get-childitem 'c:\temp\*' -file -include '*.png', '*.jpg'