我正在基于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
中定义内容?
感谢您的帮助。
在您的phtml文件中:
app / design / frontend / MYTHEME / default / Magento_Catalog / templates / product / list.phtml
你为什么不做这样的事情:
<?php if ($viewMode == 'grid') :?>
// Grid layout
<?php else :?>
// List layout
<?php endif; ?>
如果要分离,您将找到称为该模板的Block Class(list.phtml)。
在那里,您将看到setTemplate函数(某些块将没有,因为它已经在父类中)。
您还将在那里获得viewMode,因此您必须设置如下条件:
if ($viewMode == 'grid') :
$this->setTemplate = '...../grid.phtml';
else :
$this->setTemplate = '...../list.phtml';
在setTemplate函数内部。
我认为您已经知道在何处以及如何创建grid phtml文件。