Magento 2-如何使用2个单独的phtml来处理产品列表和产品网格?

问题描述 投票:0回答:2

我正在基于Magento 2建立一个新网站。我仍在学习此CMS,我想知道一件事。基于Webdesigner的工作,我在产品列表的网格布局和列表的网格布局之间有太多差异。

现在,要为产品网格设置样式,我已复制并编辑此文件:app/design/frontend/MYTHEME/default/Magento_Catalog/templates/product/list.phtml

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

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

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

感谢您的帮助。

list magento layout grid magento2
2个回答
1
投票

在您的phtml文件中:

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

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

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

0
投票

如果要分离,您将找到称为该模板的Block Class(list.phtml)。

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

您还将在那里获得viewMode,因此您必须设置如下条件:

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

setTemplate函数内部。

我认为您已经知道在何处以及如何创建grid phtml文件。

© www.soinside.com 2019 - 2024. All rights reserved.