我只是尝试从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
答案 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 />";
}