在不破坏传呼机的情况下获取第一个收集项

如何解决在不破坏传呼机的情况下获取第一个收集项

| 我早些时候发布了一个有关此问题的信息,但是现在我有更多信息,我认为最好发布一个新的而不是修改(对不起,如果这不是正确的协议)。您可以在这里找到我的原始问题。 无论如何,最初的问题是我想在设置集合之后立即检查List.PHP类中集合中的第一项,以便我可以抓取类别并使用它来显示评论。这些都是基于自定义模块的,因此存在很多变量。此后,我在认的Magento示例商店中尝试了此操作,仅在
app/code/core/Mage/catalog/Block/Product/List.PHP
添加了一行以中断寻呼机。这是详细信息。如果您对为什么会发生这种情况有任何想法,请告诉我,因为我被困住了 首先,打开
app/code/core/Mage/catalog/Block/Product/List.PHP
并找到
_getProductCollection
功能。在
if (is_null...)
块的末尾添加
$_foo123 = $this->_productCollection->getFirstItem();
,这样您将获得一个类似于以下内容函数
protected function _getProductCollection()
{
    if (is_null($this->_productCollection)) {
        $layer = $this->getLayer();
        /* @var $layer Mage_Catalog_Model_Layer */
        if ($this->getShowRootCategory()) {
            $this->setCategoryId(Mage::app()->getStore()->getRootCategoryId());
        }

        // if this is a product view page
        if (Mage::registry(\'product\')) {
            // get collection of categories this product is associated with
            $categories = Mage::registry(\'product\')->getCategoryCollection()
            ->setPage(1,1)
            ->load();
            // if the product is associated with any category
            if ($categories->count()) {
                // show products from this category
                $this->setCategoryId(current($categories->getIterator()));
            }
        }

        $origCategory = null;
        if ($this->getCategoryId()) {
            $category = Mage::getModel(\'catalog/category\')->load($this->getCategoryId());
            if ($category->getId()) {
                $origCategory = $layer->getCurrentCategory();
                $layer->setCurrentCategory($category);
            }
        }
        $this->_productCollection = $layer->getProductCollection();

        $this->prepareSortableFieldsByCategory($layer->getCurrentCategory());

        if ($origCategory) {
            $layer->setCurrentCategory($origCategory);
        }

        //THIS LINE BREAKS THE PAGER
        $_foo123 = $this->_productCollection->getFirstItem();
    }

    return $this->_productCollection;
}
现在,只需转到使用该类的任何产品列表(例如类别视图),您就会明白我的意思。无论您在工具栏中的每页显示XX下选择什么,它始终会向您显示列表中的所有项目。如果您注释掉那个
$_foo123...
行,它就可以正常工作。 是什么赋予了?? 附言我知道我不应该编辑核心文件...这只是一个例子:)     

解决方法

        原因是因为在集合上调用ѭ7(或几乎任何其他检索方法)时,该集合已加载。任何后续操作都将忽略数据库并仅使用加载的数据,过滤器无效,因为它们仅是SQL,对于分页和选定的列也是如此。解决方法是使用基于第一个的第二个集合。
$secondCollection = clone $firstCollection;
$secondCollection->clear();
$_foo123 = $secondCollection->getFirstItem();
“ 9”方法将卸载该集合的数据,从而迫使其下次再次访问数据库。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?