0

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 を呼び出したいと考えていました。それ以外はかなりしっかりした感じです。

私の手首を平手打ちして、私を軌道に乗せることができる親切な魂がそこにいますか?

4

1 に答える 1

0

次のようなものを使用して、注文テーブルと見積もりテーブルにいくつかのフィールドを追加しています。

<?php
/* @var $installer Mage_Core_Model_Resource_Setup */
$installer = $this;
$installer->startSetup();

Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID));

$installer = new Mage_Sales_Model_Mysql4_Setup;

$attribute  = array(
    'type'          => 'text',
    'backend_type'  => 'text',
    'frontend_input' => 'text',
    'is_user_defined' => true,
    'label'         => 'External Reference',
    'visible'       => true,
    'required'      => false,
    'user_defined'  => false,
    'searchable'    => false,
    'filterable'    => false,
    'comparable'    => false,
    'default'       => ''
);

$installer->addAttribute('order', 'ext_reference', $attribute);
$installer->addAttribute('quote', 'ext_reference', $attribute);

$attribute  = array(
    'type'          => 'text',
    'backend_type'  => 'text',
    'frontend_input' => 'text',
    'is_user_defined' => true,
    'label'         => 'License Plate',
    'visible'       => true,
    'required'      => false,
    'user_defined'  => false,
    'searchable'    => false,
    'filterable'    => false,
    'comparable'    => false,
    'default'       => ''
);

$installer->addAttribute('order', 'licenseplate', $attribute);
$installer->addAttribute('quote', 'licenseplate', $attribute);

$installer->endSetup();
于 2014-09-08T11:11:44.220 に答える