class Extinheritance_oxArticle extends Extinheritance_oxArticle_parent{
public function getAccessoires(){
return $this->_inheritRelationListFromParentArticle(__FUNCTION__);
}
public function getSimilarProducts(){
return $this->_inheritRelationListFromParentArticle(__FUNCTION__);
}
public function getCrossSelling(){
return $this->_inheritRelationListFromParentArticle(__FUNCTION__);
}
protected function _inheritRelationListFromParentArticle($sFunctionName){
if($this->isVariant() && oxRegistry::getConfig()->getConfigParam($sFunctionName)){
if(oxRegistry::getConfig()->getConfigParam('bOnlyEmptyVariants')){
$oRelationList = parent::$sFunctionName();
}
if(!isset($oRelationList)){
$oRelationList = $this->getParentArticle()->$sFunctionName();
}
} else {
$oRelationList = parent::$sFunctionName();
}
return $oRelationList;
}
}
Ist zwar ein alter Thread, aber da ich das gerade für einen Kunden umgesetzt habe, eine kleine, performancemäßige Verbesserung des bisher verwendeten Vorschlags.
Hintergedanke ist dabei, dass der wiederholte Aufruf der Funktion im schlimmsten Fall jedesmal zu einer Datenbankabfrage wird. Außerdem gibt es mittlerweile ein paar zusätzliche OXID-Funktionen wie isVariant und dergleichen.
Jetzt könnte man natürlich noch prüfen ob wirklich ein Vaterartikel zurück kommt usw. aber glauben wir mal, dass niemand manuell kaputte Vaterartikel anlegt, sonst ist sowieso etwas im Argen.
In der metadata.php hätte ich dann noch folgende Settings hinterlegt, damit man das ganze vielleicht für weitere Kunden an/aus knipsen kann und so leichter wiederverwenden, oder als Basis für ein langsam wachsendes Modul verwenden kann. Jetzt müsst ihr halt noch die Sprachvariablen usw. definieren, aber das bekommt sicher jeder ohne Vorkauen hin.
'settings' => array(
array('group' => 'Article', 'name' => 'getSimilarProducts', 'type' => 'bool', 'value' => 'false'),
array('group' => 'Article', 'name' => 'getAccessoires', 'type' => 'bool', 'value' => 'false'),
array('group' => 'Article', 'name' => 'getCrossSelling', 'type' => 'bool', 'value' => 'false'),
array('group' => 'Article', 'name' => 'bOnlyEmptyVariants', 'type' => 'bool', 'value' => 'false'),
),
Viele Grüße,
Johannes