Magento 2 - ifconfig в макете XML

16

Я работаю с magento 2.

Я могу использовать атрибут ifconfig в коде блока, и он работает хорошо.

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

Но я пытался использовать его для перемещения, это не сработало.

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

Кто-нибудь знает, как использовать его для перемещения?

Майк
источник
Вы искали это? Я вижу это в блоке чтения, но ничего в движении . Не думай, что сможешь.
nevvermind
Есть ли другой способ для этого без использования ifconfig?
Майк

Ответы:

6

Из того, что я понимаю, вы не можете использовать ifconfigна ходу. В классе Magento\Framework\View\Layout\Reader\Block.phpесть проверка на атрибут ifconfig:

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

источник:
https://github.com/magento/magento2/blob/2.3-develop/lib/internal/Magento/Framework/View/Layout/Reader/Block.php

Однако на ходу блок фактически не проверяет ifconfigатрибут:

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

В Theroy вам не нужен ifconfig на ходу, если в блоке уже есть ifconfig, поскольку блок не будет отображаться и, следовательно, не перемещаться.

Надеюсь, что это имеет смысл.

rob3000
источник
Есть ли расширение с сильной функцией ifconfig, например 1.x?
Майк
Эй, @Dmitry, я не думаю, что есть или тот, о котором я не знаю. Для чего вам нужен ifconfig?
rob3000
Например: <action method = "setTemplate" ifconfig = "config_path / group / field" condition = "one_column"> <template> page / 1column.phtml </ template> </ action> Я имел в виду "ifconfig" и "condition"
Майк