Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Magento产品列表-按产品类型排序(可配置,然后简单)_Php_Magento - Fatal编程技术网

Php Magento产品列表-按产品类型排序(可配置,然后简单)

Php Magento产品列表-按产品类型排序(可配置,然后简单),php,magento,Php,Magento,在/app/design/frontend/default/[theme]/template/catalog/product/list.phtml中,您可以看到下面的代码片段,它可以循环浏览并显示$\u productCollection的内容 <?php $_collectionSize = $_productCollection->count() ?> <?php $_columnCount = $this->getColumnCount(); ?> &l

在/app/design/frontend/default/[theme]/template/catalog/product/list.phtml中,您可以看到下面的代码片段,它可以循环浏览并显示$\u productCollection的内容

<?php $_collectionSize = $_productCollection->count() ?>
<?php $_columnCount = $this->getColumnCount(); ?>
<?php $i=0; foreach ($_productCollection as $_product): ?>
...
<?php endif; ?>

...
我想知道的是如何按产品类型对$\u productCollection进行排序。 最终我想要的是先展示可配置的产品,然后展示简单的产品

非常感谢您的帮助


干杯

使类别视图中的产品集合如此难以定制的原因之一是工具栏、分层导航、实际列表显示之间的耦合,甚至还有
Mage_Review
模块,该模块在事件观察者中显式加载集合

起初,您似乎可以使用典型的收集实用程序(例如,
addAttributeToSort()
)来添加条件,但您会发现这在模板级别不起作用,因为收集数据已经加载。我推测名为
getLoadedProductCollection()
的collection getter方法是核心团队的提示

Magento集合的延迟加载实现是这样的:一旦对它们进行了
load()
ed(直接或间接)加载,它们将不会重新加载(即使用数据库进行事务处理),而不会显式强制执行此操作

因此,在加载集合之前,需要在集合上设置排序参数。通过
getLoadedProductCollection()
方法进行跟踪,可以快速找到
Mage\u Catalog\u Block\u Product\u列表::\u getProductCollection()
方法,在该方法中,块确定它是否位于产品页面上(通过检查注册表,很恶心)。通过调用堆栈跟踪集合的状态,可以确定直到块的
\u beforeToHtml()
方法才加载集合。如果要从输出回溯,可以看到集合是由Mage_Review observer显式加载的,它使用
catalog_block_product_list_集合
事件(请参见
Mage_Review_Model_observer::catalogBlockProductCollectionBeforeToHtml()
)。这给出了一个起点和终点


我希望以后能有个解决办法。

嘿@benmarks,我真的很感激。我已经从该线程中扣除了已加载集合的问题:。但根据评论,它提出了与克隆方法相关的问题。我似乎终于成功了。我还没有完成深入的测试,但实际上我已经用
$\u productCollection=$this->getLoadedProductCollection()
替换了list.phtml中的第一行。这似乎保持了我的分层导航,但排序是可配置的,然后很简单。您需要对工具栏的排序和分页以及评论进行一些测试。我怀疑这两个都会出问题。到目前为止还不错。寻呼工作。无论如何,排序和审阅都是禁用的。谢谢你的帮助。好的,我能预见的唯一问题是,如果你添加捆绑包,这些将在可配置文件之前显示。