Hallo Leute,
ich habe ein Plugin geschrieben, das auf der Startseite alle Artikel des (Sub-)Shops anzeigen soll (es sind nicht viele Artikel).
Aktuell hole ich die Daten mit: $articles = Shopware()->Modules()->Articles()->sGetArticlesByCategory();
Für das Design würde ich aber mehrere Bilder für die Anzeige brauchem und die bekomme ich so nicht her.
Die Beste Lösung wäre die Abfrage so zu erweitern, dass ich die selben Daten bekommen, nur eben zusätzlich einen Array "images" mit den Bildern. Das ist aber leider nicht ganz so einfach, da ich die Methode für die Abfrage nicht gefunden habe.
Alternativ dazu habe ich das eher schlechte Design mit sub-Abfragen aktuell implementiert (siehe unten), da ist aber noch das Problem aufgetaucht, dass ich zwar den Pfad der Bilder bekomme, der Pfad ist aber nicht vollständig und ich habe keine ösung gefunden, wie ich den vollständigen Pfad bekommen.
Hier die interessanten Teile von meinem Plugin Code:
public function install()
{
$this->subscribeEvent(
'Enlight_Controller_Action_PostDispatch_Frontend_Index',
'onFrontendPostDispatch'
);
$this->createConfig();
return true;
}
public function onFrontendPostDispatch(Enlight_Event_EventArgs $args)
{
$controller = $args->get('subject');
$view = $controller->View();
$view->addTemplateDir(
__DIR__ . '/Views'
);
$mediaService = $this->get('shopware_media.media_service');
$categoryId = $this->Config()->get('categoryId');
$articles = Shopware()->Modules()->Articles()->sGetArticlesByCategory();
foreach ($articles['sArticles'] as &$article) {
//$article['images'] = Shopware()->Modules()->Articles()-> sGetArticlePictures($article["articleID"], false, 600, null, true ) ;
$builder = Shopware()->Models()->getRepository("Shopware\Models\Article\Article")->createQueryBuilder('articles');
$builder->select(['article', 'images', 'imageAttribute']);
$builder ->from('Shopware\Models\Article\Article', 'article')
->leftJoin('article.images', 'images')
->leftJoin('images.attribute', 'image.Attribute')
->where('article.id = :articleId')
->setParameters(['articleId' => $article["articleID"]]);
$imagesObj = $builder ->getQuery() ->getArrayResult()[0]['images'];
$article['images'] = $imagesObj;
}
$view->assign('sCategoryId', $categoryId);
$view->assign('productBoxLayout', 'image');
$view->assign('sArticles', $articles['sArticles']);
}
Vielen Dank für die Info / Hilfe - weiß jemand einen besseren Ansatz?
Roman