2009-03-03 8 views
10

私はカテゴリの視覚的な表現を示しMagentoの中にページを作成したい。..例Magentoからカテゴリリストを取得するには?

CATEGORY 
product 1 
product 2 

ANOTHER CATEGORY 
product 3 

私の問題は、そのデータベースは、私が過去に見てきたものに非常に異なって編成されています。彼らは、varchar、intなどのデータ型に特化したテーブルを持っています。

MySQLを使用してデータベースを照会し、カテゴリのリストを取得する方法が見つかりませんでした。私はこれらのカテゴリを製品に合わせて、各カテゴリの製品のリストを取得したいと考えています。残念ながらMagentoはこれを非常に難しくしているようです。

また、ページブロック内で動作するメソッドが見つかりませんでした。私はshowcase.phtmlを作成してXMLレイアウトに配置し、PHPコードを表示して実行します。私は、$this->getAllCategories()をループしてから、$category->getChildProducts()のようなものを入れ子にしたループのようなものを望んでいました。

誰でも手伝ってもらえますか?

答えて

5

ちょっとsomething like thisあなたを助けてくれるかもしれませんが、質問に具体的に答えるために少し修正しました。

SEO関連するクラスで見つかったコードから
$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/>"; 

} 
16

(Mage_Catalog_Block_Seo_Sitemap_Category)

$helper  = Mage::helper('catalog/category'); 
$collection = $helper->getStoreCategories('name', true, false); 
$array  = $helper->getStoreCategories('name', false, false); 

それはお店に電力を供給していますデータベースだということを忘れて、代わりにMagentoのシステムが提供するオブジェクトを使用してに集中するようにしてください。

たとえば、カテゴリのリストを取得する方法はわかりませんでした。しかし、私は魔法のコードベースを使って、

grep -i -r -E 'class.+?category' 

と約30のクラスのリストを返しました。これらをスクロールすることで、どのオブジェクトにメソッドがあるか、メソッドを呼び出してそのカテゴリを取得する必要があるかを推測するのは比較的簡単でした。

+0

ですカテゴリのURL。私が必要とするデータは、結果の "_data:protected"キーに格納されます。あなたは詳しく説明できますか? –

+0

@Martijn http://stackoverflow.com/questions/1005394/magento-show-custom-attributes-in-grouped-product-table/1005474#1005474 –

+0

私の質問は、これが管理モジュールファイルに役立つ場合、読み込むことですカテゴリリスト? – Mufaddal

0

ありがとうございました。本当に助けます。このカタログはカテゴリIDを提供します

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; 

:ゲームを取得するには、その後、ループとのgetName()

foreach ($collection as $cat): 

    echo $cat->getName(); 

endforeach; 
0

私は、私はMagentoのでブロックをリストするカスタムカテゴリを作成方法については、この小さなビデオを作った/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; ?> 
0

でこれを使用。 私はこれを達成するためのよりよい方法があると確信しています。私は、それをいくつかの人々に何かを説明するのに役立つことを望んでこれを作成しました。ブロックリスト

Magento Custom Category Listing Tutorial

0

カテゴリ:

<?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> 
2

は、ここで私はあなたが実際の名前を取得するには結果のコレクションまたは配列を使用することができるかどうかはわかりませんか、簡単な例

$categories = Mage::getModel('catalog/category')->getCollection() 
    ->addAttributeToSelect('name') 
    ->addAttributeToSelect('url_key') 
    ->addAttributeToSelect('my_attribute') 
    ->setLoadProductCount(true) 
    ->addAttributeToFilter('is_active',array('eq'=>true)) 
    ->load(); 
関連する問題