无法从Magento产品系列中获取产品名称

时间:2012-09-26 13:56:29

标签: php magento magento-1.7

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

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

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

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

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

然后我借用<ul> 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

2 个答案:

答案 0 :(得分:14)

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

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

此外,如果您已完整提供了代码,那么您尚未初始化将导致错误的$_helper变量:

$_helper = Mage::helper('catalog/output');

答案 1 :(得分:4)

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

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

foreach ($collection as $product) {


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

    }