Hallo Community,
ich habe folgende Methode um im Listing die Category Children (Unterkategorien) zu erhalten.
Das funktioniert auch, aber seit 5.5 sind die Kategorien übersetzt; diese Übersetzungen kommen mit sGetWholeCategoryTree nicht an.
Kann mir hier jemand helfen?
public function onFrontendListing(\Enlight_Event_EventArgs $args)
{
/** @var \Shopware_Controllers_Frontend_Listing $subject */
$view = $args->getSubject()->View();
$categoryId = $args->getRequest()->getParam('sCategory');
$categoryContent = $view->getAssign('sCategoryContent');
$categoryChildren = Shopware()->Modules()->Categories()->sGetWholeCategoryTree($categoryId);
if(!$categoryChildren){
$categoryChildren = Shopware()->Modules()->Categories()->sGetWholeCategoryTree($categoryContent['parentId']);
}
$view->assign('sCategoryChildren', $categoryChildren);
}
Vielen Dank schon mal für Eure Hilfe
Hallo @flo.kalango,
wie ich sehe gibt kein bereite Funktion um die Translation mit die ganze Tree zu nehmen, aber lass uns warten vielleicht jemand andere weiß besser.
aber was ich werde machen ob gibt keine Funktions ist:
1- erstell ein Funktion wie die ‚mapCategoryTree‘ Funktion , das würde beim Shopware benutzet hier : (loop into the tree)
*
* @return array Category tree for the provided args
*/
public function sGetWholeCategoryTree($parentId = null, $depth = null, $shopId = null)
{
if ($parentId === null) {
$parentId = $this->baseId;
}
$result = $this->repository->getActiveChildrenTree($parentId, $this->customerGroupId, $depth, $shopId);
$result = $this->mapCategoryTree($result);
return $result;
}
/**
* Returns category content for the given category id
*
* @param int $id
*
* @return array|null
2- innerhabl diese loop benutzen sie die Translation reader wei hier :
throw new ApiException\NotFoundException(sprintf('Category by id %d not found', $id));
}
if ($this->getResultMode() === Resource::HYDRATE_ARRAY) {
$category = $categoryResult[0] + $categoryResult;
$query = $this->getManager()->createQuery('SELECT shop FROM Shopware\Models\Shop\Shop as shop');
foreach ($query->getArrayResult() as $shop) {
$translation = $this->translationComponent->read($shop['id'], 'category', $id);
if (!empty($translation)) {
$translation['shopId'] = $shop['id'];
$category['translations'][$shop['id']] = $translation;
}
$attributeTranslation = $this->translationComponent->read($shop['id'], 's_categories_attributes', $id);
if (!empty($attributeTranslation)) {
$attributeTranslation['shopId'] = $shop['id'];
if (!is_array($category['translations'][$shop['id']])) {
$category['translations'][$shop['id']] = [];
3- überschreiben die Katogire info beim die Translation info , oder append die Translation info zu array oder mach was du möchtest.
VG,
Tel.: +49 755 - 183 990 00 | Web: http://enbit.de/