小编Sub*_*urf的帖子

Magento:从产品系列中获取所有产品,忽略设定的限制?

我想迭代块Mage_Catalog_Block_Product_List_Toolbar中给出的产品集合中的所有产品,忽略"setPageSize()"和"setCurPage()"之前设置的限制.我的方法如下所示:

/** @var Mage_Catalog_Block_Product_List_Toolbar $this */
//...
$collection = $this->getCollection();
// Remove the LIMIT and OFFSET parts from the generated SQL query:
$collection->getSelect()->reset(Zend_Db_Select::LIMIT_COUNT);
$collection->getSelect()->reset(Zend_Db_Select::LIMIT_OFFSET);
// Reload the collection using the new SQL query:
$collection->load();
foreach($collection as $product)
{
    // ...
}
// ...
Run Code Online (Sandbox Code Playgroud)

问题是,集合似乎没有重新加载,因此之前设置的限制仍然存在.我在这里错过了什么?集合是锁定还是某种东西让我无法改变它?

collections magento

8
推荐指数
1
解决办法
6847
查看次数

Doctrine 2 DQL CONCAT字段和常量字符串

我有字段firstnamelastname我的MySQL表.为方便起见,我想在我的Doctrine 2实体中添加一个计算列full_name.在普通的MySQL中我会做这样的事情

SELECT CONCAT(firstname, " ", lastname) AS full_name FROM customers;
Run Code Online (Sandbox Code Playgroud)

但是,连接字段和常量字符串(在这种情况下为"")似乎不适用于Doctrine的CONCAT实现.使用以下代码时

$repository
    ->createQueryBuilder('customer')
    ->select('CONCAT(customer.firstname, " ", customer.lastname) AS full_name')
    // ...
Run Code Online (Sandbox Code Playgroud)

我收到了错误

[Syntax Error] line 0, col 91: Error: Expected StateFieldPathExpression | string | InputParameter | FunctionsReturningStrings | AggregateExpression, got '"'
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现与MySQL相同的行为?

mysql string concat doctrine-orm

6
推荐指数
1
解决办法
1万
查看次数

Magento:以编程方式更改小部件的配置

我想在窗口小部件的代码中更改并保存窗口小部件的配置.我正在寻找这样的东西:

class My_Module_Block_Widget
    extends Mage_Catalog_Block_Product_List
    implements Mage_Widget_Block_Interface
{
    // ...
    protected function _beforeToHtml()
    {
        // ...
        if(/* data needs to be changed */)
        {
            // assuming "widget_config_data" to be one of the widget's
            // parameters configured in the etc/widget.xml file of my module
            $this->setData("widget_config_data", "New Data");
            $this->save();
        }
        // ...
    }
    // ...
}
Run Code Online (Sandbox Code Playgroud)

由于小部件不是模型,因此它们没有save()方法.那么如何保存我的小部件的已更改数据?

config widget magento

5
推荐指数
1
解决办法
2895
查看次数

Magento:如何检索(即)分组产品的最低价格?

我试图在Magento 1.7.0.2的产品视图页面上显示分组产品的价格,就像它显示在类别产品列表中一样("起始于:xx.xx").我以为我可以用

$this->getPriceHtml($_product, true);
Run Code Online (Sandbox Code Playgroud)

这样做是因为它在类别产品列表中的工作方式相同,但是作为我在Magento中尝试做的所有事情,它并不那么容易,因为该方法不会在产品视图页面上返回任何内容.

我更深入地了解了Magento的代码,并发现问题的原因是产品视图页面上没有设置产品的最低价格数据($ _product-> getMinimalPrice()返回null).

因此,我做了一些关于如何加载产品最低价格的研究,这提出了类似的想法

$_product->getPriceModel()->getMinimalPrice($_product);
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为显然该方法已被弃用并在最后一次更新中被删除或

$priceModel = Mage::getResourceModel('catalogindex/price');
$priceModel->setStoreId(Mage::app()->getStore()->getId());
$priceModel->setCustomerGroupId(Mage::getSingleton('customer/session')->getCustomerGroupId());

