Отменить процесс удаления блока в layout.xml

13

Я хочу отменить удаление блока.

блок снят в vendor/magento/theme-frontend-blank/Magento_Checkout/layout/checkout_index_index.xml

<referenceBlock name="minicart" remove="true"/>
<referenceContainer name="header.panel" remove="true"/>
<referenceBlock name="top.search" remove="true"/>
<referenceBlock name="catalog.compare.link" remove="true"/>
<referenceBlock name="catalog.topnav" remove="true"/>
<referenceContainer name="footer-container" remove="true"/>

Согласно документации , можно отменить удаление remove=false.

Итак, я создал файл в моей теме в Magento_Checkout/layout/checkout_index_index.xml

<referenceBlock name="minicart" remove="false"/>
<referenceContainer name="header.panel" remove="false"/>
<referenceBlock name="top.search" remove="false"/>
<referenceBlock name="catalog.compare.link" remove="false"/>
<referenceBlock name="catalog.topnav" remove="false"/>
<referenceContainer name="footer-container" remove="false"/>

Но это не работает. Согласно этой проблеме GitHub, это не ошибка

РЕДАКТИРОВАТЬ:

Вот также связанный пост на форуме

Филипп Сандер
источник
3
на первый взгляд это звучит как ошибка для меня. Проблема на github закрыта, я думаю, потому что это звучит как вопрос. Возможно, если бы вы могли предоставить полный пример в проблеме (или, может быть, также новую проблему), чтобы воспроизвести поведение, оно может быть вновь открыто.
Дэвид Верхолен
Вы должны переопределить файл темы xml.
Суреш Чикани

Ответы:

3

Я также столкнулся с той же проблемой, и она была решена путем переопределения папки по умолчанию.

По умолчанию это отключено в luma / blank theme. вам просто нужно создать базовую структуру в папке вашей темы и повторно добавить блоки, которые вы хотите

yourthemename \ Magento_Checkout \ расположение \ переопределение \ тема \ Magento \ пусто

просто скопируйте сюда checkout_index_index.xml и в этом файле вставьте следующий код

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
  <body>
  <!-- <referenceBlock name="minicart" remove="true"/>-->
   <!--<referenceContainer name="header.panel" remove="true"/>-->
    <referenceBlock name="top.search" remove="true"/>
    <referenceBlock name="catalog.compare.link" remove="true"/>
    <referenceBlock name="catalog.topnav" remove="true"/>
   <!--<referenceContainer name="footer-container" remove="true"/>-->
</body>

Вы можете заблокировать удаление true / false, как это.

Суреш Чикани
источник
3

Похоже, что это ошибка, и теперь она исправлена ​​в разработке.

Смотрите обсуждение github как выпуск № 1931 .

Сам патч можно найти как: 9bd170d .

Альтернативное предложение, если у вас есть контроль над родителем и ребенком, было использовать displayвместоremove

<!-- parent_layout_handle.xml -->
+ <referenceContainer name="root" display="false"/>
- <referenceContainer name="root" remove="true"/>

<!-- child_layout_handle.xml -->
+ <referenceContainer name="root" display="true"/>
- <referenceContainer name="root" remove="false"/>
Алекс Хэдли
источник
3

Не нужно ничего переопределять, после того как вы добавите все это removeвfalse

<referenceBlock name="minicart" remove="false"/>
<referenceContainer name="header.panel" remove="false"/>
<referenceBlock name="top.search" remove="false"/>
<referenceBlock name="catalog.compare.link" remove="false"/>
<referenceBlock name="catalog.topnav" remove="false"/>
<referenceContainer name="footer-container" remove="false"/>

Вам необходимо заново создать их макет XML. Например, можно найти top.searchблок и посмотреть, как он был создан, а затем скопировать тот же самый блочный xml в ваш XML-файл макета.

Пример будет такой

<referenceBlock name="product.info.description" remove="false" />

и сразу после

<block class="Magento\Catalog\Block\Product\View\Description" name="product.info.description" template="Magento_Catalog::product/view/attribute.phtml" group="detailed_info">
                            <arguments>
                                <argument name="at_call" xsi:type="string">getDescription</argument>
                                <argument name="at_code" xsi:type="string">description</argument>
                                <argument name="css_class" xsi:type="string">description</argument>
                                <argument name="at_label" xsi:type="string">none</argument>
                                <argument name="title" translate="true" xsi:type="string">Details</argument>
                            </arguments>
                        </block>
Зеешан Хуваджа
источник
2
ты прав! когда я задал этот вопрос (2 года назад), это была ошибка и не работает. Тем временем это исправлено.
Филипп Сандер