Magento 2 - ifconfig w układzie xml

16

Pracuję z Magento 2.

Mogę użyć atrybutu ifconfig w kodzie bloku i działa dobrze.

<block class="Magento\Catalog\Block\Category\View" name="category_desc_main_column" template="category/desc_main_column.phtml" ifconfig="config_path/group/field" before="category.products"/>

Ale próbowałem użyć go do przenoszenia, to nie działało.

<move element="category.image" destination="content" ifconfig="config_path/group/field" before="-"/>

Czy ktoś wie, jak używać go do poruszania się?

Mikrofon
źródło
Szukałeś tego? Widzę to w czytniku bloków , ale nic w ruchu . Nie myśl, że możesz.
nevvermind
Czy jest na to inny sposób bez użycia ifconfig?
Mike

Odpowiedzi:

6

Z tego, co rozumiem, nie możesz używać ifconfigw ruchu. W klasie Magento\Framework\View\Layout\Reader\Block.phpjest sprawdzanie atrybutu ifconfig:

$configPath = (string)$currentElement->getAttribute('ifconfig');

źródło:
https://github.com/magento/magento2/blob/2.3-develop/lib/internal/Magento/Framework/View/Layout/Reader/Block.php

Jednak blok ruchu nie sprawdza ifconfigatrybutu:

protected function scheduleMove(Layout\ScheduledStructure $scheduledStructure, Layout\Element $currentElement)
    {
        $elementName = (string)$currentElement->getAttribute('element');
        $destination = (string)$currentElement->getAttribute('destination');
        $alias = (string)$currentElement->getAttribute('as') ?: '';
        if ($elementName && $destination) {
            list($siblingName, $isAfter) = $this->beforeAfterToSibling($currentElement);
            $scheduledStructure->setElementToMove(
                $elementName,
                [$destination, $siblingName, $isAfter, $alias]
            );
        } else {
            throw new \Magento\Framework\Exception\LocalizedException(
                new \Magento\Framework\Phrase('Element name and destination must be specified.')
            );
        }
        return $this;
    }

https://github.com/magento/magento2/blob/2.3-develop/lib/internal/Magento/Framework/View/Layout/Reader/Move.php#L49

W Theroy nie powinieneś potrzebować ifconfig w ruchu, jeśli w bloku jest już ifconfig, ponieważ blok nie będzie renderowany, a zatem nie zostanie przeniesiony.

Mam nadzieję, że to ma sens.

rob3000
źródło
Czy jest jakieś rozszerzenie z silną funkcją ifconfig, np. 1.x?
Mike
Hej @Dmitry, nie sądzę, aby istniał lub nie jest mi znany. Do czego potrzebujesz ifconfig?
rob3000
np .: <action method = "setTemplate" ifconfig = "ścieżka_konfiguracyjna / grupa / pole" warunek = „kolumna_jednostkowa”> <template> page / 1column.phtml </template> </action> Miałem na myśli „ifconfig” i „condition”
Mike