Переместите только приветственное сообщение
Я все искал и искал, и, похоже, не могу найти ни одного конца, чтобы переместить этот фрагмент приветственного сообщения.
Я огляделся и нашел этот вопрос и ответ полезными, но не совсем то, что я искал.
Я нашел эти файлы, о которых говорится в приведенном выше ответе, однако на самом деле я хочу переместить ТОЛЬКО приветственное сообщение. Я бы хотел, чтобы он был во всю ширину над заголовком. Так что в идеале я хотел бы что-то сделать например: но, увы, я не знаю крючка для приветственного сообщения.
Приветственное сообщение находится в html/header.phtml, и на блок ссылаются из этого XML-файла, я не уверен, как ссылаться только на его xml-часть? Я попытался извлечь из ko javascript из заголовка.phtml и сделать его своим собственным в своем собственном бэкэнд-блоке, а затем сослаться на блок в default.xml файл, но это вообще ничего не делает. Просто полностью удаляет его.
Так вот что я подумал будет работать:
Я создал новый шаблон в папке мои темы magento_theme и назвал его config_headergroup_notification.phtml:
<?php
/**
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
// @codingStandardsIgnoreFile
/**
* @var \Magento\Theme\Block\Html\Header $block
*/
$welcomeMessage = $block->getWelcome();
?>
<?php switch ($block->getShowPart()):
case 'welcome': ?>
<li class="greet welcome" data-bind="scope: 'customer'">
<h1> hello???</h1>
<span data-bind="html:'<?=$block->escapeHtml($welcomeMessage) ?>'"></span>
<!-- /ko -->
</li>
<script type="text/x-magento-init">
{
"*": {
"Magento_Ui/js/core/app": {
"components": {
"customer": {
"component": "Magento_Customer/js/view/customer"
}
}
}
}
}
</script>
<?php break; ?>
<?php case 'other': ?>
<?php echo $block->getChildHtml(); ?>
<?php break; ?>
<?php endswitch; ?>
Затем добавил части кода header.phtml, который, как я думал, вызовет мое приветственное сообщение.
Затем в моих темах Magento_Theme default.xml файл, который я добавил:
<referenceContainer name="header.panel">
<block class="Magento\Framework\View\Element\Template" name="config.header.notification" before="-" template="Magento_Theme::config_headergroup_notification.phtml" />
</referenceContainer>
Но это просто не работает. Я знаю, что функция работает, потому что, если я просто добавлю немного текста в файл config_headergroup_notification.phtml и, конечно, очищу свою тему файлы и кэш текст отображается в разделе "заголовок.панель", но мое приветственное сообщение просто не будет отображаться, если я сделаю какие-либо другие попытки внести изменения.
Итак, я подумал, что смогу найти блок для ссылки и просто переместить его, как я делал с другими в своем default.xml файл. Так что я надеюсь, что мне просто нужно найти название блока ТОЛЬКО для этого приветственного сообщения, а затем переместить его туда, куда я хочу. Как этот первый пример в моем вопросе:
<move element="welcome.message" destination="header.panel" before="-"/>
Может ли кто-нибудь предоставить какие-либо понимание или совет по этому поводу? Я не программист Magento, но у меня есть хорошее представление об этих основных изменениях xml.
1 answers
Хорошо, я нашел решение, которое работает на мою тему, где родитель пуст.
Yourtheme/Magento_Theme/layout/default.xml
В теге body добавьте следующее:
<referenceBlock name="header.panel">
<block class="Magento\Theme\Block\Html\Header" name="header" as="header" before="-">
<arguments>
<argument name="show_part" xsi:type="string">welcome</argument>
</arguments>
</block>
</referenceBlock>
Или
<referenceContainer name="header.panel">
<block class="Magento\Theme\Block\Html\Header" name="welcome" as="header" before="-">
<arguments>
<argument name="show_part" xsi:type="string">welcome</argument>
</arguments>
</block>
</referenceContainer>
И настройте свой файл less примерно так:
li.greet.welcome {
width: 100%;
display: block;
margin: auto;
background-color: green;
text-align: center;
}