カテゴリを視覚的に表現したページをMagentoで作成したい。例
_CATEGORY
product 1
product 2
ANOTHER CATEGORY
product 3
_
私の問題は、彼らのデータベースが私が過去に見たものとは非常に異なって編成されていることです。それらには、varchar、intなどのデータ型専用のテーブルがあります。これはパフォーマンスなどのためだと思います。
MySQLを使用してデータベースにクエリを実行し、カテゴリのリストを取得する方法が見つかりませんでした。次に、これらのカテゴリを製品と照合して、各カテゴリの製品のリストを取得したいと思います。残念ながら、Magentoはこれを非常に難しくしているようです。
また、ページブロック内から機能するメソッドが見つかりませんでした。showcase.phtmlを作成してXMLレイアウトに配置すると、そのPHPコードが表示および実行されます。 $this->getAllCategories()
をループしてから、$category->getChildProducts()
のような内部にネストされたループを作成するような簡単なものを期待しています。
誰か助けてもらえますか?
SEO関連のクラス(Mage_Catalog_Block_Seo_Sitemap_Category)で見つかったコードから
$helper = Mage::helper('catalog/category');
$collection = $helper->getStoreCategories('name', true, false);
$array = $helper->getStoreCategories('name', false, false);
それがあなたの店を動かしているデータベースであることを忘れて、代わりにMagentoシステムが提供するオブジェクトの使用に集中するようにしてください。
たとえば、カテゴリのリストを取得する方法がわかりませんでした。しかし、私はMageコードベースを
grep -i -r -E 'class.+?category'
これは約30のクラスのリストを返しました。それらをスクロールすると、どのオブジェクトにメソッドがあるか、またはカテゴリを取得するメソッド呼び出しを行う必要があるかを比較的簡単に推測できました。
ねえ このようなもの あなたを助けるかもしれません、私はあなたの質問にもっと具体的に答えるためにそれを少し適応させました。
$h3h3=Mage::getModel('catalog/category')->load(5); // YOU NEED TO CHANGE 5 TO THE ID OF YOUR CATEGORY
$h3h3=$h3h3->getProductCollection();
foreach($h3h3->getAllIds() as $lol)
{
$_product=Mage::getModel('catalog/product')->load($lol);
print $_product->getName()."<br/>";
}
私はこれを Paul Whippのウェブサイト から適応させました:
SELECT e.entity_id AS 'entity_id', vn.value AS 'name'
FROM catalog_category_entity e
LEFT JOIN catalog_category_entity_varchar vn
ON e.entity_id = vn.entity_id AND vn.attribute_id = 33
ORDER BY entity_id;
これにより、カタログカテゴリIDが提供されます。
これが簡単な例です
$categories = Mage::getModel('catalog/category')->getCollection()
->addAttributeToSelect('name')
->addAttributeToSelect('url_key')
->addAttributeToSelect('my_attribute')
->setLoadProductCount(true)
->addAttributeToFilter('is_active',array('eq'=>true))
->load();
Magentoでカスタムカテゴリリストブロックを作成する方法について、この小さなビデオを作成しました。これを達成するためのより良い方法があると確信していますが、それは私の方法にすぎません。私はこれを、そこにいる何人かの人々に何かを説明するのに役立つことを願って作成しただけです。
どうもありがとう。本当に役立ちます。ゲームを取得するには、ループを作成してからgetName()
foreach ($collection as $cat):
echo $cat->getName();
endforeach;
これを/app/design/frontend/default/default/template/catalog/product/feature.xmlで使用しました
<?php
/**
* Home page Featured Product list template
*
* @see Mage_Catalog_Block_Product_List
*/
?>
<?php
if (!is_null($this->_productCollection)) {
$_origCollection = $this->_productCollection;
$this->setCollection(null);
}
$this->setCategoryId(16);
$_productCollection=$this->getLoadedProductCollection() ?>
<?php if($_productCollection->count()): ?>
<div class="featured-products">
<h2><?php echo $this->__('Featured Products') ?></h2>
<?php foreach ($_productCollection as $_product): ?>
<div>
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>">
<img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(150, 50); ?>" alt="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" />
<h3 class="product-name"><?php echo $this->htmlEscape($_product->getName())?></h3>
<?php echo nl2br($this->htmlEscape($_product->getShortDescription())) ?>
</a>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
カテゴリリストブロック:
<?php
$categories = Mage::getModel('catalog/category')->load(2)->getChildren();
$catIds = explode(',',$cats);
?>
<ul>
<?php foreach($catIds as $catId): ?>
<li>
<?php
$category = Mage::getModel('catalog/category')->load($catId);
echo $category->getName();
$subCats = Mage::getModel('catalog/category')->load($category->getId())->getChildren();
$subCatIds = explode(',',$subCats);
?>
<?php if(count($subCatIds) > 1):?>
<ul>
<?php foreach($subCatIds as $subCat) :?>
<li>
<?php
$subCategory = Mage::getModel('catalog/category')->load($subCat);
echo $subCategory->getName();
?>
</li>
<?php endforeach;?>
</ul>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>