Magento2 - Как показать содержимое блока на главной странице

14

Как показать контент блока на главной странице?

После установки magento2 без примеров данных я выбрал тему «Magento Luma», добавил блок «Home Page Block» и скопировал код из хранилища примеров.

но ничего не отображается на домашней странице, как показать мой блок CMS на домашней странице, как образец магазина?

мой дом введите описание изображения здесь

магазин образцов

введите описание изображения здесь

Луна
источник
Вы имеете в виду показ настраиваемого текста / контента блока cms или административной панели созданного текста / контента блока cms?
Божжаия
@magentotwo Я создаю пользовательский блок cms. Я хочу знать, как показать этот blcok на домашней странице
Moon
вы пробовали решение ниже?
Божжаия
Содержание домашней страницы в примерах данных поступает из виджетов.

Ответы:

45

в панели администратора перейдите в Content-> Pages и отредактируйте домашнюю страницу, и если вы создали свой статический блок из панели администратора, добавьте следующее на вкладку Content

{{block class="Magento\Cms\Block\Block" block_id="your_block_identifier"}}

и если вы создали пользовательский блок с помощью модуля, добавьте следующее на вкладку содержимого домашней страницы

{{block class="Vendor\ModuleName\Block\BlockName" template="Vendor_ModuleName::yourcustomblock.phtml"}} 

затем сохраните изменения и очистите кэш magento и разверните / удалите статическое содержимое, теперь обновите домашнюю страницу.

Если это не сработало, дайте мне знать

Чамал Чамикара
источник
Отлично работает! Большое спасибо, Чамал!
Луна
Есть ли какая-нибудь ссылка, которую я могу узнать больше об этом? класс блока magento и код идентификатора блока для внешнего интерфейса?
Луна
1
Я нашел devdocs.magento.com/guides/v2.0/howdoi/frontend/… Это хорошее руководство для понимания блочной архитектуры
magento
Из моего модуля cms_index_index.xmlя добавил это в содержимое домашней страницы - <block class="Vendor\Module\Block\Index" name="modulename" template="module.phtml"></block> and It says шаблон фильтрации ошибок: недопустимый файл шаблона: 'Vendor_Module :: module.phtml' в модуле: имя блока 'Vendor_Module': 'index_0'``
Slimshadddyyy
10

попробуйте это или же опубликуйте свой код, и мы предложим вам, где вы ошиблись.

Блокировать файл

<?php
namespace Learning\SmartSearch\Block;

class SmartSearch extends \Magento\Framework\View\Element\Template
{
    public function getTitle()
    {
        return "Smart Search";
    }
}

и т.д. / module.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
    <module name="Learning_SmartSearch" setup_version="1.0.0">
    </module>
</config>

просмотреть / макет / cms_index_index.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="content">
            <block class="Learning\SmartSearch\Block\SmartSearch" template="Learning_SmartSearch::html/cms.phtml"/>
        </referenceContainer>
    </body>
</page>

просмотреть / шаблоны / html / cms.phtml

<h1><?php echo $block->getTitle(); ?></h1>

после создания флеш кеша.

Я надеюсь, что это поможет вам. Если вы не получаете результаты, дайте мне знать.

Bojjaiah
источник
Спасибо за ваш ответ! Я попробую позже и дам вам знать результат
Луна
3

На домашней странице вы можете вызвать статический блок, как указано ниже

{{block class="Magento\Cms\Block\Block" block_id="your_block_identifier"}}

На HTML-странице вы можете вызвать статический блок, как указано ниже.

<?php echo $this->getLayout()->createBlock('Magento\Cms\Block\Block')->setBlockId('block_identifier')->toHtml();?>
Naveenbos
источник