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, оскільки блок не буде наданий і, отже, не переміщений.

Сподіваюся, що це має сенс.


Чи є розширення з сильною особливістю ifconfig, як 1.x?
Майк

Гей, @Dmitry, я не думаю, що є такий, якого я не знаю. Для чого вам потрібна ifconfig?
rob3000

наприклад: <метод дії = "setTemplate" ifconfig = "config_path / group / field" condition = "one_column"> <template> page / 1column.phtml </template> </action> Я мав на увазі "ifconfig" і "умова"
Майк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.