$minimalPrices = $priceModel->getMinimalPrices(array($_product->getId()));
$minimalPrice = $minimalPrices[0];
$_product->setData('minimal_price', $minimalPrice['value']);
$_product->setData('minimal_tax_class_id', $minimalPrice['tax_class_id']);
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为表'catalogindex_minimal_price'为空.

所以我的问题是,Magento如何在产品列表中加载最低价格?

magento

5
推荐指数
1
解决办法
8264
查看次数

Propel 2:使用子查询作为虚拟列的值

我们有一个包含所有产品的表格和一个包含所有订购商品的单独表格.订购的商品基本上是订购产品的副本,与其源产品(通过外键)有关,而附加数据仅与订购商品相关,如订购数量.

这样我们就可以确保订单数据的一致性,因为即使我们将来可能会删除旧产品,旧订单仍然会以订单商品的形式包含所有订购的产品.订单和订单商品通过简单的交叉引用表(如Propel文档中的那个)连接,只有两个字段order_id和item_id.

现在我必须实现一个计算尚未发货的产品的订购数量的功能,因此我们可以跟踪我们仍有多少库存可供销售以及实际已经销售了多少,但不是尚未发货.

为了实现这一点,我必须选择与给定源产品相关的所有项目,这些项目仅属于未发货订单,然后对这些项目的数量字段进行求和.这看起来像Propel2中的以下内容:

$ordered_qty = ItemQuery::create()
    // Sum up the quantity of all ordered items and only select this one column
    ->withColumn('SUM(Item.Qty)', 'ordered_qty')
    ->select('ordered_qty')
    // join with the cross referencing table between orders and order items 
    // so we can join with the actual order data in the next step
    ->leftJoinOrderItemCrossRef()
    // join with the order data so that we can filter out 
    // already shipped (= archived) orders
    ->leftJoin('OrderItemCrossRef.Order')
    ->addJoinCondition('Order', 'Order.IsArchived != 1')
    // only find the items …
Run Code Online (Sandbox Code Playgroud)

php mysql propel

4
推荐指数
1
解决办法
3452
查看次数

Magento:在安装脚本中为分组产品添加新属性

我正在为分组产品开发一个小的Magento扩展.这个扩展需要另一个属性,所以我想我可以编写一个设置脚本,为分组产品添加一个新属性.但就像我在Magento尝试做的几乎所有事情一样,事实证明这比我预期的要复杂得多.官方Magento论坛没有真正的帮助,所以我希望在这里得到一些支持:)

新属性应仅出现在分组产品的"常规"选项卡中; 简单的产品,可配置的产品,捆绑产品等应该保持不变.该属性应该独立于所选属性集,就像它是一个系统属性一样.

为此,我想我可以将属性添加到分组产品的实体中,但正如我所知,对于分组产品没有特殊实体,一般只有产品"catalog_product".因此我的下一个想法是,我需要将属性添加到"catalog_product"实体,然后将其分配给正确的属性组,以便它仅适用于分组产品.

问题是我还没有那么深入Magento而且我完全不知道我应该如何找到相应的属性组,或者我的想法是否会起作用,也许我完全走错了轨道:/

只是为了让你知道到目前为止我得到了什么:我在扩展程序的配置文件中注册了我的安装脚本并且它正在执行,唯一的问题是安装脚本本身,它看起来像下面的atm,因为 - 正如我所说 - 我有还没有任何线索:

$installer = $this;
$installer->startSetup();
$installer->addAttribute("catalog_product", "my_attrib_name", array( /* just a placeholder */ ));
$installer->endSetup();
Run Code Online (Sandbox Code Playgroud)

非常基本......

php installation attributes add magento

3
推荐指数
1
解决办法
2175
查看次数

Magento:获取tablerate运输模块的所有配置费率

我坚持认为应该是一个小问题,但我找不到解决方案.

我正在研究一个必须通过所有配置的tablerate运输模块速率的模块.但是,我如何获得所有配置的费率,而不仅仅是符合给定条件的费率?我查看了相应资源模型的代码("shipping/carrier_tablerate"),并看到getRate($ request)-method将select查询限制为1,因此只返回1个rate.

有没有一种简单的方法来获得所有配置的费率?是否有内置方法可以执行此操作,还是必须执行自己的数据库操作?

shipping magento

1
推荐指数
1
解决办法
2503
查看次数