Version Notes
+ Breadcrumbs markup
+ Markup for aggregate product rating and each product review
Download this release
Release Info
Developer | MagPleasure Ltd. |
Extension | rich_snippets |
Version | 1.2.0 |
Comparing to | |
See all releases |
Code changes from version 1.1.1 to 1.2.0
- app/code/local/Magpleasure/Richsnippets/Block/Catalog/Product/View.php +6 -0
- app/code/local/Magpleasure/Richsnippets/Block/Catalog/Product/View/Markup.php +30 -0
- app/code/local/Magpleasure/Richsnippets/Block/Page/Html/Breadcrumbs.php +73 -0
- app/code/local/Magpleasure/Richsnippets/Helper/Data.php +81 -81
- app/code/local/Magpleasure/Richsnippets/Model/Observer.php +21 -1
- app/code/local/Magpleasure/Richsnippets/Model/System/Config/Source/Breadcrumbs.php +47 -0
- app/code/local/Magpleasure/Richsnippets/etc/config.xml +170 -163
- app/code/local/Magpleasure/Richsnippets/etc/system.xml +15 -0
- app/design/frontend/base/default/layout/richsnippets.xml +27 -27
- app/design/frontend/base/default/template/richsnippets/catalog/product/view/markup.phtml +65 -81
- app/etc/modules/Magpleasure_Richsnippets.xml +25 -25
- app/locale/en_US/Magpleasure_Richsnippets.csv +4 -4
- package.xml +8 -8
app/code/local/Magpleasure/Richsnippets/Block/Catalog/Product/View.php
CHANGED
@@ -42,6 +42,12 @@ class Magpleasure_Richsnippets_Block_Catalog_Product_View extends Mage_Catalog_B
|
|
42 |
return $html;
|
43 |
}
|
44 |
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
protected function _insertRichSnippets($html)
|
46 |
{
|
47 |
$markup = $this->getLayout()->getBlock('mp.richsnippets')->toHtml();
|
42 |
return $html;
|
43 |
}
|
44 |
|
45 |
+
/**
|
46 |
+
* Insert product schema.org markup
|
47 |
+
*
|
48 |
+
* @param $html
|
49 |
+
* @return mixed
|
50 |
+
*/
|
51 |
protected function _insertRichSnippets($html)
|
52 |
{
|
53 |
$markup = $this->getLayout()->getBlock('mp.richsnippets')->toHtml();
|
app/code/local/Magpleasure/Richsnippets/Block/Catalog/Product/View/Markup.php
CHANGED
@@ -90,4 +90,34 @@ class Magpleasure_Richsnippets_Block_Catalog_Product_View_Markup extends Mage_Ca
|
|
90 |
return $summaryData->getId() ? $summaryData->getReviewsCount() : 0;
|
91 |
}
|
92 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
}
|
90 |
return $summaryData->getId() ? $summaryData->getReviewsCount() : 0;
|
91 |
}
|
92 |
}
|
93 |
+
|
94 |
+
/**
|
95 |
+
* Get all product reviews
|
96 |
+
*
|
97 |
+
* @return Mage_Review_Model_Resource_Review_Collection
|
98 |
+
*/
|
99 |
+
public function getReviews()
|
100 |
+
{
|
101 |
+
$reviews = Mage::getModel('review/review')->getCollection()
|
102 |
+
->addStoreFilter(Mage::app()->getStore()->getId())
|
103 |
+
->addStatusFilter(Mage_Review_Model_Review::STATUS_APPROVED)
|
104 |
+
->addEntityFilter('product', $this->getProduct()->getId())
|
105 |
+
->setDateOrder();
|
106 |
+
return $reviews;
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Get average review rating
|
111 |
+
*
|
112 |
+
* @param $review
|
113 |
+
* @return float|int
|
114 |
+
*/
|
115 |
+
public function getReviewRating($review)
|
116 |
+
{
|
117 |
+
$votes = array();
|
118 |
+
foreach ($review->getRatingVotes() as $vote) {
|
119 |
+
array_push($votes, $vote->getPercent());
|
120 |
+
}
|
121 |
+
return count($votes) ? array_sum($votes) / count($votes) : 0;
|
122 |
+
}
|
123 |
}
|
app/code/local/Magpleasure/Richsnippets/Block/Page/Html/Breadcrumbs.php
ADDED
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Magpleasure Ltd.
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the EULA
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://www.magpleasure.com/LICENSE.txt
|
12 |
+
*
|
13 |
+
* @category Magpleasure
|
14 |
+
* @package Magpleasure_Richsnippets
|
15 |
+
* @copyright Copyright (c) 2014-2015 Magpleasure Ltd. (http://www.magpleasure.com)
|
16 |
+
* @license http://www.magpleasure.com/LICENSE.txt
|
17 |
+
*/
|
18 |
+
class Magpleasure_Richsnippets_Block_Page_Html_Breadcrumbs extends Mage_Page_Block_Html_Breadcrumbs
|
19 |
+
{
|
20 |
+
/**
|
21 |
+
* Helper
|
22 |
+
*
|
23 |
+
* @return Magpleasure_Richsnippets_Helper_Data
|
24 |
+
*/
|
25 |
+
protected function _helper()
|
26 |
+
{
|
27 |
+
return Mage::helper('richsnippets');
|
28 |
+
}
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Render block HTML
|
32 |
+
*
|
33 |
+
* @return string
|
34 |
+
*/
|
35 |
+
protected function _toHtml()
|
36 |
+
{
|
37 |
+
$html = parent::_toHtml();
|
38 |
+
$html = $this->_addMarkup($html);
|
39 |
+
return $html;
|
40 |
+
}
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Add markup for breadcrumbs
|
44 |
+
*
|
45 |
+
* @param $html
|
46 |
+
* @return mixed
|
47 |
+
*/
|
48 |
+
protected function _addMarkup($html)
|
49 |
+
{
|
50 |
+
$type = $this->_helper()->getConfigValue('general', 'breadcrumbs');
|
51 |
+
if (Magpleasure_Richsnippets_Model_System_Config_Source_Breadcrumbs::NONE == $type) {
|
52 |
+
return $html;
|
53 |
+
}
|
54 |
+
|
55 |
+
if (Magpleasure_Richsnippets_Model_System_Config_Source_Breadcrumbs::DATA_VOCABULARY == $type) {
|
56 |
+
$html = preg_replace('/(<li.*?)>[\s]*?(<a.*?\/a>)/', '$1 itemscope itemtype="http://data-vocabulary.org/Breadcrumb">$2', $html);
|
57 |
+
$html = preg_replace('/(<a.*?)>/', '$1 itemprop="url">', $html);
|
58 |
+
$html = preg_replace('/(<a.*?>)([\s\S]*?)(<\/a>)/', '$1$2$3 <meta itemprop="title" content="$2">', $html);
|
59 |
+
} else if (Magpleasure_Richsnippets_Model_System_Config_Source_Breadcrumbs::SCHEMA == $type) {
|
60 |
+
$html = preg_replace('/(<ul.*?)>/', '$1 itemscope itemtype="http://schema.org/BreadcrumbList">', $html);
|
61 |
+
$html = preg_replace('/(<li.*?)>[\s]*?(<a.*?\/a>)/', '$1 itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">$2', $html);
|
62 |
+
$html = preg_replace('/(<a.*?)>/', '$1 itemprop="item">', $html);
|
63 |
+
$html = preg_replace('/(<a.*?>)([\s\S]*?)(<\/a>)/', '$1$2$3 <meta itemprop="name" content="$2">', $html);
|
64 |
+
|
65 |
+
$html = preg_replace_callback('/(<a.*?>[\s\S]*?<\/a>)/', function ($matches) {
|
66 |
+
static $position = 0;
|
67 |
+
return $matches[0] . '<meta itemprop="position" content="' . ++$position . '">';
|
68 |
+
}, $html);
|
69 |
+
}
|
70 |
+
|
71 |
+
return $html;
|
72 |
+
}
|
73 |
+
}
|
app/code/local/Magpleasure/Richsnippets/Helper/Data.php
CHANGED
@@ -1,82 +1,82 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Magpleasure Ltd.
|
5 |
-
*
|
6 |
-
* NOTICE OF LICENSE
|
7 |
-
*
|
8 |
-
* This source file is subject to the EULA
|
9 |
-
* that is bundled with this package in the file LICENSE.txt.
|
10 |
-
* It is also available through the world-wide-web at this URL:
|
11 |
-
* http://www.magpleasure.com/LICENSE.txt
|
12 |
-
*
|
13 |
-
* @category Magpleasure
|
14 |
-
* @package Magpleasure_Richsnippets
|
15 |
-
* @copyright Copyright (c) 2014-2015 Magpleasure Ltd. (http://www.magpleasure.com)
|
16 |
-
* @license http://www.magpleasure.com/LICENSE.txt
|
17 |
-
*/
|
18 |
-
class Magpleasure_Richsnippets_Helper_Data extends Mage_Core_Helper_Abstract
|
19 |
-
{
|
20 |
-
/**
|
21 |
-
* Value from config path 'richsnippets/group/field'
|
22 |
-
*
|
23 |
-
* @param $group
|
24 |
-
* @param $field
|
25 |
-
* @return mixed
|
26 |
-
*/
|
27 |
-
public function getConfigValue($group, $field)
|
28 |
-
{
|
29 |
-
return Mage::getStoreConfig('richsnippets' . DS . $group . DS . $field);
|
30 |
-
}
|
31 |
-
|
32 |
-
/**
|
33 |
-
* Calculate default configurable price for bundle product
|
34 |
-
*
|
35 |
-
* @param $product
|
36 |
-
* @return int
|
37 |
-
*/
|
38 |
-
public function getConfiguredPrice($product)
|
39 |
-
{
|
40 |
-
if (Mage_Catalog_Model_Product_Type::TYPE_BUNDLE != $product->getTypeId()) {
|
41 |
-
return 0;
|
42 |
-
}
|
43 |
-
$priceModel = $product->getPriceModel();
|
44 |
-
$bundleBlock = Mage::getSingleton('core/layout')->createBlock('bundle/catalog_product_view_type_bundle');
|
45 |
-
$options = $bundleBlock->setProduct($product)->getOptions();
|
46 |
-
$price = 0;
|
47 |
-
/** @var Mage_Bundle_Model_Option $option */
|
48 |
-
foreach ($options as $option) {
|
49 |
-
$selection = $option->getDefaultSelection();
|
50 |
-
if (null === $selection) {
|
51 |
-
continue;
|
52 |
-
}
|
53 |
-
$price += $priceModel->getSelectionPreFinalPrice($product, $selection, $selection->getSelectionQty());
|
54 |
-
}
|
55 |
-
return $price;
|
56 |
-
}
|
57 |
-
|
58 |
-
/**
|
59 |
-
* Calculate default price for grouped product
|
60 |
-
*
|
61 |
-
* @param $groupedProduct
|
62 |
-
* @param bool $incTax
|
63 |
-
* @return int
|
64 |
-
*/
|
65 |
-
public function getGroupedProductPrice($groupedProduct, $incTax = true)
|
66 |
-
{
|
67 |
-
$productIds = $groupedProduct->getTypeInstance()->getChildrenIds($groupedProduct->getId());
|
68 |
-
$price = 0;
|
69 |
-
foreach ($productIds as $ids) {
|
70 |
-
foreach ($ids as $id) {
|
71 |
-
$product = Mage::getModel('catalog/product')->load($id);
|
72 |
-
if ($incTax) {
|
73 |
-
$price += Mage::helper('tax')->getPrice($product, $product->getPriceModel()->getFinalPrice(null, $product, true), true);
|
74 |
-
} else {
|
75 |
-
$price += $product->getPriceModel()->getFinalPrice(null, $product, true);
|
76 |
-
}
|
77 |
-
}
|
78 |
-
}
|
79 |
-
return $price;
|
80 |
-
}
|
81 |
-
}
|
82 |
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Magpleasure Ltd.
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the EULA
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://www.magpleasure.com/LICENSE.txt
|
12 |
+
*
|
13 |
+
* @category Magpleasure
|
14 |
+
* @package Magpleasure_Richsnippets
|
15 |
+
* @copyright Copyright (c) 2014-2015 Magpleasure Ltd. (http://www.magpleasure.com)
|
16 |
+
* @license http://www.magpleasure.com/LICENSE.txt
|
17 |
+
*/
|
18 |
+
class Magpleasure_Richsnippets_Helper_Data extends Mage_Core_Helper_Abstract
|
19 |
+
{
|
20 |
+
/**
|
21 |
+
* Value from config path 'richsnippets/group/field'
|
22 |
+
*
|
23 |
+
* @param $group
|
24 |
+
* @param $field
|
25 |
+
* @return mixed
|
26 |
+
*/
|
27 |
+
public function getConfigValue($group, $field)
|
28 |
+
{
|
29 |
+
return Mage::getStoreConfig('richsnippets' . DS . $group . DS . $field);
|
30 |
+
}
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Calculate default configurable price for bundle product
|
34 |
+
*
|
35 |
+
* @param $product
|
36 |
+
* @return int
|
37 |
+
*/
|
38 |
+
public function getConfiguredPrice($product)
|
39 |
+
{
|
40 |
+
if (Mage_Catalog_Model_Product_Type::TYPE_BUNDLE != $product->getTypeId()) {
|
41 |
+
return 0;
|
42 |
+
}
|
43 |
+
$priceModel = $product->getPriceModel();
|
44 |
+
$bundleBlock = Mage::getSingleton('core/layout')->createBlock('bundle/catalog_product_view_type_bundle');
|
45 |
+
$options = $bundleBlock->setProduct($product)->getOptions();
|
46 |
+
$price = 0;
|
47 |
+
/** @var Mage_Bundle_Model_Option $option */
|
48 |
+
foreach ($options as $option) {
|
49 |
+
$selection = $option->getDefaultSelection();
|
50 |
+
if (null === $selection) {
|
51 |
+
continue;
|
52 |
+
}
|
53 |
+
$price += $priceModel->getSelectionPreFinalPrice($product, $selection, $selection->getSelectionQty());
|
54 |
+
}
|
55 |
+
return $price;
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Calculate default price for grouped product
|
60 |
+
*
|
61 |
+
* @param $groupedProduct
|
62 |
+
* @param bool $incTax
|
63 |
+
* @return int
|
64 |
+
*/
|
65 |
+
public function getGroupedProductPrice($groupedProduct, $incTax = true)
|
66 |
+
{
|
67 |
+
$productIds = $groupedProduct->getTypeInstance()->getChildrenIds($groupedProduct->getId());
|
68 |
+
$price = 0;
|
69 |
+
foreach ($productIds as $ids) {
|
70 |
+
foreach ($ids as $id) {
|
71 |
+
$product = Mage::getModel('catalog/product')->load($id);
|
72 |
+
if ($incTax) {
|
73 |
+
$price += Mage::helper('tax')->getPrice($product, $product->getPriceModel()->getFinalPrice(null, $product, true), true);
|
74 |
+
} else {
|
75 |
+
$price += $product->getPriceModel()->getFinalPrice(null, $product, true);
|
76 |
+
}
|
77 |
+
}
|
78 |
+
}
|
79 |
+
return $price;
|
80 |
+
}
|
81 |
+
}
|
82 |
|
app/code/local/Magpleasure/Richsnippets/Model/Observer.php
CHANGED
@@ -17,12 +17,32 @@
|
|
17 |
*/
|
18 |
class Magpleasure_Richsnippets_Model_Observer extends Mage_Core_Block_Abstract
|
19 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
public function productPageBeforeLoad()
|
21 |
{
|
22 |
-
if (Mage::helper('core')->isModuleOutputEnabled('Magpleasure_Richsnippets')
|
|
|
|
|
23 |
$node = Mage::getConfig()->getNode('global/blocks/catalog/rewrite');
|
24 |
$richNode = Mage::getConfig()->getNode('global/blocks/catalog/richrewrite/product_view');
|
25 |
$node->appendChild($richNode);
|
|
|
|
|
|
|
|
|
26 |
}
|
27 |
}
|
28 |
}
|
17 |
*/
|
18 |
class Magpleasure_Richsnippets_Model_Observer extends Mage_Core_Block_Abstract
|
19 |
{
|
20 |
+
/**
|
21 |
+
* Helper
|
22 |
+
*
|
23 |
+
* @return Magpleasure_Richsnippets_Helper_Data
|
24 |
+
*/
|
25 |
+
protected function _helper()
|
26 |
+
{
|
27 |
+
return Mage::helper('richsnippets');
|
28 |
+
}
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Catalog product view predispatch action
|
32 |
+
*
|
33 |
+
*/
|
34 |
public function productPageBeforeLoad()
|
35 |
{
|
36 |
+
if (Mage::helper('core')->isModuleOutputEnabled('Magpleasure_Richsnippets') &&
|
37 |
+
$this->_helper()->getConfigValue('general', 'enabled')
|
38 |
+
) {
|
39 |
$node = Mage::getConfig()->getNode('global/blocks/catalog/rewrite');
|
40 |
$richNode = Mage::getConfig()->getNode('global/blocks/catalog/richrewrite/product_view');
|
41 |
$node->appendChild($richNode);
|
42 |
+
|
43 |
+
$breadcrumbsNode = Mage::getConfig()->getNode('global/blocks/page/rewrite');
|
44 |
+
$richBreadcrumsNode = Mage::getConfig()->getNode('global/blocks/page/richrewrite/html_breadcrumbs');
|
45 |
+
$breadcrumbsNode->appendChild($richBreadcrumsNode);
|
46 |
}
|
47 |
}
|
48 |
}
|
app/code/local/Magpleasure/Richsnippets/Model/System/Config/Source/Breadcrumbs.php
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Magpleasure Ltd.
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the EULA
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://www.magpleasure.com/LICENSE.txt
|
12 |
+
*
|
13 |
+
* @category Magpleasure
|
14 |
+
* @package Magpleasure_Richsnippets
|
15 |
+
* @copyright Copyright (c) 2014-2015 Magpleasure Ltd. (http://www.magpleasure.com)
|
16 |
+
* @license http://www.magpleasure.com/LICENSE.txt
|
17 |
+
*/
|
18 |
+
class Magpleasure_Richsnippets_Model_System_Config_Source_Breadcrumbs
|
19 |
+
{
|
20 |
+
const NONE = 0;
|
21 |
+
const DATA_VOCABULARY = 1;
|
22 |
+
const SCHEMA = 2;
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Helper
|
26 |
+
*
|
27 |
+
* @return Magpleasure_Richsnippets_Helper_Data
|
28 |
+
*/
|
29 |
+
protected function _helper()
|
30 |
+
{
|
31 |
+
return Mage::helper('richsnippets');
|
32 |
+
}
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Get options in 'key-value' format
|
36 |
+
*
|
37 |
+
* @return array
|
38 |
+
*/
|
39 |
+
public function toOptionArray()
|
40 |
+
{
|
41 |
+
return array(
|
42 |
+
self::NONE => $this->_helper()->__("Don't Add"),
|
43 |
+
self::DATA_VOCABULARY => $this->_helper()->__('Based on data-vocabulary.org'),
|
44 |
+
self::SCHEMA => $this->_helper()->__('Based on schema.org')
|
45 |
+
);
|
46 |
+
}
|
47 |
+
}
|
app/code/local/Magpleasure/Richsnippets/etc/config.xml
CHANGED
@@ -1,164 +1,171 @@
|
|
1 |
-
<?xml version="1.0"?>
|
2 |
-
<!--
|
3 |
-
/**
|
4 |
-
* Magpleasure Ltd.
|
5 |
-
*
|
6 |
-
* NOTICE OF LICENSE
|
7 |
-
*
|
8 |
-
* This source file is subject to the EULA
|
9 |
-
* that is bundled with this package in the file LICENSE.txt.
|
10 |
-
* It is also available through the world-wide-web at this URL:
|
11 |
-
* http://www.magpleasure.com/LICENSE.txt
|
12 |
-
*
|
13 |
-
* @category Magpleasure
|
14 |
-
* @package Magpleasure_Richsnippets
|
15 |
-
* @copyright Copyright (c) 2014-2015 Magpleasure Ltd. (http://www.magpleasure.com)
|
16 |
-
* @license http://www.magpleasure.com/LICENSE.txt
|
17 |
-
*/
|
18 |
-
-->
|
19 |
-
<config>
|
20 |
-
<modules>
|
21 |
-
<Magpleasure_Richsnippets>
|
22 |
-
<version>1.
|
23 |
-
</Magpleasure_Richsnippets>
|
24 |
-
</modules>
|
25 |
-
<frontend>
|
26 |
-
<routers>
|
27 |
-
<richsnippets>
|
28 |
-
<use>standard</use>
|
29 |
-
<args>
|
30 |
-
<module>Magpleasure_Richsnippets</module>
|
31 |
-
<frontName>richsnippets</frontName>
|
32 |
-
</args>
|
33 |
-
</richsnippets>
|
34 |
-
</routers>
|
35 |
-
<layout>
|
36 |
-
<updates>
|
37 |
-
<richsnippets>
|
38 |
-
<file>richsnippets.xml</file>
|
39 |
-
</richsnippets>
|
40 |
-
</updates>
|
41 |
-
</layout>
|
42 |
-
<translate>
|
43 |
-
<modules>
|
44 |
-
<Magpleasure_Richsnippets>
|
45 |
-
<files>
|
46 |
-
<default>Magpleasure_Richsnippets.csv</default>
|
47 |
-
</files>
|
48 |
-
</Magpleasure_Richsnippets>
|
49 |
-
</modules>
|
50 |
-
</translate>
|
51 |
-
<events>
|
52 |
-
<controller_action_predispatch_catalog_product_view>
|
53 |
-
<observers>
|
54 |
-
<mp_richsnippets_product_view_predispatch>
|
55 |
-
<type>singleton</type>
|
56 |
-
<class>richsnippets/observer</class>
|
57 |
-
<method>productPageBeforeLoad</method>
|
58 |
-
</mp_richsnippets_product_view_predispatch>
|
59 |
-
</observers>
|
60 |
-
</controller_action_predispatch_catalog_product_view>
|
61 |
-
</events>
|
62 |
-
</frontend>
|
63 |
-
<global>
|
64 |
-
<models>
|
65 |
-
<richsnippets>
|
66 |
-
<class>Magpleasure_Richsnippets_Model</class>
|
67 |
-
</richsnippets>
|
68 |
-
</models>
|
69 |
-
<helpers>
|
70 |
-
<richsnippets>
|
71 |
-
<class>Magpleasure_Richsnippets_Helper</class>
|
72 |
-
</richsnippets>
|
73 |
-
</helpers>
|
74 |
-
<blocks>
|
75 |
-
<richsnippets>
|
76 |
-
<class>Magpleasure_Richsnippets_Block</class>
|
77 |
-
</richsnippets>
|
78 |
-
<catalog>
|
79 |
-
<rewrite></rewrite>
|
80 |
-
<richrewrite>
|
81 |
-
<product_view>Magpleasure_Richsnippets_Block_Catalog_Product_View</product_view>
|
82 |
-
</richrewrite>
|
83 |
-
</catalog>
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
164 |
</config>
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
* Magpleasure Ltd.
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the EULA
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://www.magpleasure.com/LICENSE.txt
|
12 |
+
*
|
13 |
+
* @category Magpleasure
|
14 |
+
* @package Magpleasure_Richsnippets
|
15 |
+
* @copyright Copyright (c) 2014-2015 Magpleasure Ltd. (http://www.magpleasure.com)
|
16 |
+
* @license http://www.magpleasure.com/LICENSE.txt
|
17 |
+
*/
|
18 |
+
-->
|
19 |
+
<config>
|
20 |
+
<modules>
|
21 |
+
<Magpleasure_Richsnippets>
|
22 |
+
<version>1.2</version>
|
23 |
+
</Magpleasure_Richsnippets>
|
24 |
+
</modules>
|
25 |
+
<frontend>
|
26 |
+
<routers>
|
27 |
+
<richsnippets>
|
28 |
+
<use>standard</use>
|
29 |
+
<args>
|
30 |
+
<module>Magpleasure_Richsnippets</module>
|
31 |
+
<frontName>richsnippets</frontName>
|
32 |
+
</args>
|
33 |
+
</richsnippets>
|
34 |
+
</routers>
|
35 |
+
<layout>
|
36 |
+
<updates>
|
37 |
+
<richsnippets>
|
38 |
+
<file>richsnippets.xml</file>
|
39 |
+
</richsnippets>
|
40 |
+
</updates>
|
41 |
+
</layout>
|
42 |
+
<translate>
|
43 |
+
<modules>
|
44 |
+
<Magpleasure_Richsnippets>
|
45 |
+
<files>
|
46 |
+
<default>Magpleasure_Richsnippets.csv</default>
|
47 |
+
</files>
|
48 |
+
</Magpleasure_Richsnippets>
|
49 |
+
</modules>
|
50 |
+
</translate>
|
51 |
+
<events>
|
52 |
+
<controller_action_predispatch_catalog_product_view>
|
53 |
+
<observers>
|
54 |
+
<mp_richsnippets_product_view_predispatch>
|
55 |
+
<type>singleton</type>
|
56 |
+
<class>richsnippets/observer</class>
|
57 |
+
<method>productPageBeforeLoad</method>
|
58 |
+
</mp_richsnippets_product_view_predispatch>
|
59 |
+
</observers>
|
60 |
+
</controller_action_predispatch_catalog_product_view>
|
61 |
+
</events>
|
62 |
+
</frontend>
|
63 |
+
<global>
|
64 |
+
<models>
|
65 |
+
<richsnippets>
|
66 |
+
<class>Magpleasure_Richsnippets_Model</class>
|
67 |
+
</richsnippets>
|
68 |
+
</models>
|
69 |
+
<helpers>
|
70 |
+
<richsnippets>
|
71 |
+
<class>Magpleasure_Richsnippets_Helper</class>
|
72 |
+
</richsnippets>
|
73 |
+
</helpers>
|
74 |
+
<blocks>
|
75 |
+
<richsnippets>
|
76 |
+
<class>Magpleasure_Richsnippets_Block</class>
|
77 |
+
</richsnippets>
|
78 |
+
<catalog>
|
79 |
+
<rewrite></rewrite>
|
80 |
+
<richrewrite>
|
81 |
+
<product_view>Magpleasure_Richsnippets_Block_Catalog_Product_View</product_view>
|
82 |
+
</richrewrite>
|
83 |
+
</catalog>
|
84 |
+
<page>
|
85 |
+
<rewrite></rewrite>
|
86 |
+
<richrewrite>
|
87 |
+
<html_breadcrumbs>Magpleasure_Richsnippets_Block_Page_Html_Breadcrumbs</html_breadcrumbs>
|
88 |
+
</richrewrite>
|
89 |
+
</page>
|
90 |
+
</blocks>
|
91 |
+
<resources>
|
92 |
+
<richsnippets_setup>
|
93 |
+
<setup>
|
94 |
+
<module>Magpleasure_Ajaxreviews</module>
|
95 |
+
</setup>
|
96 |
+
<connection>
|
97 |
+
<use>core_setup</use>
|
98 |
+
</connection>
|
99 |
+
</richsnippets_setup>
|
100 |
+
<richsnippets_write>
|
101 |
+
<connection>
|
102 |
+
<use>core_write</use>
|
103 |
+
</connection>
|
104 |
+
</richsnippets_write>
|
105 |
+
<richsnippets_read>
|
106 |
+
<connection>
|
107 |
+
<use>core_read</use>
|
108 |
+
</connection>
|
109 |
+
</richsnippets_read>
|
110 |
+
</resources>
|
111 |
+
</global>
|
112 |
+
<admin>
|
113 |
+
<routers>
|
114 |
+
<richsnippets_admin>
|
115 |
+
<use>admin</use>
|
116 |
+
<args>
|
117 |
+
<module>Magpleasure_Richsnippets</module>
|
118 |
+
<frontName>richsnippets_admin</frontName>
|
119 |
+
</args>
|
120 |
+
</richsnippets_admin>
|
121 |
+
</routers>
|
122 |
+
</admin>
|
123 |
+
<adminhtml>
|
124 |
+
<acl>
|
125 |
+
<resources>
|
126 |
+
<all>
|
127 |
+
<title>Allow Everything</title>
|
128 |
+
</all>
|
129 |
+
<admin>
|
130 |
+
<children>
|
131 |
+
<system>
|
132 |
+
<children>
|
133 |
+
<config>
|
134 |
+
<children>
|
135 |
+
<richsnippets>
|
136 |
+
<title>Magpleasure - Rich Snippets</title>
|
137 |
+
</richsnippets>
|
138 |
+
</children>
|
139 |
+
</config>
|
140 |
+
</children>
|
141 |
+
</system>
|
142 |
+
</children>
|
143 |
+
</admin>
|
144 |
+
</resources>
|
145 |
+
</acl>
|
146 |
+
<layout>
|
147 |
+
<updates>
|
148 |
+
<richsnippets>
|
149 |
+
<file>richsnippets.xml</file>
|
150 |
+
</richsnippets>
|
151 |
+
</updates>
|
152 |
+
</layout>
|
153 |
+
<translate>
|
154 |
+
<modules>
|
155 |
+
<Magpleasure_Richsnippets>
|
156 |
+
<files>
|
157 |
+
<default>Magpleasure_Richsnippets.csv</default>
|
158 |
+
</files>
|
159 |
+
</Magpleasure_Richsnippets>
|
160 |
+
</modules>
|
161 |
+
</translate>
|
162 |
+
</adminhtml>
|
163 |
+
<default>
|
164 |
+
<richsnippets>
|
165 |
+
<general>
|
166 |
+
<enabled>1</enabled>
|
167 |
+
<breadcrumbs>1</breadcrumbs>
|
168 |
+
</general>
|
169 |
+
</richsnippets>
|
170 |
+
</default>
|
171 |
</config>
|
app/code/local/Magpleasure/Richsnippets/etc/system.xml
CHANGED
@@ -49,6 +49,21 @@
|
|
49 |
<show_in_website>1</show_in_website>
|
50 |
<show_in_store>1</show_in_store>
|
51 |
</enabled>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
</fields>
|
53 |
</general>
|
54 |
</groups>
|
49 |
<show_in_website>1</show_in_website>
|
50 |
<show_in_store>1</show_in_store>
|
51 |
</enabled>
|
52 |
+
<breadcrumbs translate="label">
|
53 |
+
<label>Breadcrumbs Markup</label>
|
54 |
+
<frontend_type>select</frontend_type>
|
55 |
+
<source_model>richsnippets/system_config_source_breadcrumbs</source_model>
|
56 |
+
<sort_order>20</sort_order>
|
57 |
+
<show_in_default>1</show_in_default>
|
58 |
+
<show_in_website>1</show_in_website>
|
59 |
+
<show_in_store>1</show_in_store>
|
60 |
+
<depends>
|
61 |
+
<enabled>1</enabled>
|
62 |
+
</depends>
|
63 |
+
<comment><![CDATA[Google doesn't support the markup for breadcrumbs based on <a href="http://schema.org" target="_blank">schema.org</a> yet.<br>
|
64 |
+
As soon as it starts supporting this markup, it will be more preferred for use.<br>
|
65 |
+
Before choosing the "Based on schema.org" option, make sure that Google <a href="https://developers.google.com/structured-data/breadcrumbs" target="_blank">already supports</a> this markup.]]></comment>
|
66 |
+
</breadcrumbs>
|
67 |
</fields>
|
68 |
</general>
|
69 |
</groups>
|
app/design/frontend/base/default/layout/richsnippets.xml
CHANGED
@@ -1,28 +1,28 @@
|
|
1 |
-
<?xml version="1.0" ?>
|
2 |
-
<!--
|
3 |
-
/**
|
4 |
-
* Magpleasure Ltd.
|
5 |
-
*
|
6 |
-
* NOTICE OF LICENSE
|
7 |
-
*
|
8 |
-
* This source file is subject to the EULA
|
9 |
-
* that is bundled with this package in the file LICENSE.txt.
|
10 |
-
* It is also available through the world-wide-web at this URL:
|
11 |
-
* http://www.magpleasure.com/LICENSE.txt
|
12 |
-
*
|
13 |
-
* @category Magpleasure
|
14 |
-
* @package Magpleasure_Richsnippets
|
15 |
-
* @copyright Copyright (c) 2014-2015 Magpleasure Ltd. (http://www.magpleasure.com)
|
16 |
-
* @license http://www.magpleasure.com/LICENSE.txt
|
17 |
-
*/
|
18 |
-
-->
|
19 |
-
<layout version="0.1.0">
|
20 |
-
<catalog_product_view>
|
21 |
-
<reference name="product.info">
|
22 |
-
<block type="richsnippets/catalog_product_view_markup"
|
23 |
-
template="richsnippets/catalog/product/view/markup.phtml"
|
24 |
-
name="mp.richsnippets"/>
|
25 |
-
</reference>
|
26 |
-
</catalog_product_view>
|
27 |
-
</layout>
|
28 |
|
1 |
+
<?xml version="1.0" ?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
* Magpleasure Ltd.
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the EULA
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://www.magpleasure.com/LICENSE.txt
|
12 |
+
*
|
13 |
+
* @category Magpleasure
|
14 |
+
* @package Magpleasure_Richsnippets
|
15 |
+
* @copyright Copyright (c) 2014-2015 Magpleasure Ltd. (http://www.magpleasure.com)
|
16 |
+
* @license http://www.magpleasure.com/LICENSE.txt
|
17 |
+
*/
|
18 |
+
-->
|
19 |
+
<layout version="0.1.0">
|
20 |
+
<catalog_product_view>
|
21 |
+
<reference name="product.info">
|
22 |
+
<block type="richsnippets/catalog_product_view_markup"
|
23 |
+
template="richsnippets/catalog/product/view/markup.phtml"
|
24 |
+
name="mp.richsnippets"/>
|
25 |
+
</reference>
|
26 |
+
</catalog_product_view>
|
27 |
+
</layout>
|
28 |
|
app/design/frontend/base/default/template/richsnippets/catalog/product/view/markup.phtml
CHANGED
@@ -20,90 +20,74 @@
|
|
20 |
|
21 |
?>
|
22 |
<?php if ($this->_helper()->getConfigValue('general', 'enabled')): ?>
|
23 |
-
<?php $_product = $this->getProduct() ?>
|
24 |
-
<div style="display:none !important">
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
</div>
|
31 |
-
<div style="display:none !important"
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
; ?>
|
43 |
-
<meta itemprop="availability"
|
44 |
-
content="<?php echo $_available ? 'http://schema.org/InStock' : 'http://schema.org/OutOfStock'; ?>">
|
45 |
-
<?php else: ?>
|
46 |
-
<?php if (Mage_Catalog_Model_Product_Type::TYPE_BUNDLE == $_product->getTypeId()): ?>
|
47 |
-
<?php $_priceModel = Mage::getModel('bundle/product_price'); ?>
|
48 |
-
<?php $_configuredPrice = $this->_helper()->getConfiguredPrice($_product); ?>
|
49 |
-
<?php $_minPrice =
|
50 |
-
method_exists($_priceModel, 'getTotalPrices') ?
|
51 |
$_priceModel->getTotalPrices($_product, 'min', 1) :
|
52 |
-
$_priceModel->getPrices($_product, 'min')
|
53 |
-
|
54 |
-
|
55 |
-
itemprop="
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
content="<?php echo Mage::app()->getStore()->getCurrentCurrencyCode(); ?>">
|
62 |
-
<meta
|
63 |
-
itemprop="minPrice"
|
64 |
-
content="<?php echo round($_minPrice, 2); ?>">
|
65 |
-
|
66 |
-
<?php $_maxPrice =
|
67 |
-
method_exists($_priceModel, 'getTotalPrices') ?
|
68 |
$_priceModel->getTotalPrices($_product, 'max', 1) :
|
69 |
-
$_priceModel->getPrices($_product, 'max')
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
itemprop="price"
|
86 |
-
content="<?php echo round($_product->getPriceModel()->getFinalPrice(null, $_product), 2); ?>">
|
87 |
<?php endif; ?>
|
88 |
-
<meta
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
<?php endif; ?>
|
94 |
-
<meta itemprop="priceCurrency"
|
95 |
-
content="<?php echo Mage::app()->getStore()->getCurrentCurrencyCode(); ?>">
|
96 |
-
</div>
|
97 |
-
<?php if (!Mage::helper('core')->isModuleEnabled('Magpleasure_Ajaxreviews')): ?>
|
98 |
-
<div style="display: none !important"
|
99 |
-
itemscope
|
100 |
-
itemprop="aggregateRating"
|
101 |
-
itemtype="http://schema.org/AggregateRating">
|
102 |
-
<meta itemprop="worstRating" content="0">
|
103 |
-
<meta itemprop="bestRating" content="5">
|
104 |
-
<meta itemprop="ratingValue" content="<?php echo round($this->getAverageRating() * 5 / 100); ?>">
|
105 |
<meta itemprop="ratingCount" content="<?php echo $this->getReviewsCount(); ?>">
|
106 |
-
<meta itemprop="reviewCount" content="<?php echo $this->getReviewsCount(); ?>">
|
107 |
</div>
|
108 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
<?php endif; ?>
|
20 |
|
21 |
?>
|
22 |
<?php if ($this->_helper()->getConfigValue('general', 'enabled')): ?>
|
23 |
+
<?php $_product = $this->getProduct() ?>
|
24 |
+
<div style="display:none !important">
|
25 |
+
<?php $_image = Mage::helper('catalog/image')->init($_product, 'small_image')->resize(125, 125); ?>
|
26 |
+
<meta itemprop="image" content="<?php echo $_image; ?>">
|
27 |
+
<meta itemprop="name" content="<?php echo $this->escapeHtml($_product->getName()); ?>">
|
28 |
+
<meta itemprop="description" content="<?php echo $this->escapeHtml($_product->getDescription()); ?>">
|
29 |
+
<meta itemprop="productID" content="<?php echo $_product->getSku(); ?>">
|
30 |
+
</div>
|
31 |
+
<div style="display:none !important" itemscope itemprop="offers" itemtype="http://schema.org/Offer">
|
32 |
+
<?php if (Mage_Catalog_Model_Product_Type::TYPE_GROUPED == $_product->getTypeId()): ?>
|
33 |
+
<meta itemprop="price" content="<?php echo $this->_helper()->getGroupedProductPrice($_product); ?>">
|
34 |
+
<?php $_available = $_product->isAvailable() && count($_product->getTypeInstance()->getAssociatedProducts()) > 0; ?>
|
35 |
+
<meta itemprop="availability"
|
36 |
+
content="<?php echo $_available ? 'http://schema.org/InStock' : 'http://schema.org/OutOfStock'; ?>">
|
37 |
+
<?php else: ?>
|
38 |
+
<?php if (Mage_Catalog_Model_Product_Type::TYPE_BUNDLE == $_product->getTypeId()): ?>
|
39 |
+
<?php $_priceModel = Mage::getModel('bundle/product_price'); ?>
|
40 |
+
<?php $_configuredPrice = $this->_helper()->getConfiguredPrice($_product); ?>
|
41 |
+
<?php $_minPrice = method_exists($_priceModel, 'getTotalPrices') ?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
$_priceModel->getTotalPrices($_product, 'min', 1) :
|
43 |
+
$_priceModel->getPrices($_product, 'min'); ?>
|
44 |
+
<meta itemprop="price"
|
45 |
+
content="<?php echo round($_configuredPrice ? $_configuredPrice : $_minPrice, 2); ?>">
|
46 |
+
<div style="display:none!important" itemscope itemprop="priceSpecification"
|
47 |
+
itemtype="http://schema.org/PriceSpecification">
|
48 |
+
<meta itemprop="priceCurrency"
|
49 |
+
content="<?php echo Mage::app()->getStore()->getCurrentCurrencyCode(); ?>">
|
50 |
+
<meta itemprop="minPrice" content="<?php echo round($_minPrice, 2); ?>">
|
51 |
+
<?php $_maxPrice = method_exists($_priceModel, 'getTotalPrices') ?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
$_priceModel->getTotalPrices($_product, 'max', 1) :
|
53 |
+
$_priceModel->getPrices($_product, 'max'); ?>
|
54 |
+
<meta itemprop="maxPrice" content="<?php echo round($_maxPrice, 2); ?>">
|
55 |
+
</div>
|
56 |
+
<?php elseif (
|
57 |
+
method_exists(new Mage(), 'getEdition') &&
|
58 |
+
Mage::EDITION_ENTERPRISE == Mage::getEdition() &&
|
59 |
+
Enterprise_GiftCard_Model_Catalog_Product_Type_Giftcard::TYPE_GIFTCARD == $_product->getTypeId()
|
60 |
+
): ?>
|
61 |
+
<meta itemprop="price"
|
62 |
+
content="<?php echo round($_product->getPriceModel()->getMinAmount($_product), 2); ?>">
|
63 |
+
<?php else: ?>
|
64 |
+
<meta itemprop="price"
|
65 |
+
content="<?php echo round($_product->getPriceModel()->getFinalPrice(null, $_product), 2); ?>">
|
66 |
+
<?php endif; ?>
|
67 |
+
<meta itemprop="availability"
|
68 |
+
content="<?php echo $_product->isAvailable() ? 'http://schema.org/InStock' : 'http://schema.org/OutOfStock'; ?>">
|
|
|
|
|
69 |
<?php endif; ?>
|
70 |
+
<meta itemprop="priceCurrency"
|
71 |
+
content="<?php echo Mage::app()->getStore()->getCurrentCurrencyCode(); ?>">
|
72 |
+
</div>
|
73 |
+
<div style="display: none !important" itemscope itemprop="aggregateRating" itemtype="http://schema.org/AggregateRating">
|
74 |
+
<meta itemprop="ratingValue" content="<?php echo round($this->getAverageRating() * 5 / 100, 1); ?>">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
<meta itemprop="ratingCount" content="<?php echo $this->getReviewsCount(); ?>">
|
|
|
76 |
</div>
|
77 |
+
<div style="display: none !important">
|
78 |
+
<?php foreach ($this->getReviews()->addRateVotes() as $_review): ?>
|
79 |
+
<?php if ($_rating = $this->getReviewRating($_review)): ?>
|
80 |
+
<div itemscope itemprop="review" itemtype="http://schema.org/Review">
|
81 |
+
<meta itemprop="about" content="<?php echo $this->getProduct()->getName(); ?>">
|
82 |
+
<meta itemprop="description" content="<?php echo $this->escapeHtml($_review->getTitle()) ?>">
|
83 |
+
<meta itemprop="reviewBody" content="<?php echo $this->escapeHtml($_review->getDetail()); ?>">
|
84 |
+
<meta itemprop="author" content="<?php echo $this->escapeHtml($_review->getNickname()); ?>">
|
85 |
+
<meta itemprop="datePublished" content="<?php echo date('Y-m-d', strtotime($_review->getCreatedAt())) ?>">
|
86 |
+
<div style="display: none !important" itemscope itemprop="reviewRating" itemtype="http://schema.org/Rating">
|
87 |
+
<meta itemprop="ratingValue" content="<?php echo round($_rating * 5 / 100, 1); ?>">
|
88 |
+
</div>
|
89 |
+
</div>
|
90 |
+
<?php endif; ?>
|
91 |
+
<?php endforeach ?>
|
92 |
+
</div>
|
93 |
<?php endif; ?>
|
app/etc/modules/Magpleasure_Richsnippets.xml
CHANGED
@@ -1,26 +1,26 @@
|
|
1 |
-
<?xml version="1.0"?>
|
2 |
-
<!--
|
3 |
-
/**
|
4 |
-
* Magpleasure Ltd.
|
5 |
-
*
|
6 |
-
* NOTICE OF LICENSE
|
7 |
-
*
|
8 |
-
* This source file is subject to the EULA
|
9 |
-
* that is bundled with this package in the file LICENSE.txt.
|
10 |
-
* It is also available through the world-wide-web at this URL:
|
11 |
-
* http://www.magpleasure.com/LICENSE.txt
|
12 |
-
*
|
13 |
-
* @category Magpleasure
|
14 |
-
* @package Magpleasure_Richsnippets
|
15 |
-
* @copyright Copyright (c) 2014-2015 Magpleasure Ltd. (http://www.magpleasure.com)
|
16 |
-
* @license http://www.magpleasure.com/LICENSE.txt
|
17 |
-
*/
|
18 |
-
-->
|
19 |
-
<config>
|
20 |
-
<modules>
|
21 |
-
<Magpleasure_Richsnippets>
|
22 |
-
<active>true</active>
|
23 |
-
<codePool>local</codePool>
|
24 |
-
</Magpleasure_Richsnippets>
|
25 |
-
</modules>
|
26 |
</config>
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
* Magpleasure Ltd.
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the EULA
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://www.magpleasure.com/LICENSE.txt
|
12 |
+
*
|
13 |
+
* @category Magpleasure
|
14 |
+
* @package Magpleasure_Richsnippets
|
15 |
+
* @copyright Copyright (c) 2014-2015 Magpleasure Ltd. (http://www.magpleasure.com)
|
16 |
+
* @license http://www.magpleasure.com/LICENSE.txt
|
17 |
+
*/
|
18 |
+
-->
|
19 |
+
<config>
|
20 |
+
<modules>
|
21 |
+
<Magpleasure_Richsnippets>
|
22 |
+
<active>true</active>
|
23 |
+
<codePool>local</codePool>
|
24 |
+
</Magpleasure_Richsnippets>
|
25 |
+
</modules>
|
26 |
</config>
|
app/locale/en_US/Magpleasure_Richsnippets.csv
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
"Enabled","Enabled"
|
2 |
-
"General Settings","General Settings"
|
3 |
-
"MagPleasure Extensions","MagPleasure Extensions"
|
4 |
-
"Rich Snippets","Rich Snippets"
|
1 |
+
"Enabled","Enabled"
|
2 |
+
"General Settings","General Settings"
|
3 |
+
"MagPleasure Extensions","MagPleasure Extensions"
|
4 |
+
"Rich Snippets","Rich Snippets"
|
package.xml
CHANGED
@@ -1,20 +1,20 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>rich_snippets</name>
|
4 |
-
<version>1.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/OSL-3.0">OSL-3.0</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
-
<summary>
|
10 |
-
<description>The extension is very easy-to use as there is only
|
11 |
-
|
12 |
-
|
13 |
</notes>
|
14 |
<authors><author><name>MagPleasure Ltd.</name><user>Magpleasure</user><email>support@magpleasure.com</email></author></authors>
|
15 |
-
<date>2015-
|
16 |
-
<time>
|
17 |
-
<contents><target name="magelocal"><dir name="Magpleasure"><dir name="Richsnippets"><dir><dir name="Block"><dir name="Catalog"><dir name="Product"><dir name="View"><file name="Markup.php" hash="
|
18 |
<compatible/>
|
19 |
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php><package><name></name><channel>connect.magentocommerce.com/core</channel><min></min><max></max></package></required></dependencies>
|
20 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>rich_snippets</name>
|
4 |
+
<version>1.2.0</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/OSL-3.0">OSL-3.0</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
+
<summary>Display rich snippets in Google search results to expand product description and increase conversion rate.</summary>
|
10 |
+
<description>The extension is very easy-to use as there is only two options in the backend. You don't need to create markups for Google by yourself: the extension will make them and breadcrumbs automatically.</description>
|
11 |
+
<notes> + Breadcrumbs markup
|
12 |
+
+ Markup for aggregate product rating and each product review
|
13 |
</notes>
|
14 |
<authors><author><name>MagPleasure Ltd.</name><user>Magpleasure</user><email>support@magpleasure.com</email></author></authors>
|
15 |
+
<date>2015-07-02</date>
|
16 |
+
<time>14:16:43</time>
|
17 |
+
<contents><target name="magelocal"><dir name="Magpleasure"><dir name="Richsnippets"><dir><dir name="Block"><dir name="Catalog"><dir name="Product"><dir name="View"><file name="Markup.php" hash="16e2d498ce537abd230637e24db387b0"/></dir><file name="View.php" hash="5499b89d294c9a7b9566360c6f9d4dae"/></dir></dir><dir name="Page"><dir name="Html"><file name="Breadcrumbs.php" hash="88c090195a08e64f5d2eb7bbb3684ca6"/></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="0d0393d3fda0d4454267f761cee97838"/></dir><dir name="Model"><file name="Observer.php" hash="9baaff9e362b178ae5d2d93bccc6e008"/><dir name="System"><dir name="Config"><dir name="Source"><file name="Breadcrumbs.php" hash="06b1e35032442a98ace94449c20cd52e"/></dir></dir></dir></dir><dir name="etc"><file name="config.xml" hash="456e5e4b08716472993afa9f4d5fab0b"/><file name="system.xml" hash="c6a8f67bbc7bdda3c9620128eb768865"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="richsnippets.xml" hash="ecc7cee99e160a78343234c771aa236a"/></dir><dir name="template"><dir name="richsnippets"><dir><dir name="catalog"><dir name="product"><dir name="view"><file name="markup.phtml" hash="96658813b9a66815eb6f2904e58f352a"/></dir></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Magpleasure_Richsnippets.xml" hash="78027bb5afff660ebcebe13df2391faa"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Magpleasure_Richsnippets.csv" hash="c9177f76dbd5825e4ce1f4050282cd9b"/></dir></target></contents>
|
18 |
<compatible/>
|
19 |
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php><package><name></name><channel>connect.magentocommerce.com/core</channel><min></min><max></max></package></required></dependencies>
|
20 |
</package>
|