Magento 2 - ifconfig dans la mise en page xml

16

Je travaille avec magento 2.

Je peux utiliser l'attribut ifconfig dans le code de bloc, et cela fonctionne bien.

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

Mais j'ai essayé de l'utiliser pour déménager, ça n'a pas marché.

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

Quelqu'un sait comment l'utiliser pour se déplacer?

Mike
la source
L'avez-vous cherché? Je le vois dans le lecteur de blocs , mais rien dans celui qui bouge . Ne pense pas que tu peux.
Nevvermind
Existe-t-il un autre moyen sans utiliser ifconfig?
Mike

Réponses:

6

D'après ce que je comprends, vous ne pouvez pas utiliser ifconfigen déplacement. Dans la classe, Magento\Framework\View\Layout\Reader\Block.phpil y a une vérification de l'attribut ifconfig:

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

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

Cependant, le bloc de déplacement ne vérifie pas réellement l' ifconfigattribut:

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

Dans Theroy, vous ne devriez pas avoir besoin de l'ifconfig en déplacement s'il y a déjà un ifconfig sur le bloc car le bloc ne sera pas rendu et donc pas déplacé.

J'espère que cela a du sens.

rob3000
la source
Existe-t-il une extension avec une caractéristique forte d'ifconfig comme 1.x?
Mike
Hé @Dmitry, je ne pense pas qu'il y en ait ou un dont je ne suis pas au courant. Pourquoi avez-vous besoin de l'ifconfig?
rob3000
par exemple: <action method = "setTemplate" ifconfig = "config_path / group / field" condition = "one_column"> <template> page / 1column.phtml </template> </action> Je voulais dire "ifconfig" et "condition"
Mike