Magento 2 - ifconfig in layout xml

16

Ich arbeite mit Magento 2.

Ich kann das ifconfig-Attribut im Blockcode verwenden, und es funktioniert gut.

<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"/>

Aber ich habe versucht, es für den Umzug zu verwenden, es hat nicht funktioniert.

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

Weiß jemand, wie man damit umzieht?

Mike
quelle
Hast du danach gesucht? Ich sehe es im Block Leser, aber nichts in der Bewegung ein. Glaube nicht, dass du kannst.
nevvermind
Gibt es eine andere Möglichkeit, ohne ifconfig zu verwenden?
Mike

Antworten:

5

Soweit ich weiß, kannst du es nicht ifconfigfür unterwegs verwenden. In der Klasse Magento\Framework\View\Layout\Reader\Block.phpwird auf das Attribut geprüft ifconfig:

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

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

Beim Verschieben wird der Block jedoch nicht auf das ifconfigAttribut überprüft :

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

In Theroy sollte die ifconfig nicht unterwegs benötigt werden, wenn bereits eine ifconfig im Block vorhanden ist, da der Block nicht gerendert und somit nicht verschoben wird.

Hoffe das macht Sinn.

rob3000
quelle
Gibt es eine Erweiterung mit starken Merkmalen von ifconfig wie 1.x?
Mike
Hey @Dmitry, ich glaube nicht, dass es einen gibt, von dem ich nichts weiß. Wofür brauchst du die ifconfig?
rob3000
Beispiel: <action method = "setTemplate" ifconfig = "config_path / group / field" condition = "one_column"> <template> page / 1column.phtml </ template> </ action> Ich meinte "ifconfig" und "condition"
Mike