0

product collection我只是想从in 中检索产品名称以及其他基本信息,Magento但只是得到错误或返回 null。这是为了创建我自己的特色产品块。

我正在尝试从主页中执行此操作(专门创建,而不是使用预先构建的 1-column/2-column 等):

app\design\frontend\default\eyt2012\template\page\homepage.phtml

在我的主页中,我正在像这样加载集合

$category = new Mage_Catalog_Model_Category();
$category->load(236);
$_productCollection = $category->getProductCollection();

然后我借用<ul>from中的代码list.phtml,我知道它是有效的:

app\design\frontend\default\eyt2012\template\catalog\product\list.phtml

以带有图像、标题和价格的漂亮网格格式输出集合中的所有产品。

到目前为止,我总共有:

<div class="featured-products">
    Products of the week    

    <?php    
        $category = new Mage_Catalog_Model_Category();
        $category->load(236);
        $_productCollection = $category->getProductCollection();    
    ?>   

        <ul class="products-grid">    

            <?php $_collectionSize = $_productCollection->count() ?>
            <?php $_columnCount = 5 ?>
            <?php 
                $i=0; foreach ($_productCollection as $_product): 
                $i++;
            ?>

                    <li class="item<?php if(($i-1)%$_columnCount==0): ?> first<?php elseif($i%$_columnCount==0): ?> last<?php endif; ?>">

                        1

                        <a 
                        href="<?php echo $_product->getProductUrl() ?>" 
                        title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" 
                        class="product-image">
                            <span class="placeholder"></span>
                            <img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(155); ?>" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" />
                        </a>

                        2

                        <?php if ($_product->getbrands()):?>
                            <span class="brandname"><?php echo $_product->getAttributeText('brands') ?></span>
                        <?php endif;?>

                        3  ! Code currently gets to here before error occurs


                        <h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($_product->getName(), null, true) ?>"><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></a></h2>

                        4
                        <?php echo $this->getPriceHtml($_product, true) ?>

                        5

                        <div class="actions">

                            <?php if($_product->isSaleable()): ?>

                                <button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>

                            <?php else: ?>

                                <p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>

                            <?php endif; ?>

                        </div>




                    </li>

                <?php endforeach ?>

            </ul>




</div>

这基本上只是 list.phtml 中的代码,除了使用我自己的产品集合。

我在上面代码中的每个功能块之后都放了数字,以测试导致错误的原因。目前它达到 3 然后停止。

谁能告诉我为什么$_product->getName()无法与该街区的其他人一起工作?

任何帮助,将不胜感激。谢谢。

编辑:

$_productCollection 的 var_dump

