Ja es ist möglich.
Sie müssen ein Attribut für Ihre Hauptentität hinzufügen, das über ein benutzerdefiniertes Quellmodell verfügt.
Angenommen, Ihre Entitäten werden aufgerufen Article
und Author
Sie möchten, dass die Article
Entität ein Attribut Author
hat. Wenn Sie also einen Artikel hinzufügen / bearbeiten und einen Artikel hinzufügen, können Sie aus einer Dropdown-Liste einen aller Autoren auswählen.
Sie müssen dies in der Setup-Klasse ( TC_Skeleton_Model_Resource_Setup
aus dem von Ihnen verknüpften Beispiel) unter den anderen Attributen hinzufügen :
'author_id' => array(
'type' => 'int',
'label' => 'Author',
'input' => 'select',
'required' => true, //or false
'sort_order' => 10, //what ever
'position' => 10,//what ever
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL, //or SCOPE_WEBSITE or SCOPE_STORE,
'source' => '[module_alias]/source_author', //this needs to be added
),
Erstellen Sie nun die Klasse [Namespace]_[Module]_Model_Source_Author
mit diesem Inhalt
<?php
class [Namespace]_[Module]_Model_Source_Author extends Mage_Eav_Model_Entity_Attribute_Source_Abstract{
protected $_options = null;
public function getAllOptions($withEmpty = false){
if (is_null($this->_options)){
$this->_options = array();
$authors = Mage::getModel('[module_alias]/author')->getCollection()->addAttributeToSelect('name')->addAttributeToSelect('country');
foreach ($authors as $author) {
$this->_options[] = array(
'value' => $author->getId(),
'label' => $author->getName(). ' - '.$author->getCountry()
);
}
}
$options = $this->_options;
if ($withEmpty) {
array_unshift($options, array('value'=>'', 'label'=>''));
}
return $options;
}
public function getOptionText($value)
{
$options = $this->getAllOptions(false);
foreach ($options as $item) {
if ($item['value'] == $value) {
return $item['label'];
}
}
return false;
}
}
Darüber hinaus finden Sie hier ein Beispiel zum Hinzufügen eines Attributs mit einem benutzerdefinierten Quellmodell zu den Produkten. Wenn Ihre Entität EAV ist, sollte es genauso funktionieren. Der wichtigste Teil ist die getAllOptions
Methode in der oben genannten Klasse. Sie können dort alles tun, solange Sie ein Array von Werten zurückgeben.
Auch diese Erweiterung könnte helfen. Es kann im Handumdrehen die Dateien erstellen, die Sie für Ihre Entitäten benötigen (EAV oder Flat), und es ermöglicht Ihnen auch, Beziehungen zwischen Entitäten herzustellen (eine zu viele oder viele zu viele). In Ihrem Fall benötigen Sie eine Eins-zu-Viele-Beziehung.
Ich bin an der Entwicklung der Erweiterung beteiligt, aber es ist für jeden kostenlos, sie zu verwenden oder zu ändern.