Magento 2 - ifconfig dalam tata letak xml

16

Saya bekerja dengan Magento 2.

Saya dapat menggunakan atribut ifconfig dalam kode blok, dan berfungsi dengan baik.

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

Tapi saya mencoba menggunakannya untuk bergerak, tidak berhasil.

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

Adakah yang tahu cara menggunakannya untuk bergerak?

Mike
sumber
Sudahkah Anda mencarinya? Saya melihatnya di pembaca blok , tetapi tidak ada yang bergerak . Jangan pikir kamu bisa.
nevvermind
Apakah ada cara lain untuk itu tanpa menggunakan ifconfig?
Mike

Jawaban:

6

Dari apa yang saya pahami, Anda tidak dapat menggunakannya ifconfigsaat bepergian. Di kelas Magento\Framework\View\Layout\Reader\Block.phpada tanda centang untuk atribut ifconfig:

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

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

Namun pada blok pindahan sebenarnya tidak memeriksa ifconfigatribut:

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

Di Theroy Anda seharusnya tidak memerlukan ifconfig saat bepergian jika sudah ada ifconfig di blok karena blok tidak akan di-render dan karenanya tidak dipindahkan.

Harapan itu masuk akal.

rob3000
sumber
Apakah ada ekstensi dengan fitur ifconfig yang kuat seperti 1.x?
Mike
Hey @Dmitry, saya rasa tidak ada atau tidak saya sadari. Untuk apa Anda perlu ifconfig?
rob3000
mis: <action method = "setTemplate" ifconfig = "config_path / group / field" condition = "one_column"> <template> halaman / 1column.phtml </template> </action> Maksud saya "ifconfig" dan "condition"
Mike