Zwei FE-Listen - gruppiert - eine Pagination
Hallo,
ich habe sämtliche Themen im Forum gelesen doch leider keine Lösung für meine Anforderung gefunden.
Es gibt 2 Metamodels:
mm_unternehmen (parent)
mm_produkte (child)
Die Einträge von mm_unternehmen bekommen über ein Select-Attribut ein Tarif zugeordnet (Basic oder Premium).
Die Listen-Ansicht
Es sollen die Einträge von mm_produkte gruppiert ausgegeben werden.
1. Gruppe (sortiert nach Entfernung) - Einträge deren Elternelement einen Premium-Tarif hat.
2. Gruppe (sortiert nach Entfernung) - Einträge deren Elternelement einen Basic-Tarif hat.
Beide Gruppen werden auf einer Seite ausgegeben und werden über ein Filter-Set angesprochen: Umkreissuche + Mehrfachauswahl
Folgende Kombinationen habe ich bereits getestet:
1. Versuch
Je Gruppe eine CE-Liste mit der Option "Filtereinstellungen überschreiben"
Hier müsste jedem Produkt ein Tarif zugeordnet sein.
Wechselt das Elternelement den Tarif, müsste bei allen Produkten der Tarif angepasst werden.
Optimal wäre hier ein Filter "Einfache Abfrage" der auf die Daten des Elternelementes zugreifen kann.
Zudem habe ich hier Probleme beim Einrichten der Pagination.
Es wird für jede Liste eine Pagination ausgegeben - gewünscht ist jedoch nur eine für beide Listen.
2. Versuch
Je Gruppe eine CE-Liste. Über referenced items gebe ich nur die Produkte aus,
deren Elternelement einen Premium-Tarif (1.Liste) oder Basic-Tarif (2.Liste) zugeordnet ist.
PHP-Code:
<?php
function getBasic($strPid)
{
$objMetaModel = \MetaModels\Factory::byTableName('mm_unternehmen');
$objFilter = $objMetaModel->getEmptyFilter();
$objFilter = $objMetaModel->prepareFilter(162, array());
$objFilter->addFilterRule(new \MetaModels\Filter\Rules\SearchAttribute($objMetaModel->getAttribute('alias_id'), $strPid, $objMetaModel->getAvailableLanguages()));
$objItems = $objMetaModel->findByFilter($objFilter);
return $objItems->parseAll(text, $objMetaModel->getView(2));
}
?>
<?php if (count($this->data)): ?>
<?php foreach ($this->data as $arrItem): ?>
<?php foreach (getBasic($arrItem['raw']['pid']) as $arrBasic): ?>
<?php if ($arrBasic['raw']['id'] = $arrItem['raw']['pid']): ?>
<?php echo $arrItem['text']['name']; ?>
<?php endif; ?>
<?php endforeach; ?>
<?php endforeach; ?>
<?php endif; ?>
Ich denke, dass diese Variante viele Datenbankabfragen verursacht.
Zudem habe ich hier Probleme beim Einrichten der Pagination.
Es wird für jede Liste eine Pagination ausgegeben - gewünscht ist jedoch nur eine für beide Listen.
Es werden mehr Seiten angezeigt als Produkte vorhanden sind.
Ich denke ich müsste die Produkte mit nur einer CE-Liste ausgeben.
Nur wie bekomme ich das hin?
Ist es möglich die Items im Template zu gruppieren?
Hat von euch jemand eine Idee, Denkanstoß für mich?