Magento 2-レイアウトXMLのifconfig


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は必要ありません。

それが理にかなっていることを願っています。


1.xのようなifconfigの強力な機能を持つ拡張機能はありますか?
マイク

ちょっと@Dmitryがあるとは思いませんし、知らないものもありません。ifconfigには何が必要ですか?
rob3000

例:<action method = "setTemplate" ifconfig = "config_path / group / field" condition = "one_column"> <template> page / 1column.phtml </ template> </ action>「ifconfig」と「condition」を意味しました
マイク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.