Magento を Moodle (LMS) と統合するには、ユーザー データと購入したアイテムの SKU を 1 つのテーブルにまとめる必要があります。最初に最も近いテーブルは、sales_flat_quote でした。購入した SKU をそれに関連付けることができれば、Moodle はログイン時にそのテーブルをチェックし、購入したコースをユーザー プロファイルに追加できます。
Ivan Chepurnyiのチュートリアル、この関連する投稿、およびこの類似のスレッドを使用して、テスト サーバーのログに書き込むために使用されるモジュールを作成することができました。今はもう何もしません。
これは \app\etc\modules\minerva_moodleConnect.xml にあります:
<?xml version="1.0" encoding="utf-8"?>
<config>
<modules>
<minerva_moodleConnect>
<active>true</active>
<codePool>local</codePool>
</minerva_moodleConnect>
</modules>
</config>
これは \app\code\local\minerva\moodleConnect\etc\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>
これは \app\code\local\minerva\moodleConnect\model\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'
);*/
}
}
これは \app\code\local\minerva\moodleConnect\sql\minerva_moodleConnect_setup\mysql4-install-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 を呼び出したいと考えていました。それ以外はかなりしっかりした感じです。
私の手首を平手打ちして、私を軌道に乗せることができる親切な魂がそこにいますか?