object(Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection)[337]
  protected '_flatEnabled' => 
    array (size=1)
      1 => boolean false
  protected '_productWebsiteTable' => string 'catalog_product_website' (length=23)
  protected '_productCategoryTable' => string 'catalog_category_product' (length=24)
  protected '_addUrlRewrite' => boolean false
  protected '_urlRewriteCategory' => string '' (length=0)
  protected '_addMinimalPrice' => boolean false
  protected '_addFinalPrice' => boolean false
  protected '_allIdsCache' => null
  protected '_addTaxPercents' => boolean false
  protected '_productLimitationFilters' => 
    array (size=3)
      'category_id' => string '236' (length=3)
      'category_is_anchor' => int 1
      'store_id' => string '1' (length=1)
  protected '_productCountSelect' => null
  protected '_isWebsiteFilter' => boolean false
  protected '_priceDataFieldFilters' => 
    array (size=0)
      empty
  protected '_map' => 
    array (size=1)
      'fields' => 
        array (size=6)
          'price' => string 'price_index.price' (length=17)
          'final_price' => string 'price_index.final_price' (length=23)
          'min_price' => string 'price_index.min_price' (length=21)
          'max_price' => string 'price_index.max_price' (length=21)
          'tier_price' => string 'price_index.tier_price' (length=22)
          'special_price' => string 'price_index.special_price' (length=25)
  protected '_storeId' => string '1' (length=1)
  protected '_itemsById' => 
    array (size=0)
      empty
  protected '_staticFields' => 
    array (size=6)
      'entity_id' => string 'entity_id' (length=9)
      'entity_type_id' => string 'entity_type_id' (length=14)
      'attribute_set_id' => string 'attribute_set_id' (length=16)
      'type_id' => string 'type_id' (length=7)
      'created_at' => string 'created_at' (length=10)
      'updated_at' => string 'updated_at' (length=10)
  protected '_entity' => 
    object(Mage_Catalog_Model_Resource_Eav_Mysql4_Product)[165]
      protected '_productWebsiteTable' => string 'catalog_product_website' (length=23)
      protected '_productCategoryTable' => string 'catalog_category_product' (length=24)
      protected '_attributes' => 
        array (size=0)
          empty
      protected '_read' => 
        object(Varien_Db_Adapter_Pdo_Mysql)[90]
          protected '_transactionLevel' => int 0
          protected '_connectionFlagsSet' => boolean true
          protected '_ddlCache' => 
            array (size=1)
              ...
          protected '_bindParams' => 
            array (size=2)
              ...
          protected '_bindIncrement' => int 2
          protected '_debug' => boolean false
          protected '_logQueryTime' => float 0.05
          protected '_logAllQueries' => boolean false
          protected '_logCallStack' => boolean false
          protected '_debugFile' => string 'var/debug/sql.txt' (length=17)
          protected '_debugIoAdapter' => null
          protected '_debugTimer' => int 0
          protected '_cacheAdapter' => 
            object(Varien_Cache_Core)[13]
              ...
          protected '_isDdlCacheAllowed' => boolean true
          protected '_pdoType' => string 'mysql' (length=5)
          protected '_numericDataTypes' => 
            array (size=16)
              ...
          protected '_defaultStmtClass' => string 'Zend_Db_Statement_Pdo' (length=21)
          protected '_config' => 
            array (size=12)
              ...
          protected '_fetchMode' => int 2
          protected '_profiler' => 
            object(Zend_Db_Profiler)[20]
              ...
          protected '_defaultProfilerClass' => string 'Zend_Db_Profiler' (length=16)
          protected '_connection' => 
            object(PDO)[17]
              ...
          protected '_caseFolding' => int 0
          protected '_autoQuoteIdentifiers' => boolean true
          protected '_allowSerialization' => boolean true
          protected '_autoReconnectOnUnserialize' => boolean false
      protected '_write' => string 'catalog_write' (length=13)
      protected '_type' => 
        object(Mage_Eav_Model_Entity_Type)[123]
          protected '_attributes' => null
          protected '_attributesBySet' => 
            array (size=0)
              ...
          protected '_sets' => null
          protected '_eventPrefix' => string 'core_abstract' (length=13)
          protected '_eventObject' => string 'object' (length=6)
          protected '_resourceName' => string 'eav/entity_type' (length=15)
          protected '_resource' => null
          protected '_resourceCollectionName' => string 'eav/entity_type_collection' (length=26)
          protected '_cacheTag' => boolean false
          protected '_dataSaveAllowed' => boolean true
          protected '_isObjectNew' => null
          protected '_data' => 
            array (size=16)
              ...
          protected '_hasDataChanges' => boolean true
          protected '_origData' => null
          protected '_idFieldName' => string 'entity_type_id' (length=14)
          protected '_isDeleted' => boolean false
      protected '_attributesById' => 
        array (size=0)
          empty
      protected '_attributesByCode' => 
        array (size=0)
          empty
      protected '_attributesByTable' => 
        array (size=0)
          empty
      protected '_staticAttributes' => 
        array (size=0)
          empty
      protected '_entityTable' => string 'catalog_product_entity' (length=22)
      protected '_describeTable' => 
        array (size=0)
          empty
      protected '_entityIdField' => string 'entity_id' (length=9)
      protected '_valueEntityIdField' => null
      protected '_valueTablePrefix' => null
      protected '_isPartialLoad' => boolean false
      protected '_isPartialSave' => boolean false
      protected '_sortingSetId' => null
      protected '_attributeValuesToDelete' => 
        array (size=0)
          empty
      protected '_attributeValuesToSave' => 
        array (size=0)
          empty
  protected '_selectEntityTypes' => 
    array (size=0)
      empty
  protected '_selectAttributes' => 
    array (size=0)
      empty
  protected '_filterAttributes' => 
    array (size=0)
      empty
  protected '_joinEntities' => 
    array (size=0)
      empty
  protected '_joinAttributes' => 
    array (size=0)
      empty
  protected '_joinFields' => 
    array (size=0)
      empty
  protected '_conn' => 
    object(Varien_Db_Adapter_Pdo_Mysql)[90]
      protected '_transactionLevel' => int 0
      protected '_connectionFlagsSet' => boolean true
      protected '_ddlCache' => 
        array (size=1)
          1 => 
            array (size=1)
              ...
      protected '_bindParams' => 
        array (size=2)
          ':_mage_bind_var_1' => string '2012-09-26 14:11:06' (length=19)
          ':_mage_bind_var_2' => string '2012-09-26 14:11:06' (length=19)
      protected '_bindIncrement' => int 2
      protected '_debug' => boolean false
      protected '_logQueryTime' => float 0.05
      protected '_logAllQueries' => boolean false
      protected '_logCallStack' => boolean false
      protected '_debugFile' => string 'var/debug/sql.txt' (length=17)
      protected '_debugIoAdapter' => null
      protected '_debugTimer' => int 0
      protected '_cacheAdapter' => 
        object(Varien_Cache_Core)[13]
          protected '_backend' => 
            object(Zend_Cache_Backend_File)[10]
              ...
          protected '_options' => 
            array (size=9)
              ...
          protected '_specificOptions' => 
            array (size=0)
              ...
          private '_lastId' (Zend_Cache_Core) => string 'd11_DB_PDO_MYSQL_DDL_googleoptimizer_code_1' (length=43)
          protected '_extendedBackend' => boolean true
          protected '_backendCapabilities' => 
            array (size=6)
              ...
      protected '_isDdlCacheAllowed' => boolean true
      protected '_pdoType' => string 'mysql' (length=5)
      protected '_numericDataTypes' => 
        array (size=16)
          0 => int 0
          1 => int 1
          2 => int 2
          'INT' => int 0
          'INTEGER' => int 0
          'MEDIUMINT' => int 0
          'SMALLINT' => int 0
          'TINYINT' => int 0
          'BIGINT' => int 1
          'SERIAL' => int 1
          'DEC' => int 2
          'DECIMAL' => int 2
          'DOUBLE' => int 2
          'DOUBLE PRECISION' => int 2
          'FIXED' => int 2
          'FLOAT' => int 2
      protected '_defaultStmtClass' => string 'Zend_Db_Statement_Pdo' (length=21)
      protected '_config' => 
        array (size=12)
          'model' => string 'mysql4' (length=6)
          'initStatements' => string 'SET NAMES utf8' (length=14)
          'type' => string 'pdo_mysql' (length=9)
          'host' => string 'localhost' (length=9)
          'username' => string 'root' (length=4)
          'password' => 
            object(Mage_Core_Model_Config_Element)[34]
              ...
          'dbname' => string 'eyt' (length=3)
          'active' => string '1' (length=1)
          'charset' => null
          'persistent' => boolean false
          'options' => 
            array (size=3)
              ...
          'driver_options' => 
            array (size=0)
              ...
      protected '_fetchMode' => int 2
      protected '_profiler' => 
        object(Zend_Db_Profiler)[20]
          protected '_queryProfiles' => 
            array (size=0)
              ...
          protected '_enabled' => boolean false
          protected '_filterElapsedSecs' => null
          protected '_filterTypes' => null
      protected '_defaultProfilerClass' => string 'Zend_Db_Profiler' (length=16)
      protected '_connection' => 
        object(PDO)[17]
      protected '_caseFolding' => int 0
      protected '_autoQuoteIdentifiers' => boolean true
      protected '_allowSerialization' => boolean true
      protected '_autoReconnectOnUnserialize' => boolean false
  protected '_select' => 
    object(Varien_Db_Select)[324]
      protected '_bind' => 
        array (size=0)
          empty
      protected '_adapter' => 
        object(Varien_Db_Adapter_Pdo_Mysql)[90]
          protected '_transactionLevel' => int 0
          protected '_connectionFlagsSet' => boolean true
          protected '_ddlCache' => 
            array (size=1)
              ...
          protected '_bindParams' => 
            array (size=2)
              ...
          protected '_bindIncrement' => int 2
          protected '_debug' => boolean false
          protected '_logQueryTime' => float 0.05
          protected '_logAllQueries' => boolean false
          protected '_logCallStack' => boolean false
          protected '_debugFile' => string 'var/debug/sql.txt' (length=17)
          protected '_debugIoAdapter' => null
          protected '_debugTimer' => int 0
          protected '_cacheAdapter' => 
            object(Varien_Cache_Core)[13]
              ...
          protected '_isDdlCacheAllowed' => boolean true
          protected '_pdoType' => string 'mysql' (length=5)
          protected '_numericDataTypes' => 
            array (size=16)
              ...
          protected '_defaultStmtClass' => string 'Zend_Db_Statement_Pdo' (length=21)
          protected '_config' => 
            array (size=12)
              ...
          protected '_fetchMode' => int 2
          protected '_profiler' => 
            object(Zend_Db_Profiler)[20]
              ...
          protected '_defaultProfilerClass' => string 'Zend_Db_Profiler' (length=16)
          protected '_connection' => 
            object(PDO)[17]
              ...
          protected '_caseFolding' => int 0
          protected '_autoQuoteIdentifiers' => boolean true
          protected '_allowSerialization' => boolean true
          protected '_autoReconnectOnUnserialize' => boolean false
      protected '_parts' => 
        array (size=12)
          'straightjoin' => boolean false
          'distinct' => boolean false
          'columns' => 
            array (size=2)
              ...
          'union' => 
            array (size=0)
              ...
          'from' => 
            array (size=2)
              ...
          'where' => 
            array (size=0)
              ...
          'group' => 
            array (size=0)
              ...
          'having' => 
            array (size=0)
              ...
          'order' => 
            array (size=0)
              ...
          'limitcount' => null
          'limitoffset' => null
          'forupdate' => boolean false
      protected '_tableCols' => 
        array (size=0)
          empty
  protected '_cacheConf' => null
  protected '_idFieldName' => null
  protected '_bindParams' => 
    array (size=0)
      empty
  protected '_data' => null
  protected '_fetchStmt' => null
  protected '_items' => 
    array (size=0)
      empty
  protected '_itemObjectClass' => string 'Mage_Catalog_Model_Product' (length=26)
  protected '_orders' => 
    array (size=0)
      empty
  protected '_filters' => 
    array (size=0)
      empty
  protected '_isFiltersRendered' => boolean false
  protected '_curPage' => int 1
  protected '_pageSize' => boolean false
  protected '_totalRecords' => null
  protected '_isCollectionLoaded' => null
  protected '_cacheKey' => null
  protected '_cacheTags' => 
    array (size=0)
      empty
  protected '_cacheLifetime' => int 86400
  protected '_flags' => 
    array (size=0)
      empty
4

2 回答 2

14

要获取产品名称,您需要将其添加到选择中:

$_productCollection = $category->getProductCollection()
    ->addAttributeToSelect('name');

此外,如果您提供了完整的代码,那么您还没有初始化$_helper将引发错误的变量:

$_helper = Mage::helper('catalog/output');
于 2012-09-26T14:10:28.147 回答
4

试试下面的代码它必须工作:

$collection = Mage::getModel('catalog/product')
                        ->getCollection()
                        ->addAttributeToSelect('*');

foreach ($collection as $product) {


    echo $product->getName() . "<br />";

    }
于 2013-05-08T13:03:53.070 回答