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?


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.