Magento - 获取产品集合的结果视图 HTML

2024-03-28

我从网络服务中获取了 magento id 列表。我将它们加载到数组中$product_ids,所以我有这样的东西:

Array
(
    [0] => 1965
    [1] => 3371
    [2] => 1052
)

然后我可以将其制作成一个集合:

$collection = Mage::getModel('catalog/product')->getCollection()
            ->addIdFilter($product_ids);

使用我的 Magento 检查器,我发现类别页面使用了该类Mage_Catalog_Block_Product_List http://docs.magentocommerce.com/Mage_Core/Mage_Core_Block_Abstract.html显示产品列表。我想在我的课堂上做类似的事情。我尝试过加载:

$ProductList = new Mage_Catalog_Block_Product_List();
$ProductList->setCollection($collection);

然后我尝试加载结果的 HTML,如下所示:

$CollectionHTML = $ProductList->_toHtml();

But $CollectionHTML是空的。

我如何获取您在列表视图中看到的内容的 HTML(即 frontend/base/default/template/catalog/product/list.phtml 的生成输出,但给定我的集合)?


在 Magento 中使代码以正确的方式工作比尝试使用丑陋的遗留代码要容易得多。当您有具体问题时,我很乐意帮助您以正确的方式编写代码。此外,从长远来看,技术债务的成本将会更高。

无论如何,回到你的问题。

在 Magento 块中,不像任何应用程序那样被实例化$myvar = new className... 几乎从不。本教程 http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-4-magento-layouts-blocks-and-templates可以帮助您更好地理解Magento的布局和块。

但如果你想创建一个块,方法是:

$block = Mage::getSingleton('core/layout')->createBlock('catalog/product_list')

现在与您的产品系列相关,您应该检查如何Mage_Catalog_Block_Product_List::_getProductCollection实际上是有效的,因为它使用分层导航,而不是简单的产品集合。

此外,假设至少您正在使用 Magento 控制器并且位于函数内,以下代码将显示指定类别的产品的首页:

//$category_id needs to be set
$layout = Mage::getSingleton('core/layout');
$toolbar = $layout->createBlock('catalog/product_list_toolbar');
$block = $layout->createBlock('catalog/product_list');
$block->setChild('toolbar', $toolbar);
$block->setCategoryId($category_id);
$block->setTemplate('catalog/product/list.phtml');  
$collection = $block->getLoadedProductCollection();
$toolbar->setCollection($collection);
//render block object 
echo $block->renderView();  

