it-swarm.com.de

Wie bekomme ich einen Kategorieneintrag von Magento?

Ich möchte eine Seite in Magento erstellen, die eine visuelle Darstellung der Kategorien zeigt. Beispiel

CATEGORY
 product 1
 product 2

ANOTHER CATEGORY
 product 3

Mein Problem ist, dass ihre Datenbank ganz anders organisiert ist als in der Vergangenheit. Sie haben Tabellen, die Datentypen wie varchar, int usw. gewidmet sind. Ich nehme an, dies dient der Leistung oder Ähnlichem.

Ich habe keine Möglichkeit gefunden, mit MySQL die Datenbank abzufragen und eine Liste der Kategorien abzurufen. Ich möchte dann diese Kategorien mit Produkten abgleichen, um eine Auflistung der Produkte für jede Kategorie zu erhalten. Leider scheint Magento dies sehr schwierig zu machen.

Außerdem habe ich keine Methode gefunden, die innerhalb eines Seitenblocks funktioniert. Ich habe showcase.phtml erstellt und in das XML-Layout eingefügt. Es zeigt den PHP-Code an und führt ihn aus. Ich hoffte auf etwas Einfaches wie das Durchschleifen von $this->getAllCategories() und dann eine verschachtelte Schleife mit etwas wie $category->getChildProducts().

Kann mir jemand helfen?

10
alex

Aus Code, der in einer SEO-bezogenen Klasse gefunden wurde (Mage_Catalog_Block_Seo_Sitemap_Category)

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

Versuchen Sie zu vergessen, dass es sich um eine Datenbank handelt, die Ihr Geschäft antreibt, und konzentrieren Sie sich stattdessen auf die Objekte, die das Magento-System bereitstellt.

Zum Beispiel hatte ich keine Ahnung, wie man eine Liste von Kategorien bekommt. Allerdings habe ich die Mage-Codebasis mit durchgegriffen

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

Welches eine Liste von ungefähr 30 Klassen zurückbrachte. Beim Durchblättern dieser Objekte war es relativ einfach zu erraten, welche Objekte Methoden haben oder Methodenaufrufe ausführen müssen, um die Kategorien zu erfassen.

16
Alan Storm

Hey so etwas könnte dir helfen, ich habe es leicht angepasst, um deine Frage genauer zu beantworten.

 $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/>";

}
5
Robin

Ich habe das von Paul Whipps Website angepasst:

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;

Dadurch erhalten Sie die Katalogkategorie-IDs.

3
sws

Hier ist ein kurzes Beispiel

$categories = Mage::getModel('catalog/category')->getCollection()  
    ->addAttributeToSelect('name')
    ->addAttributeToSelect('url_key')
    ->addAttributeToSelect('my_attribute')
    ->setLoadProductCount(true)
    ->addAttributeToFilter('is_active',array('eq'=>true))
    ->load();
2
bluescrubbie

Ich habe dieses kleine Video darüber gemacht, wie ich mit Magento benutzerdefinierte Kategorieauflistungsblöcke erstelle. Ich bin mir sicher, dass es bessere Wege gibt, dies zu erreichen, oder sogar etwas, was ich hätte besser machen können, aber es ist nur meine Methode. Ich habe es nur in der Hoffnung erschaffen, dass es einigen Leuten da draußen hilft, etwas zu erklären.

Magento Benutzerdefinierte Kategorieauflistung Tutorial

0
Devin R. Olsen

Danke vielmals. Hilft wirklich. Um das Spiel zu bekommen, mache eine Schleife und dann getName ()

foreach ($collection as $cat):

    echo $cat->getName();

endforeach;
0
bhoot

Ich habe dies in /app/design/frontend/default/default/template/catalog/product/feature.xml verwendet

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

kategorie Listing Block:

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