1

たくさん調べましたが、自分に合った解決策が見つかりません。

ホームページのおすすめ商品セクションに、デフォルトの商品数 5 を超えて表示しようとしています。

現在「新規」に設定されているアイテムが 10 個ありますが、表示されるのは 5 個だけです。

コアコードを変更せずにこれを行う方法に関するヒントはありますか?

http://saks-jewelers.com

(私が取り組んでいる一番下のスライダーは無視してください)

現在それらをどのように表示しているかを説明するために編集されました

私が作成したテンプレートphtmlファイルを使用してそれらをリストし、静的ブロックを追加してこれを私のHPで呼び出しました:

<?php if (($_products = $this->getProductCollection()) && $_products->getSize()): ?>
<?php $_columnCount = $this->getColumnCount(); ?>
    <?php $i=0; foreach ($_products->getItems() as $_product): ?>
        <?php if ($i++%$_columnCount==0): ?>
        <ul class="featured-products-grid">
        <?php endif ?>
            <a href="<?php echo $_product->getProductUrl() ?>">
            <li >
            <div class="drop-shadow curved curved-hz-2">
                <img class="product-image" src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135) ?>" width="135" height="135" alt="<?php echo $this->htmlEscape($_product->getName()) ?>" />
                <h3 class="product-name"><?php echo $this->htmlEscape($_product->getName()) ?></h3>
                <?php echo $this->getPriceHtml($_product, true, '-new') ?>
        <button type="button" title="View Product" class="button" onclick="setLocation('<?php echo $_product->getProductUrl() ?>')"><span><span>View Product</span></span></button>
        </div>
            </li></a>
        <?php if ($i%$_columnCount==0 || $i==count($_products)): ?>
        </ul>
        <?php endif ?>
    <?php endforeach; ?>
<?php endif; ?>

および静的ブロック コード:

<div id="featured-products-container">
  <div class="featured-products-heading"><strong>Featured Products</strong></div>
  <div class="featured-products-heading-line"></div>
    <div id="featured-products-grid">
        {{block type="catalog/product_new" name="home.catalog.product.new" alias="product_homepage" template="catalog/featured-products.phtml"}}
    </div>
<div style="clear:both;"></div>
</div>
4

3 に答える 3

0

ブロッククラスMage_Catalog_Block_Product_Newを使用して新製品を表示しています...すべて良好です。ブロッククラスの定義を見てみましょう。

class Mage_Catalog_Block_Product_New extends Mage_Catalog_Block_Product_Abstract
{
    protected $_productsCount = null;

    const DEFAULT_PRODUCTS_COUNT = 5;

それが5つの製品のみを表示する理由であるため、そのconst定義は注目を集めるはずです。Mage_Catalog_Block_Product_New::_beforeToHtml()機能上、コレクションは特定の数に制限されています。

[...]->setPageSize($this->getProductsCount())[...]

public function getProductsCount()
{
    if (null === $this->_productsCount) {
        $this->_productsCount = self::DEFAULT_PRODUCTS_COUNT;
    }
    return $this->_productsCount;
}

「魔法の」こと(宿題:Magentoを掘り下げて理由を見つける)は_productCount、テンプレートからも渡すことができるということです。

{{block products_count="2" type="catalog/product_new" name="home.catalog.product.new" alias="product_homepage" template="catalog/featured-products.phtml"}}

2つの製品のみが表示されます。

于 2013-03-09T17:02:04.270 に答える
0

新製品用であり、注目製品用ではない場合 (注目製品には拡張機能を使用する必要があり、何も指定していないため) の行を変更する必要があります\app\code\core\Mage\Catalog\Block\Product\New.php

$products->setOrder(’news_from_date’)->setPageSize(5)->setCurPage(1);

への変更

$products->setOrder(’news_from_date’)->setPageSize(10)->setCurPage(1);

これは単なる参照コードです。コア ファイルは変更しないでください。そのため、モジュールを作成してブロック クラスをオーバーライドする必要があります。Mage_Catalog_Block_Product_New

これを .phtml でコードの最初の行として使用します

$this->setProductsCount(10);

于 2013-03-09T15:42:49.617 に答える
0

その場合、echo count($_products)おそらく常に 5 であることがわかります。これは、ブロックがどのコレクションをロードするかを決定しているためです。関数を含むブロックを開き、$this->getProductCollection()コードに従います。コレクションは、おそらく Mage::getStoreConfig を介したバックエンド設定への呼び出しによって、どこかで制限されます。これが役立つことを願っています!

于 2013-03-08T21:20:17.130 に答える