最善の方法は、カスタムの拡張機能/モデルを作成することです。これを行うためのチュートリアルがたくさんありますが、何かを使用して、開始するための例を生成できます。
http://www.silksoftware.com/magento-module-creator/
ただし、この単純なものについては、ローカル名前空間にカスタム ブロックを作成するだけで済みます。次に例を示します。
アプリ/コード/ローカル/メイジ/カタログ/ブロック/製品/Ratingsjson.php
<?php
/**
* Ratingsjson.php
*/
class Mage_Catalog_Block_Product_Ratingsjson extends Mage_Catalog_Block_Product_Abstract
{
/**
* Get products with special offer attribute set
*
* @return type
*/
public function getRatings()
{
/**
* This will be injected from the tag / XML below
* you can pass what ever variables you want this way.
* getSomeAttribute() will get the value 'some_attribute' from the
* CMS tag or XML config.
*/
$categoryId = $this->getCategoryId();
if($categoryId == NULL) {
$categoryId = 1; // or some default;
}
$resource = Mage::getSingleton('core/resource');
$read = $resource->getConnection('catalog_read');
// Do your stuff here...
$query = "SELECT round(t1.rating_summary / 20) AS rating, t2.product_id FROM review_entity_summary AS t1 INNER JOIN catalog_category_product AS t2 ON t1.entity_pk_value = t2.product_id WHERE category_id =" . $cid . " AND store_id = '1'";
$results = $read->fetchAll($query);
return json_encode($results);
}
}
必要なことを行うためのテンプレートを作成します。
テンプレート/mymodel/mytemplate.phtml
<?php
echo $this->getRatings();
その後、CMS ページ内で新しいブロックを使用できます。
{{block type="catalog/ratignsjson" category_id="3" temaplte="mymodeule/mytemplate.phtml"}}
または、XML 構成を介してロードする場合:
<block type="catalog/ratignsjson" category_id="3" name="ratignsjson" template="mymodeule/mytemplate.phtml"/>
これを適切に実行して厳密な Json データを出力するには、json コンテンツ タイプ ヘッダーなどを設定する必要がありますが、この特定のケースでは少し多すぎると思います。