0

申し訳ありませんが、私はMagentoの初心者です。現在、同じカテゴリのrand製品を取得できる次のコード。コードをview.phtmlに配置するとき。

<!--for show other product-->
<?php $categories = $_product->getCategoryIds(); ?>
    <?php
        $result = array();
        foreach($categories as $cat_id) {
            $category = Mage::getModel('catalog/category');
            $category->load($cat_id);
            $collection = $category->getProductCollection();
            foreach ($collection as $product) {
                $result[] = $product->getId();
            }
 
        }
    ?>
    <div class="box-others-also-like">
        <ul>
        <?php
        if(sizeof($result) >= 5)
        {
           $ourneed = array_rand($result,5);
           foreach($ourneed as $cc)
            {
             $thisproduct= Mage::getModel('catalog/product')->load($result[$cc]);
             ?>
             <li>
            <a href="<?php echo $thisproduct->getProductUrl(); ?>" title="<?php echo $thisproduct->getName(); ?>" ><img src="<?php echo $this->helper('catalog/image')->init($thisproduct, 'small_image')->resize(200) ?>" width="200" height="200" alt="<?php echo $thisproduct->getName(); ?>" /></a>
            </li>
            <?php } ?>
        <?php
        }else
        {
           foreach($result as $cc)
            {
             $thisproduct= Mage::getModel('catalog/product')->load($cc);
             ?>
 
                <li>
                <a href="<?php echo $thisproduct->getProductUrl(); ?>" title="<?php echo $thisproduct->getName(); ?>" ><img src="<?php echo $this->helper('catalog/image')->init($thisproduct, 'small_image')->resize(200) ?>" width="200" height="200" alt="<?php echo $thisproduct->getName(); ?>" /></a>
                </li>
            <?php
            }
            }
            ?>
        </ul>
    </div>
    <!--for show other product-->

今、私は関数をモジュールに入れたいのですが、どうすればよいですか?モジュールのスケルトンを作成したと仮定します。モジュール名はRandです。パッケージ名はWebです。

上記のコードをどのファイルに書き込む必要がありますか?BlockまたはModelまたはHelperまたはcontrollers

どうもありがとう。

4

1 に答える 1

0

Magento で関数を呼び出すには、Block でその関数を定義する必要があります。それはより良い方法です。$this を使用してその関数を呼び出すことができます。

$this->functionName()

ただし、ヘルパーでもその関数を定義できます。そのためには、以下のようにその関数を呼び出す必要があります。

Mage::helper('yourmodule/yourclassfile')->prtHelloWorld();

モデル関数を呼び出すと、MVC パターンに影響します。だから、これを試さないでください。

于 2012-08-27T08:38:48.767 に答える