为了将Magento与Moodle(LMS)集成,我需要用户数据和单个表格中购买的物品的SKU。最接近的表格是sales_flat_quote。如果我只能将购买的SKU分配给那个,那么Moodle可以在登录时检查该表,并将购买的课程添加到用户配置文件中。在自定义模块中添加SKU到Magento中的sales_flat_quote
使用Ivan Chepurnyi's tutorial,这个related post和这个similar thread我已经设法创建一个模块,用于写入测试服务器上的日志。现在它不再做任何事情了。
我有这个在\程序\等\模块\ minerva_moodleConnect.xml:
<?xml version="1.0" encoding="utf-8"?>
<config>
<modules>
<minerva_moodleConnect>
<active>true</active>
<codePool>local</codePool>
</minerva_moodleConnect>
</modules>
</config>
我有这个在\程序\代码\本地\密涅瓦\ moodleConnect \等\ config.xml中:
<?xml version="1.0" encoding="utf-8"?>
<config>
<modules>
<minerva_moodleConnect>
<version>0.0.1</version>
</minerva_moodleConnect>
</modules>
<global>
<models>
<minerva_moodleConnect>
<class>minerva_moodleConnect_Model</class>
</minerva_moodleConnect>
</models>
<resources>
<minerva_moodleConnect>
<setup>
<module>minerva_moodleConnect</module>
<class>Mage_Sales_Model_Mysql4_Setup</class>
</setup>
</minerva_moodleConnect>
</resources>
<events>
<sales_order_place_after>
<observers>
<minerva_moodleConnect>
<type>singleton</type>
<class>minerva_moodleConnect_Model_observer</class>
<method>registerCourse</method>
</minerva_moodleConnect>
</observers>
</sales_order_place_after>
</events>
</global>
</config>
我在\程序\代码得到这个\本地\密涅瓦\ moodleConnect \型号\ observer.php:
<?php
class minerva_moodleConnect_Model_Observer
{
public function __construct()
{
}
public function registerCourse(Varien_Event_Observer $observer)
{
// Retrieve the product being updated from the event observer
Mage::log("register course called");
/* @var $resource Mage_Sales_Model_Mysql4_Order */
/*$resource = $observer->getEvent()->getResource();
$resource->addVirtualGridColumn(
'sku',
'sales/flat_quote',
array('sku' => 'sku'),
'sku'
);*/
}
}
,这在\程序\代码\当地\密涅瓦\ moodleConnect \ SQL \ minerva_moodleConnect_setup \ mysql4安装-0.1.0.php:
<?php
/**
* Setup scripts, add new column and fulfills
* its values to existing rows
*
*/
/* @var $this Mage_Sales_Model_Mysql4_Setup */
$this->startSetup();
// Add column to grid table
$this->getConnection()->addColumn(
$this->getTable('sales/flat_quote'),
'sku',
"varchar(255) not null default ''"
);
// Add key to table for this field,
// it will improve the speed of searching & sorting by the field
$this->getConnection()->addKey(
$this->getTable('sales/flat_quote'),
'sku',
'sku'
);
// Now you need to fullfill existing rows with data from address table
$select = $this->getConnection()->select();
$select->join(
array('sku'=>$this->getTable('sales/flat_quote_item')),
$this->getConnection()->quoteInto(
'sku.sku = flat_quote_item.sku',
Mage_Sales_Model_Quote_Address::TYPE_BILLING
),
array('sku' => 'sku')
);
$this->getConnection()->query(
$select->crossUpdateFromSelect(
array('sku' => $this->getTable('sales/flat_quote'))
)
);
$this->endSetup();
由这点我在很大程度上是猜测有关我的情况的变化。我的想法是,我想复制SKU并呼叫新的行SKU。其他一切都让人觉得很稳固。
在那里有一种善良的灵魂,可以拍我的手腕,让我回到轨道上?
是对Moodle在它在同一个表需要它? sales_flat_quote_item毕竟包含SKU,所以您应该能够使用查询或视图,不是吗? – JNDPNT
感谢您的回复。是的,Moodle希望从一张桌子(SKU和用户信息)得到一切 – nlearnDavid
我得到的一个提示是“它基本上是使用客户数据,产品数据和订单数据创建一个查看表。”将所有这一切整合到一张整洁的表格中“ – nlearnDavid