Magento: Bir ürünün açılan öznitelik değerlerini önceden doldurmak için nasıl

3 Cevap php

Ben bir müşteri için bir Magento dükkan inşa ediyorum ve bir açılan liste olarak işlev tüm ürünler için bir öznitelik eklemek istiyorum. 'Üretici' niteliği gibi.

Ancak, bunun yerine elle öznitelik değerlerinin listesini girerken ben değerleri harici bir siteden doldurulması istiyorum. Yani, yeni bir ürün oluşturmak veya varolan bir düzenleme, her zaman, açılan bir uzak siteden alındıktan değerlerin up-to-date listesi ile doldurulur. Liste niteliğin oluşturulması sırasında sadece bir kez getirilecek olmamalı, ama her zaman bir ürün yaratılmış veya düzenlenmiş.

Örneğin, uzak bir siteden kıvrılma ile tüm Üreticileri bir listesini alabilirsiniz varsayalım. Bu listedeki isimler zaman zaman değiştirilmiş veya eklenmiş, ancak id adlı aynı kalmak böylece perde arkasında kullanılmalıdır edilir. Nasıl üreticinin açılan değerlerini önceden doldurmak istiyorsunuz?

Ben temel bir özel uzantısı oluşturmak için biliyorum, ama adminhtml backend uzanan benim için yeni şeyler.

Herhangi bir yardım takdir edilmektedir.

3 Cevap

Magento ürün özellikleri bu yüzden bu nitelik değerleri mağazada ürünleri arasında ortak bazı şeyleri paylaşmak olduğunu varsayıyorum son derece esnektir, ancak ürün başına dinamik değerlere sahip size çok mantıklı değil ürün başına bir nitelik gerekir anlamına gelirdi olacak yani sınırlı niteliklerin sayıda (ya da bir?). Bu tür her öznitelik için önceden bunun için niteliğini ve arka uç modeli oluşturmak ve sonra API öznitelik değeri seçeneklerini güncelleyin ve veritabanı veya başka bir yöntemle yerel bunları önbelleğe bir cron işi veya olayı kullanmak gerekir. Bu gibi modül yükleyici bir nitelik ekleyebilirsiniz:

$installer->addAttribute('catalog_product', 'my_attr_code', array(
    'label' => 'Attribute Name',
    'required' => false,
    'input' => 'select',
    'source' => 'namespace/source',
    'default' => 'none',
    'position' => 1,
    'sort_order' => 3,
));

Ya eav_attribute tablo için kendi SQL insert deyimi rulo. Bu ürün ile kullanılabilir böylece backend ayarlanmış bir öznitelik için yeni bir özellik atamak için emin olun. Sonra Mage_Eav_Model_Entity_Attribute_Source_Table (Eğer nitelik değerleri için bir seçme girişi istiyorum varsayarak) ve en az aşağıdaki yöntemleri uygular My_Namespace_Model_Source uzanan bir model oluşturmak:

getAllOptions()
getOptionText($value)

Yani bu yerel olarak önbelleğe alınır ve çoğunlukla yeni nitelik Magento gibi herhangi bir diğer davranır dinamik seçeneklerden çeker. Bu yöntemler potansiyel bir sayfa yük birçok kez vurmak olsun çünkü akıllı önbelleğe kullandığınızdan emin olun. Eğer aksi takdirde sadece bir sınıf ya da denetleyicisi veya geçersiz bir Magento cron görevi kullanın, doğru bir ürün oluşturmak veya düzenlemek sayfa görüntülenmeden önce olduğu denir gözlemlemek olabilir bir olay olabilir.

Edit: Ayrıca mevcut Magento nitelik modelleri kullanmak ve mevcut API aracılığıyla seçenek değerlerini oluşturmak ama senkronizasyon yapmak veya başka bir nedenden dolayı özel bir arka uç modeli istediğiniz hangi durumda bazı ek meta gerekebilir varsayabiliriz .

Ben burada sanırım ama iyi cevabı ben ilk bir öznitelik eklemek ve sonra doldurulur nasıl görmek için ters mühendislik olur, gider.

Sonra Admin üzerinde ürün gösterim sayfasında, ben (eav_attribute tablodaki öznitelik kimliği arama yapabilirsiniz) bu özellik için bükülmeyi kullanarak değerleri yüklemek için, ProductController en düzenleyebilir ve yeni eylemleri geçersiz olur

Daha sonra özel bir uzantısı olarak bu paket olabilir, böylece doğrudan düzenlemek çekirdek kodu yok. İyi şanslar!

Sen Magento Olay memurları bakmak gerekir.

Temelde, bir olay meydana, her zaman - bir ürün güncellenmesi bir emir göndererek, vb bir şey silme - bir mesaj sistemi yoluyla gönderilir. Bu mesajlar yakalanmış olabilir ve daha sonra oluşturduğunuz yöntemleri tetikleyebilir. İstediğinizi elde etmek için, bir ürün oluşturulduğunda tetiklenir ve güncellenir olay yakalamak ve bu özel modüller birinden bir yöntemini çalıştırmak için almak gerekir. Bu yöntem daha sonra uzak siteden değeri kapmak ve onunla ürünü güncelleştirmek.

Hızlı bir Google Arama sonra, ben şu yazı bulundu:

http://blog.baobaz.com/en/tag/magento-events

Sen Magento olayları uygun modül kodu bakarak tetiklenir ne bulabilirsiniz.