마 젠토 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를 사용하지 않고 다른 방법이 있습니까?
Mike

답변:


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의 강력한 기능을 갖춘 확장 기능이 있습니까?
Mike

@Dmitry 이봐, 내가 모르는 것이 있다고 생각하지 않습니다. ifconfig에는 무엇이 필요합니까?
rob3000

예 : <action method = "setTemplate"ifconfig = "config_path / group / field"condition = "one_column"> <template> page / 1column.phtml </ template> </ action> "ifconfig"및 "condition"을 의미했습니다
Mike
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.