PHP / Magento – foreach中的变量未正确更新
发布时间:2020-12-13 21:43:01 所属栏目:PHP教程 来源:网络整理
导读:我在magento模板中遇到foreach循环问题: $cats = Mage::helper('catalog/category')-getStoreCategories();foreach ($cats as $cat) { if($cat-getIsActive()$cat-getProductCount()) { echo "div class="grid_6""; echo $this-getLayout()-createBlock('
我在magento模板中遇到foreach循环问题:
$cats = Mage::helper('catalog/category')->getStoreCategories(); foreach ($cats as $cat) { if($cat->getIsActive()&&$cat->getProductCount()) { echo "<div class="grid_6">"; echo $this->getLayout()->createBlock('catalog/product_new') ->setTemplate('catalog/product/new.phtml') ->setCategoryId($cat->getId()) ->setColumnCount(2) ->setBlockTitle("Just Added in <a href=".$cat->getUrl().">".$cat->getName()."</a>") ->toHtml(); echo "</div>"; } } 当一个相同的块重复4次(我有4个主要类别),它应该显示4个不同的块,每个类别一个.就好像每个新迭代都没有更新$cat-> getId(),$cat-> getName()和$cat-> getUrl()语句. 我在这做错了什么? 谢谢… 解决方法
这里只是一个猜测,但看起来catalog / product_new块不是设计为在一个请求上多次使用.如果你看一下Mage_Catalog_Block_Product_New中的类定义,它的伪构造函数包括以下内容:
$this->addData(array( 'cache_lifetime' => 86400,'cache_tags' => array(Mage_Catalog_Model_Product::CACHE_TAG),)); cache_lifetime和cache_tags属性的存在是Magento的布局渲染系统提示应该缓存此块的提示. 所以,正在发生的是第一次渲染块时,结果会被缓存.下次渲染块时,不会重新渲染块,而是将结果从缓存中拉出. 我的建议是创建一个自定义代码模块,编写一个扩展旧块类的新块类,并以一种“允许”多次渲染块的方式重新定义_construct或getCacheKeyInfo. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 通过get,php在url和security中传输数据
- php – Fedex Web Services:ERROR 9040 – 无法启动跟踪
- PHP使用curl请求实现post方式上传图片文件功能示例
- 深入掌握include_once与require_once的区别
- PHP array_pop():删除数组末尾的元素
- 什么 – >在PDO PHP中意味着什么?
- PHP 数据库树的遍历方法
- php – 根据WordPress中的帖子类别为Post创建管理员菜单
- php – 在DOMDocument-> load()上捕获404错误
- Visual Studio 2003“无法启动调试 没有正确安装调试器“请