Bir ürünün hangi kategorilere ait olduğunu öğrenin


11

Arka uçta bir ürün açtım, ancak kategoriler sekmesine geçtiğimde kategori ağacı tamamen çöktü. Ürünün hangi kategorilerde olduğunu görmek için tüm kategorileri genişletmeliyim.

Ürünün hangi kategorilere ait olduğunu (arka uçta) nasıl hızlı bir şekilde görebilirim?


Arka uç üzerinden bunu yapmanın tek varsayılan yolu budur;) Veritabanı erişiminiz var mı?
Kenny

1
İlk fikrim tree.expandAll()bir tarayıcı konsolunda çalıştırmaktı , ancak maalesef sadece Manage Categoriessayfa için çalışacak .
user487772

Yanıtlar:


11

Bunu arka uçta arşivleyecek temel bir işlev yoktur.

Ham sorguları çalıştırmak için veritabanı okuma erişiminiz varsa, belirli bir ürüne bağlı tüm kategorilere genel bir bakış için aşağıdaki sorguları kullanabilirsiniz:

Seçenek 1 => Ürünün varlık kimliğini girerek bir ürünün tüm kategorilerini alın:

SELECT c3.sku, c2.value
FROM catalog_category_product c1
INNER JOIN catalog_category_entity_varchar c2 ON (c1.category_id = c2.entity_id)
INNER JOIN catalog_product_entity c3 ON (c1.product_id = c3.entity_id)
WHERE c2.attribute_id = (SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'name' AND entity_type_id = 3)
AND c3.entity_id = FILL_IN_PRODUCT_ID_HERE

Seçenek 2 => Ürünün SKU'sunu girerek bir ürünün tüm kategorilerini alın:

SELECT c3.sku, c2.value
FROM catalog_category_product c1
INNER JOIN catalog_category_entity_varchar c2 ON (c1.category_id = c2.entity_id)
INNER JOIN catalog_product_entity c3 ON (c1.product_id = c3.entity_id)
WHERE c2.attribute_id = (SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'name' AND entity_type_id = 3)
AND c3.sku = FILL_IN_PRODUCT_SKU_HERE

6

Ürünü kimliğine göre yükleyebilir ve kategori kimlikleri alabilirsiniz.

require('app/Mage.php');
umask(0);
Mage::app('admin');
$id = 1; //Your product ID here
$product = Mage::getModel('catalog/product')->load($id);
$categoryIds = $product->getCategoryIds();
echo '<h1>' . $product->getName() . '</h1>';
foreach ($categoryIds as $cid) {
    $category = Mage::getModel('catalog/category')->load($cid);
    echo $category->getName() . '<br />';
}

Test edilmiş ve çalışıyor.

Bunu ayrı bir dosyaya koyabilir ve sadece ürünün kategorilerini almak için bu dosyayı çalıştırabilirsiniz.

DÜZENLE

Bunu arka uçta görüntülemek için temel bir işlev yoktur. Etkin kategorilerin genişlemesinin (belki de bazı JS'lerde) hafif bir arka uç değişikliği alacağına inanıyorum


1
Daha çok bir arka uç çözümü arıyordum :-)
Alex

@Alex, sorunuzu yeniden okuduktan sonra düşündüm: PI, etkin kategorilerin genişletilmesinin (belki de bazı JS'lerde) hafif bir arka uç değişikliği gerektireceğine inanıyorum. AFAIK istediğini yapan hiçbir çekirdek işlevsellik yoktur.
Rick Kuipers

®Rick: Senin hatan değil - Sorumu bu bilgiyi içerecek şekilde düzenledim g
Alex

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.