Magento 2-如何有2个分离的phtml来处理产品列表和产品网格



我正在构建一个基于Magento 2的新网站。我还在学习这个CMS,我想知道一件事。根据网络设计师的工作,我在产品列表和列表的网格布局之间有太多的差异。

现在,为了设计产品网格的样式,我已经复制并编辑了这个文件:app/design/frontend/MYTHEME/default/Magento_Catalog/templates/product/list.phtml

但它同时处理网格和列表布局,当然:

<div class="products wrapper <?= /* @noEscape */ $viewMode ?> products-<?= /* @noEscape */ $viewMode ?>">

我需要为列表布局移动太多东西,所以我尝试有两个单独的phtml,一个用于列表布局,一个用作网格布局。这可能吗?例如,我想在app/design/frontend/MYTHEME/default/Magento_Catalog/layout/catalog_category_view.xml中定义事物?

谢谢你的帮助。

在您的phtml文件中:

app/design/frontend/MYTHEME/default/Magento_Catalog/templates/product/list.phtml

你为什么不做这样的事情:

<?php if ($viewMode == 'grid') :?>
// Grid layout
<?php else :?>
// List layout
<?php endif; ?>

如果你想分离,你必须找到调用这个模板的块类(list.phtml(。

在那里,您将看到setTemplate函数(有些块将没有,因为它已经在父类中了(。

你也会在那里获得viewMode,所以你必须设置如下条件:

if ($viewMode == 'grid') : 
$this->setTemplate = '...../grid.phtml';
else : 
$this->setTemplate = '...../list.phtml';

setTemplate函数内部。

我想您已经知道在哪里以及如何创建gridphtml文件。

最新更新