theme.xml => <parent>Magento/blank</parent>
theme.xml => <parent>Vendor1/themeparent</parent>
3b. Хотя шаблоны .phtml файлы или .css файлы существуют в childtheme работают нормально, если соответствующие макеты контейнеров / блоков вызваны из Vendor1\ themeparent файлы макетов.
Уже пробовал с очисткой общественный / статический а также вар папки magento. Также пробовал после запуска с командами cli
php bin/magento setup:static-content:deploy
php bin/magento indexer:reindex
php bin/magento setup:upgrade
Но ничего не решило это.
Требуемое наследование темы осуществляется следующим образом:
Magento_blank => Vendor1_themeparent => Vendor2_childtheme. (обратите внимание, продавец отличается)
Результат: не удается загрузить макет .xml в дочерней теме.
Но если для теста наследование сделано так:
Magento_blank => Vendor1_themeparent => Vendor1_childtheme. (обратите внимание, продавец тот же)
Результат: Layout .xml загружается правильно и отлично работает в childtheme.
Согласно руководству Magento 2 по http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/themes/theme-inherit.html#set-a-parent-theme ясно сказано, что «Родитель и дочерняя тема могут принадлежать разные поставщики. Например, ваша пользовательская тема может наследоваться от темы Magento Blank. « . Итак, если я создаю дочернюю тему второго уровня (в vendor 2) из родительской темы (в vendor 1), которая является дочерней по отношению к Magento_blank (vendor: Magento), это в идеале должно работать нормально. Но этого не происходит. Ни один из XML-файлов макета не обрабатывается для вывода, если они принадлежат разным поставщикам. Если я поставлю обе темы у одного поставщика, они будут работать нормально.
Расширение XML-файлов макета в дочерней теме 2-го уровня в папке другого поставщика не работает.
Почему Magento 2.0.4 не работает должным образом для двухуровневого наследования тем с разными именами поставщиков?
Это серьезная проблема, как если бы вы предположили, что приобрели платную тему откуда-то (которую они создали, унаследовав Magento_blank), и теперь вы хотите создать дочернюю тему этой платной темы, но в другой папке vendorname (очевидно, под названием вашей компании) Вы не сможете сделать это!
У вас осталось только два варианта, либо сделайте свою дочернюю тему в названии своего поставщика; или отредактируйте XML-файлы их тем, чтобы они вызывали файлы шаблонов дочерних тем или .css / .js (если это имя вашего поставщика); второй случай, очевидно, потеряет обновления, странным образом и не рекомендуется.
Тогда каково решение ??
Предоставив больше времени для поиска причины, я создал разные наборы родительских и дочерних тем с разными вендорными именами, проверил их при одной и той же установке, и это сработало!
Я был поражен, соответствовал тому, что я сделал ранее в моих темах; старое и новое и то же самое. Снова активировала мою детскую тему, и на удивление это не сработало. Более удивлен и сыт. 🙁
Затем я копался в база данных magento, и я обнаружил одну удивительную вещь В ‘тема‘ MySQL стол базы данных magento, как-тотип«столбец, соответствующий моей дочерней теме, имел значение, установленное как« 1 », а все остальные -« 0 ». Под подозрением я попытался выяснить, что это значит под комментарием в названии столбца таблицы, который показывает ..
0 => Physical
1 => Virtual
2 => Staging
Я догадался, что это может быть причиной, и вручную установил значение столбца ‘type’ в 0 соответствует моей детской теме. Очищены var и public / static папки. Перепроверено, и вуаля! это сработало!!
Эта небольшая проблема потратила впустую мои 4-5 дней без решения. Даже деактивация-активация или переключение тем из admin не сбрасывали его значение на 0 (оно всегда оставалось равным 1) и поэтому никогда не работало.
Для подтверждения перекрестной проверки я удалил эту строку из таблицы тем базы данных и переустановил тему, запустил php bin/magento setup:upgrade
и теперь он устанавливает значение 0, что идеально и работает автоматически.
Не знаю, как было установлено 1 и когда. Это должно быть 0.
В любом случае, проблема решена сейчас, и
Я нашел очень маленькую вещь, но очень большую вещь
, который может тратить время каждого разработчика, если не известно.
Но, удивительно, что эта глупость не упоминается в Интернете, и даже не в документации magento, которая должна быть там.
Надеюсь, что это объяснение и решение помогут большему количеству людей позже, которые разочаровываются той же самой проблемой. 🙂
Этот вопрос также поднимается и объясняется на https://github.com/magento/magento2/issues/4330
Благодарю.
Других решений пока нет …