[PHP] Magento layered menu

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 212326

Topicstarter
He iedereen,

Ik weet niet of hier mensen zitten die ook ervaring hebben met magento maar ik kan het op z'n minst voorleggen aan jullie, namelijk het volgende :):

Ik ben de layered filter navigatie aan het customizen maar zit nu even behoorlijk vast.
Wat mijn bedoeling is om het filter menu zo om te bouwen dat de gekozen filters niet boven aan komen staan als ze geselecteerd zijn (want dan verdwijnen ze tussen de opties). Nee ik wil dat er dan gewoon een vinkje voor de items komen te staan die geselecteerd zijn en dan als je er nogmaals op klikt ze weer unselected worden.

tot zo ver geen probleem maar nu vraag ik me af waar zit in de core (Mage) ergens de check om te kijken of een bepaalde filter is geselecteerd?

Bijv. deze code haalt alle filters actieve filters op in State.php:
code:
1
2
3
4
5
6
7
8
9
public function getActiveFilters()
    {
        $filters = $this->getLayer()->getState()->getFilters();
        if (!is_array($filters)) {
            $filters = array();
        }
        
        return $filters;
    }


Dat is totaal duidelijk maar hoe checkt hij nu of ze actief zijn? Waar is de functie getState ergens gedeclareerd? Want dus in View.php worden de filters ook opgehaald maar dan die niet geselecteerd zijn, maar ik zie nergens waar dat dus gecheckt wordt of de filters actief zijn?!

Dit is de code voor alle filters op te halen (die dus niet actief zijn) in View.php
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public function getFilters()
    {
        $filters = array();
        if ($categoryFilter = $this->_getCategoryFilter()) {
            $filters[] = $categoryFilter;
        }

        $filterableAttributes = $this->_getFilterableAttributes();
        foreach ($filterableAttributes as $attribute) {
            $filters[] = $this->getChild($attribute->getAttributeCode().\'_filter\');
        }

        return $filters;
    }


Maar ik kan nergens vinden waar gecheckt wordt wat de status is van een filter (actief of niet actief, dus als de filter actief is komt hij niet in view.phtml maar in state.phtml)

Misschien ben ik een beetje onduidelijk in wat ik bedoel, maar ik hoop dat iemand het snapt en me verder kan helpen :) ?!
Thnx!! :D

Acties:
  • 0 Henk 'm!

Anoniem: 212326

Topicstarter
Niemand die hierover iets weet :( ? Ik zit namelijk behoorlijk vast hiermee.. :P

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Wat zei Google? Want als ik even snel op Google zoek kom ik hier op uit:

Mage_Catalog_Block_Layer_View bevat de functie getLayer(), die returned een Mage_Catalog_Model_Layer. Daarin zit de functie getState(), welke een Mage_Catalog_Model_Layer_State terug geeft. Die heeft vervolgens de functie getFilters() die de array met filters geeft.

Dus daar komt alles vandaan, dat was toch niet zo moeilijk? Kun je ook wel terug vinden als je even doorklikt in je IDE op de functie-namen.