2

製品の評価を json 形式で返す aquery を含むコードを開発しました。コードは次のとおりです。

<?php header('content-type: application/json; charset=utf-8');
require_once('/opt/phpapps/magento/app/Mage.php');
umask(0);
Mage::app();
$cid=$_GET['catid'];
$read = Mage::getSingleton('core/resource')->getConnection('core_read');
$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);
$json = json_encode($results);
print_r( $json );
?>

これを MVC パターンに変換するように指示されました。ブロック、コントローラー、モデル、SQLなど、ヘルパーフォルダーなどの個別のフォルダーを作成することでMVCを実行できることを知っていました。しかし、次のステップが何であるか、開発されたものを実行してjsonデータを取得する方法がわかりません..これで私を助けてください...

4

1 に答える 1

1

最善の方法は、カスタムの拡張機能/モデルを作成することです。これを行うためのチュートリアルがたくさんありますが、何かを使用して、開始するための例を生成できます。

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 コンテンツ タイプ ヘッダーなどを設定する必要がありますが、この特定のケースでは少し多すぎると思います。

于 2013-02-15T11:28:39.033 に答える