Consulente ecommerce

Professionalità ed esperienza al servizio del tuo E-commerce!

magento

No public Twitter messages.





Capita di dover accedere a dati esterni al nostro magento, o addirittura in database che risiedono in host diversi da quello del magento.

E’ necessario quindi indicare al nostro modulo o estensione personalizzata i parametri di accesso al database; attualemente sto utilizzato la versione 1.4.2 di Magento che riesce a collegarsi solamente ad un database Mysql, se qualcuno di voi ha notizie di come collegare magento a postgres mi faccia sapere, sarò lieto di pubblicare la soluzione.

Quindi andiamo nel nostro file config.xml all’interno della directory nostrmodulo/etc/config.xml e inseriamo il seguente codice:

 

<?xml version="1.0"?>
<config>
    <global>
        <modules>
            <my_module>
                <version>0.1.0</version>
            </my_module>
        </modules>
        <helpers>
            <my_module>
                <class>My_Module_Helper</class>
            </my_module>
        </helpers>
        <resources>
                <externaldb_write>
                        <connection>
                                <use>externaldb_database</use>
                        </connection>
                </externaldb_write>
                <externaldb_read>
                        <connection>
                                <use>externaldb_database</use>
                        </connection>
                </externaldb_read>
                <externaldb_setup>
                        <connection>
                                <use>core_setup</use>
                        </connection>
                </externaldb_setup>
                <externaldb_database>
                        <connection>
                                <host><![CDATA[hostname oppure ip]]></host>
                                <username><![CDATA[username da inserire]]></username>
                                <password><![CDATA[password da inserire]]></password>
                                <dbname><![CDATA[database name da inserire]]></dbname>
                                <model>mysql4</model>
                                <type>pdo_mysql</type>
                                <active>1</active>
                        </connection>
                </externaldb_database>
        </resources>
    </global>
    <frontend>
        <routers>
            <mymodule>
                <use>standard</use>
                <args>
                    <module>My_Module</module>
                    <frontName>mymodule</frontName>
                </args>
            </mymodule>
        </routers>
        <layout>
            <updates>
                <mymodule>
                    <file>mymodule.xml</file>
                </mymodule>
            </updates>
        </layout>
    </frontend>
</config>

Ora che abbiamo configurato il nostro modulo per accedere ad un database mysql esterno personalizzato dobbiamo creare il codice in grado caricare la connessione al database e passare query a questo. Per farlo inseriremo un metodo di esempio nell’Helper del nostro modulo (cartella che contiene classi e funzioni di utilitità) nel seguente file nostrmodulo/Helper/Data.php:

class My_Module_Helper_Data extends Mage_Core_Helper_Abstract {
    public function getDataFromDb(){
	$resource	= Mage::getSingleton('core/resource');
	$conn 		= $resource->getConnection('externaldb_read');
        $queryString = "select * from table_example";

	$results 	= $conn->fetchAll($queryString);
        Mage::log($results);
        foreach($results as $row) {
            echo var_dump($row);
        }

    }
}

Ecco fatto, basterà attivare il modulo nel file app/etc/modules/My_Module.xml nel seguente modo e richiamare l’helper nel controller o ovunque sia necessario.

<?xml version="1.0"?>
<config>
         <modules>
                <My_Module>
                        <active>true</active>
                        <codePool>local</codePool>
                </My_Module>
         </modules>
</config>

Per richiamare l’helper all’interno del controller create il file My_Module/controllers/IndexController.php:

class My_Module_IndexController extends Mage_Core_Controller_Front_Action
{
	public function indexAction()
	{
                $result = Mage::helper("my_module)->getDataFromDb();
		$this->loadLayout(array('default'));
		$this->renderLayout();
	}

}

Ciao e alla prossima!

Altri posts


Login with Facebook:

Soluzioni POS (point of sale)

Parlare di POS (dall'inglese "Point of Sale"), significa fare riferimento ...

Ottimizzare i propri feed vers

Se avete molti feed prodotti saprete già che mantenerli ed ...

Magento Community Edition Vs M

Quando si decide di far crescere il proprio business e ...

L'evoluzione di Internet in 10

Ecco una interessante infografica che mostra come si è evoluto ...

Misurare le performance del co

In questo breve post vi mostrerò come misurare le performance ...