显示特定的 id:

  • 您将根类别 id 用于 $category_id 变量(还要确保设置了显示根类别(或包含您的产品 id 的另一个类别 id)
  • 你可以挂钩catalog_block_product_list_collection将您的 ID 过滤器添加到集合中的事件(这在_beforeToHtml功能)

但是,所有这些构造并不牢固,仍然有一些需要注意的地方(其他子块、过滤器等)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Magento - 获取产品集合的结果视图 HTML 的相关文章

  • Magento:更改默认语言

    我又搜索了几个小时 所以我在这里 如何将 Magento 中的默认 英语 语言更改为任何其他语言 基本上 我希望 B 店的所有客户默认首先到达该网站的法语版本 而不是英语版本 多谢 在管理菜单中系统 gt 配置 显示的第一个选项卡应该是Ge
  • Magento - 获取产品集合的结果视图 HTML

    我从网络服务中获取了 magento id 列表 我将它们加载到数组中 product ids 所以我有这样的东西 Array 0 gt 1965 1 gt 3371 2 gt 1052 然后我可以将其制作成一个集合 collection
  • Magento - 在控制器和块之间传递数据

    非常快速和简单的问题 但我找不到一个合适的答案 将数据从控制器传递到 Magento 中的块的最佳方法是什么 如果它有所不同 我将按如下方式加载布局 this gt loadLayout array default myModule def
  • 通过简单的产品 URL 预先选择可配置的产品选项

    如果请求的网址用于简单产品 如何显示带有预选选项的可配置产品 例如 简单的产品 1 has Color Red URL simple red html 简单的产品 2 has Color Green URL simple green htm
  • magento 获取 Base Url 、 Skin Url 、 Media Url 、 Js Url 、 Store Url 和 Current Url 以确保安全

    我是新手magento 我正在开发一个模块 为此我有一些css andjs我想要显示链接的文件 我目前有类似的链接 但在浏览了一些链接后 我发现链接应
  • Magento - 公共产品页面中的 404 错误

    我有一个 Magento 1 7 网页宽度 2 个不同语言的商店 每个商店的宽度不同 当我为第二个商店启用产品时 第二个商店的公共产品页面停止运行 现在出现了 404 错误 但第一家商店的产品页面仍然表现良好 所有其他页面均正常工作 htt
  • Magento 图片上传表单字段

    我跟着这个链接 http www magentocommerce com wiki 5 modules and development admin how to create pdf upload in backend for own mo
  • 控制器文件已加载,但类不存在

    我在 Magento 中遇到此错误时遇到问题 控制器文件已加载 但类不存在 完整堆栈位于底部 我本质上是想遵循本教程 在 Magento 中创建新模块 HelloWorld http magento4u wordpress com 2009
  • 在 Magento 中以编程方式创建 CMS/页面

    我看到了下面这个帖子的回复Magento 静态 CMS 块存储在哪里 https stackoverflow com questions 4932652 where are magento static cms blocks stored关
  • Magento:设置集合限制

    我试图找出的问题是如何对集合设置限制 我在 Google 上找到的答案仅适用于具有 setPage pageNum pageSize 的目录 这对任何其他集合都不起作用 请参阅下面的答案 做这件事有很多种方法 collection Mage
  • 如何从magento前端上传产品图片

    我正在尝试在管理面板中上传产品的图片 它工作正常 但现在我想在前端上传产品的图像 我的意思是客户可以从前端上传产品的图像 那么这怎么可能呢 首先在媒体 导入中上传图像 if isset FILES file name FILES file
  • 如何配置 Magento Enterprise 使用 Solr 作为主要搜索引擎?

    我尝试寻找文档 但它非常稀疏 我编写了以下指南 希望它可以帮助人们节省 2 3 个小时的安装 设置和配置时间 与 MySQL 全文搜索标准设置相比 使用 Solr 带来的性能提升非常惊人 在您的 Magento 安装中让它工作绝对值得花时间
  • 卸载 Magento 自定义扩展及其数据库

    我创建了一个扩展并创建了扩展的 zip 文件 以便我可以通过 Magento Connect 安装它 当我使用 Magento Connect 卸载自定义扩展时 它只会删除我的扩展文件和文件夹 但不会删除我的扩展的数据库表 我还想删除我的数
  • magento - 无法与 PayPal 网关通信

    有什么解决办法吗 我已经在配置 gt gt 系统 gt gt 支付方式 gt gt PayPal支付解决方案中禁用了SSL验证 但还是不行 您需要禁用 SSL 验证 进入后台 系统 gt 配置 gt 付款方式 找到PayPal Expres
  • Magento - 分页生成错误的 URL

    除了网址之外 我的分页工作正常 第 2 页的链接是 example com products 21p 2 什么时候应该是 example com products p 2 当我在地址栏中输入后者时 它工作正常 这是生成链接的代码 li a
  • 将搜索栏从 magento 主页的标题中移动

    我是 magento 的新手 我想将搜索栏从标题移动到主页的中间位置 以便它仅显示在主页上 我在 magento 论坛上阅读了许多相关答案 但所有人都在尝试编辑 box css 中的 mini search 元素 但不幸的是我在此文件中没有
  • Magento:每个订单限制类别中的 3 个产品

    我正在尝试在 Magento 中设置一个示例产品类别 允许人们每次购买时最多选择 3 个免费样品 但如何限制每个订单仅从该类别中选择 3 个样品 EDIT 这是 app code local MagePal LimitCartProduct
  • 为什么在网关取消的订单状态没有转换为“ payment_pending ”?

    我正在使用 Magento 社区 ver1 6 1 0 我在 Magento wiki 上找到了这个状态图http www magentocommerce com wiki 2 magento concepts and architectu
  • Magento 2 REST API 客户自定义属性

    Magento 2 REST API 文档解释了在更新或创建客户时设置custom attributes 的方法 http devdocs magento com swagger index 20 html http devdocs mag
  • isSaleable() 和 isAvailable() 有什么区别?

    我正在我的 Magento 主题的 单个 产品页面上显示库存可用性 但有些事情我并不完全理解 我看到模板中使用了两种方法来检查产品是否可供销售 Mage Catalog Model Product isAvailable Mage Cata

随机推荐