爲了將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