Project supposes simultaneous work of two different systems. On the one part, it is an open-source electronic commerce platform Magento (http://www.magentocommerce.com/), on the other part, it is Drupal CMS (http://www.drupal.org/). Project is called to take the best from each system and unite them in the network of one website. The result of such integration of two systems is a platform, which has Magento as a backend, with all its powerful and easy-to-use means of eCommerce component management. In other words, we use a handy system of store administration from Magento. On the other part, we have Drupal CMS with all its wide range of ready-to-use modules and themes and flexible mechanism of customization (configuration) of website functional. Interaction of these two systems is performed via XML-RPC protocol. An interchange is implemented in both directions. From Drupal part it's a procedure calling for the purpose of acquirement of information of catalog, products, etc., and of quote and order forming. From Magento part it's an XML-RPC methods calling for the purpose of notification about events, happened within Magento system (if such functional is turned on at settings).
A special extension has been developed for Magento, which expands a standard Application Programming Interface (API) and allows to use Magento framework as a backend of model and frontend component to be implemented on any other platform, for example, on Drupal CMS. Creation of quote and order has been added as a main functional to API, together with an acquirement of additional data from Magento. Also the mechanism of notification about events, happened within Magento system and related to integration with side frontend system, has been implemented.
Module "Magento", implementing functional of synchronization Magento data to Drupal database, has been developed for Drupal. Thereby, Drupal CMS possesses a set of data for working with catalog and products. Information of promotion rules is synchronized as well. Besides synchronization, module provides with functional for forming of quote (shopping cart) and order. Check/Money Order and PayPal Website Payments Standard are supported as payment methods.
!!! Allways install corresponding versions of module drupal modules and magento extensions !!!
DRUPAL MODULE VERSION => MAGENTO EXTENSION VERSION REQUIREMENTS
- 6.x-1.4 => 1.3.4
- 6.x-1.3 => 1.3.2
- Supported magento version: 188.8.131.52
- Latest "magento" drupal module pack: 1.4
- Latest "drupal" magento extension: 1.3.4
I know this guide can looks too complicated but it is just too detailed to cover as many things as possible to make installation process more plain and clean.
This is an overview only. You do not need to install anything at this point. Install process will cover installation and initial configuration “Drupal + Magento” making them work together and sync data, Drupal will be used as frontend and fetch data from Magento, where actual data will be stored. We will use fresh and clean Drupal and Magento sites, to avoid misunderstandings, you can apply same approach to existing Magento sites later (however I do recommend you to use clean sites). Drupal will be installed into http://magento.example.com/drupal and Magento into http://magento.example.com/mage .
Installation will consist of several steps:
- Install clean Drupal site.
- Install and enable required modules, make some configuration on Drupal site.
- Install clean Magento site (DO NOT install sample data or make any configurations).
- Install and configure “Drupal” extension on Magento site.
- Install and configure “Magento” module pack on Drupal site.
- Make initial synchronization between Drupal and Magento.
After this is done you should have working ligament of Drupal and Magento. Users, products and categories created in Magento will automatically appear in Drupal (nodes for products and taxonomy terms for categories). End Users will interact only with Drupal Site.
1. Install clean Drupal site
Download latest 6.x version of Drupal from http://drupal.org/. Just install it as is.
2. Install and enable required modules, make some configuration on Drupal site (UPDATED!!!)
2.1 Download latest stable versions of the following modules
- CCK - http://drupal.org/project/cck
- Date - http://drupal.org/project/date
- Filefield - http://drupal.org/project/filefield
- ImageAPI - http://drupal.org/project/imageapi
- Imagecache - http://drupal.org/project/imagecache
- Imagefield - http://drupal.org/project/imagefield
- Transliteration - http://drupal.org/project/transliteration
- Views - http://drupal.org/project/views
you also have to install Services 6.x-0.15 - http://drupal.org/project/services, i know that this is not the latest version, but latest version have changes that require some investigation i haven't done yet. But i'm on it.
2.2 Navigate to Administer > Site building > Modules
Enable following modules: Content, Content Copy, FileField, ImageField, Node Reference, Number, Option Widgets, Text, Date, Date API, Date Popup, Date Timezone, ImageAPI, ImageAPI GD2, ImageCache, Transliteration, Services, XMLRPC Server, System Service, User Service, Views. IT IS CRITICAL TO ENABLE THEM BEFORE ENABLING “MAGENTO” MODULE, since “magento” module will use them during installation process.
2.3 Navigate to Administer > Site building > Services
Copy somewhere XMLRPC server path (you can save link on Servers > XMLRPC - /services/xmlrpc, in my case it was http://magento.example.com/drupal/services/xmlrpc ).
2.4 Navigate to Administer > Site building > Services > Settings
Uncheck “use keys”, check “use sessid” and save configuration.
2.5 Navigate to Administer > User management > Permissions
Grant “access services” permission to both Anonymous and Authenticated users.
3. Install clean Magento site (DO NOT install sample data or make any configurations)
3.1 Download Magento version 184.108.40.206 from here http://www.magentocommerce.com/download (you can see all available version by clicking “release archives” tab at the top of the page).Follow installation guideline for “Default Install” from here http://www.magentocommerce.com/wiki/magento_installation_guide, and DO NOT INSTALL SAMPLE DATA, and scroll page to “Default Install”.
3.2 Navigate to System > Web services > Roles
Add new role called “webservice” (you may call it as you like but to avoid mistakes we will refer to it like “webservice”) and grant it “All” resource access. Save role.
3.3 Navigate to System > Web services > Users
Add new user called “webservice” (you may call it as you like but to avoid mistakes we will refer to it like “webservice”) and assign “webservice” role to it. Save user.
4. Install and configure “Drupal” extension on Magento site
4.1 Navigate to System > Magento Connect > Magento Connect Manager
Paste extension key to install: magento-community/Drupal-1.3.4 and press install button. At the time of this writing the latest “drupal” extension for Magento version is 1.3.4.
provided by davidgraig : If you get an "INVALID POST DATA" when installing locally, you may need to provide Magento with your proxy information, something like this (in magento_directory/downloader/Maged/Pear.php, around line 123):
(thanks to http://www.magentocommerce.com/boards/viewthread/29354/)
4.2 Relogin into Magento admin panel. By some mgento specific Access roles application you cannot access configuration page for “drupal” extension until you do that.
4.3 Navigate to System > Configuration > Magento Extended API
Set notification to YES
Enable event notification: Yes
Next put your XML RPC service path from 2.3
Remote XML-RPC host url: http://magento.example.com/drupal/services/xmlrpc
Next user name and password for Drupal user that have access to services (I strongly recommend you to use root/admin account for this at this point, later you can change it to specific user)
Remote XML-RPC username: root
Remote XML-RPC password: ********
Don’t forget to save settings :)
5. Install and configure “Magento” module pack on Drupal site
Finally we come to the point where we can enable “Magento” Drupal module
5.1 Download latest version of “Magento” Drupal module pack here http://drupal.org/project/magento
Install them all like any other modules, due they will do some complex installation this can take a while. If you follow this instruction closely so far than you should not see any warning or error messages, if you don’t – you may encounter them and this will indicate that modules does not properly installed there for you need to restart process from the point where you go away from instruction. DO NOT PROCEED UNTIL YOU INSTALL CORRECTLY ALL MODULES SINCE FUTURE STEPS WILL AFFECT YOUR EXISTING DATABASE.
5.2 Navigate to Administer > Site Configuration > Magento API Settings
Fill fields with appropriate values
Set the URL of your Magento installation followed by : /api/xmlrpc/
Magento host URL: http://magento.example.com/mage/api/xmlrpc/
provided by davidgraig : for some cases you may need to append /index.php/api/xmlrpc/ instead of just /api/xmlrpc/
Enter user name and password for “webservice” user we have created earlier in Magento
API user: webservice
API key (password): *******
6. Make initial synchronization between Drupal and Magento
6.1 Navigate to Administer > Site Configuration > Magento Synchronization Settings
Manually synchronies initial data between Magento and Drupal, to do this press all 4 synchronization buttons (one by one I mean, not all at the same time :) ). If you see any warnings/errors this mean you doing something wrong earlier.
6.2 Navigate to Administer > Site building > Blocks
Enable “Shopping Cart” block.
When all that is done, you can use your “Drupal + Magento” and enjoy power of both systems. I suggest you to create some products on Magento to check synchronization work properly.