ARCHIVIO: Guide Per Magento Commerce

ago
31
Scritto da: Magento Expert  | Archivio: Guide Per Magento Commerce, Magento Commerce, Moduli Per Magento

Magento presenta al suo interno la funzionalità per installare automaticamente i moduli aggiuntivi per il vostro negozio online. Sostanzialmente, tutto quello di cui avete bisogno è l'extension code dopo di che lo script installerà l'estensione in pochi click. Con questo tutorial mostreremo nel dettaglio come installare moduli ed estensioni aggiuntivi di Magento attraverso Magento Connect. Inoltre, vi forniremo le instruzioni per aggiornare i moduli e le estensioni di Magento già esistenti. Prima di tutto dovete accedere all'area di amministrazione di Magento. Successivamente andate a Sistema > Magento Connect > Magento Connect Manager

magento-backend
Magento Connect Manager si aprirà in una nuova pagina, dove vi verranno richieste nuovamente le credenziali di accesso. Userete la stessa username e password che avete utilizzato per accedere alla backend magento-connect-manager-login Dopo aver effettuato l'accesso, vi troverete davanti due sezioni: Extensions e Settings. Si raccomanda, per prima cosa, di verificare le opzioni scelte nella sezione Settings
connect-manager-settings
Nella sezione Settings ci sono due opzioni

ago
30
Scritto da: Magento Expert  | Archivio: Guide Per Magento Commerce, Magento Commerce

Recentemente abbiamo installato la versione 1.4.1.1 di Magento in una sottodirectory e abbiamo ottenuto l'errore che segue: “Fatal error: Call to a member function toHtml() on a non-object in /var/www/vhosts/xxx/httpdocs/shop/app/code/core/Mage/Core/Model/Layout.php on line 529" La causa principale di questo errore è molto semplice ed è qualcosa di molto simile ad un bug. Non c'è bisogno di andare nel file php in questione, non c'è nulla da modificare lì. Nelle nuove versioni di Magento è stato cambiato il modo in cui childHtml e quindi i blocchi vengono richiamati. Essi richiedono un nome. Quando viene installato, Magento usa il tema default/default. Ed ecco dove viene fuori l'errore. Nel vostro file default/default/layout/page.xml troverete una riga (probabilmente la 91) che appare così: <block type=”core/profiler” output=”toHtml” /> In reatà dovrebbe essere così: <block type=”core/profiler” output=”toHtml” name=”core_profiler” /> Con l'aggiunta del nome dell'attributo, tutto funziona bene. Dopo la modifica, pulite la cache e vedrete che la vostra nuova installazione di Magento funzionerà alla perfezione

ago
27
Scritto da: Magento Expert  | Archivio: Guide Per Magento Commerce

Recentemente ci siamo imbattuti in un problema con un nostro cliente, il quale ha creato meticolosamente ogni attributo possibile per ognuno dei suoi prodotti. Il risultato è stato un ecommerce molto userfriendly ma, di contralto, un flat catalougue non funzionante! L'errore che potreste incontrare in Magento è molto vago: "Can't initialize indexer process" In MySql, ogni tabella ha un limite di 65535 bites per quanto riguarda la lunghezza di ogni riga; quando si inseriscono una moltitudine di attributi (nello specifico dropdown/selezioni multiple/testo/immagine), c'è un limite di 255 caratteri. A partire dalla versione 1.3 di Magento i prodotti inseriti nel catalogo con la modalità "flat" soffrono di queste limitazioni, in base al numero e alla combinazione di attributi di prodotto che partecipano all'indicizzazione del prodotto flat. A seconda di cosa i nostri clienti vogliono fare, sarebbe utile avere un estensione per bypassare questo problema e permettere di modificare i parametri di SQL, con il risultato di abbattere il limite di 85 campi di testo/selezione multipla/immagini. Una veloce soluzione (ma non necessariamente quella perfetta) consiste nell'intaccare (o meglio estendere) alcune funzionalità core e sovrascriverle. In Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Flat_Indexer

# ~530
if (!$this->_isFlatTableExists($store)) {
$sql = "CREATE TABLE {$tableNameQuote} (\n";

foreach ($columns as $field => $fieldProp) {
+      if

ago
26
Scritto da: Magento Expert  | Archivio: Guide Per Magento Commerce, Moduli Per Magento

Scenario: Hai creato un modulo personalizzato, hai inserito alcuni dati nel tuo database e hai bisogno di mostrarli random, in maniera casuale. Soluzione: La funzione rand() in MySQL serve ad andare a prendere i dati in maniera casuale. All'interno di Magento, si possono selezionare le righe da mostrare in maniera random dalla tabella MySQL utilizzando Zend_Db_Expr(‘RAND()’). Per fare ciò devi creare una nuova funzione nella classe del tuo modulo (NomedelloSpazio/NomeModulo/Model/Mysql4/NomeModulo/Collection.php)

public function setRandomOrder()
{
	$this->getSelect()->order(new Zend_Db_Expr('RAND()'));
	return $this;
}
Ora puoi andare a prendere i dati dalla tabella in maniera random utilizzando la funzione setRandomOrder appena creata. Il codice che segue può essere inserito in un blocco o nel file template del tuo modulo (.phtml)
$collection = Mage::getModel('yourmodule/yourmodule')
					->getCollection()
					->setRandomOrder();

echo "
"; print_r($collection->getData()); echo "
";
Spero vi sia d'aiuto Fonte: blog.chapagain.com

ago
25
Scritto da: Magento Expert  | Archivio: Guide Per Magento Commerce, Magento Commerce

Nel mio articolo precedente, vi avevo parlato di come cambiare il simbolo della valuta attraverso alcune piccole modifiche sul file Zend (lib/Zend/Locale/Data/en.xml). Rimane il metodo più semplice ma, l'effetto collaterale maggiore che si ha con questo metodo è che tutto scompare ad ogni aggiornamento di Magento. Allora, il metodo migliore consiste nel sovrascrivere le classi dei modelli di Magento che sono responsabili del cambiamento del simbolo della valuta. Scenario Avete bisogno di cambiare il simbolo della valuta delle Rupie Nepalesi (da Nrs a Rs). Il simbolo standard delle Rupie Nepalesi è Nrs. Soluzione Create un nuovo modulo e sovrascrivete due classi di modello 1) Mage_Core_Model_Locale_Currency 2) Mage_Core_Model_Locale Il file Config del mio modulo (MyNamespace/MyModule/etc/config.xml)

	

				MyNamespace_MyModule_Model_Locale_Currency
				MyNamespace_MyModule_Model_Locale
MyNamespace_MyModule_Model_Locale_Currency Classe del mio modulo (MyNamespace/MyModule/Model/Locale/Currency.php) In questa classe ho modificato il simbolo della valuta da Nrs a Rs
class MyNamespace_MyModule_Model_Locale_Currency extends Mage_Core_Model_Locale_Currency
{
	/**
     * Creates a currency instance. Every supressed parameter is used from the actual or the given locale.
     *
     * @param  string             $currency OPTIONAL currency short name
     * @param  string|Zend_Locale $locale   OPTIONAL locale name
     * @throws Zend_Currency_Exception When currency

ago
24
Scritto da: Magento Expert  | Archivio: Guide Per Magento Commerce, Magento Commerce

Dopo quello che sembrava essere stato un aggiornamento perferttamento riuscito da Magento 1.3.4.2 a Magento 1.4.1.0, eseguito atttraverso la command line, mi era impossibile accedere all'area log in. Invece della classica interfaccia per inserire le credenziali di accesso, visualizzavo il seguente errore:

a:5:{i:0;s:31:"Invalid mode for clean() method";i:1;s:2982:"#0 /www/www.yourdomain.com/magento/app/code/core/Zend/Cache/Backend/File.php(532): Zend_Cache::throwException('Invalid mode fo...')
#1 /www/www.yourdomain.com/magento/app/code/core/Zend/Cache/Backend/File.php(538): Zend_Cache_Backend_File->_clean('/www/www.solarg...', 'matchingAnyTag', Array)
#2 /www/www.yourdomain.com/magento/app/code/core/Zend/Cache/Backend/File.php(279): Zend_Cache_Backend_File->_clean('/www/www.solarg...', 'matchingAnyTag', Array)
#3 /www/www.yourdomain.com/magento/lib/Zend/Cache/Core.php(452): Zend_Cache_Backend_File->clean('matchingAnyTag', Array)
#4 /www/www.yourdomain.com/magento/lib/Varien/Cache/Core.php(100): Zend_Cache_Core->clean('matchingAnyTag', Array)
#5 /www/www.yourdomain.com/magento/app/code/core/Mage/Core/Model/Cache.php(376): Varien_Cache_Core->clean('matchingAnyTag', Array)
#6 /www/www.yourdomain.com/magento/app/code/core/Mage/Core/Model/App.php(1088): Mage_Core_Model_Cache->clean(Array)
#7 /www/www.yourdomain.com/magento/app/code/core/Mage/Adminhtml/Model/Url.php(167): Mage_Core_Model_App->cleanCache(Array)
#8 /www/www.yourdomain.com/magento/app/code/core/Mage/Admin/Model/Session.php(95): Mage_Adminhtml_Model_Url->renewSecretUrls()
#9 /www/www.yourdomain.com/magento/app/code/core/Mage/Admin/Model/Observer.php(55): Mage_Admin_Model_Session->login('m4dm1n', 'SOrdbuBbY76wHo', Object(Mage_Core_Controller_Request_Http))
#10 /www/www.yourdomain.com/magento/app/code/core/Mage/Core/Model/App.php(1228): Mage_Admin_Model_Observer->actionPreDispatchAdmin(Object(Varien_Event_Observer))
#11 /www/www.yourdomain.com/magento/app/code/core/Mage/Core/Model/App.php(1209): Mage_Core_Model_App->_callObserverMethod(Object(Mage_Admin_Model_Observer), 'actionPreDispat...', Object(Varien_Event_Observer))
#12 /www/www.yourdomain.com/magento/app/Mage.php(416): Mage_Core_Model_App->dispatchEvent('controller_acti...', Array)
#13 /www/www.yourdomain.com/magento/app/code/core/Mage/Core/Controller/Varien/Action.php(497): Mage::dispatchEvent('controller_acti...', Array)
#14 /www/www.yourdomain.com/magento/app/code/core/Mage/Adminhtml/Controller/Action.php(152): Mage_Core_Controller_Varien_Action->preDispatch()
#15 /www/www.yourdomain.com/magento/app/code/core/Mage/Core/Controller/Varien/Action.php(407): Mage_Adminhtml_Controller_Action->preDispatch()
#16 /www/www.yourdomain.com/magento/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('index')
#17 /www/www.yourdomain.com/magento/app/code/core/Mage/Core/Controller/Varien/Front.php(177): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#18 /www/www.yourdomain.com/magento/app/code/core/Mage/Core/Model/App.php(304): Mage_Core_Controller_Varien_Front->dispatch()
#19 /www/www.yourdomain.com/magento/app/Mage.php(596): Mage_Core_Model_App->run(Array)
#20 /www/www.yourdomain.com/magento/index.php(78): Mage::run('', 'store')
#21 {main}";s:3:"url";s:25:"/magento/index.php/admin/";s:11:"script_name";s:18:"/magento/index.php";s:4:"skin";s:5:"admin";}
Questo lungo messaggio comunicava che la versione di Zend distribuita con la versione 1.4.1.0 di Magento non necessita della directory app/code/core/Zend/Cache. Inizialmente l'ho rinominata in Cache.orig. Poi, dopo aver visto che in questo modo l'errore era risolto, l'ho cancellata completamente. Spero vi sia d'aiuto. Fonte: Screencastworld.com

ago
23
Scritto da: Magento Expert  | Archivio: Guide Per Magento Commerce, Magento Commerce

Il prodotto configurabile è quel particolare tipo di prodotto cui si possono associare altri prodotti. Con il codice che segue si possono individuare tutti i prodotti che sono stati associati ad un dato prodotto configurabile. Ecco il Codice:

/**
 * Load product by product id
 */
$product = Mage::getModel('catalog/product')
					->load(YOUR_PRODUCT_ID);

/**
 * Get child products id (only ids)
$childIds = Mage::getModel('catalog/product_type_configurable')
					->getChildrenIds($product->getId());

/**
 * Get children products (all associated children products data)
 */
$childProducts = Mage::getModel('catalog/product_type_configurable')
						->getUsedProducts(null,$product);
Speriamo vi possa essere d'aiuto

ago
05
Scritto da: Magento Expert  | Archivio: Guide Per Magento Commerce, Magento Commerce

Qualche mese fa, vi abbiamo mostrato come aggiungere il captcha alla form di contatto sul vostro negozio Magento, installando un estensione Oggi, invece, mostreremo come aggiungere il recaptcha a qualunque pagina del vostro Magento, utilizzando il codice. Per aggiungere il Recaptcha è sufficiente aggiungere il codice che segue nel posto in cui desiderate farlo comparire. require_once ‘lib/recaptcha/recaptchalib.php’; $publickey = “xxxxxxxxxxxxxxxxxxxxxxxxxxx’”; // la key si ottiene dalla pagina di iscrizione # the response from reCAPTCHA $resp = null; # the error code from reCAPTCHA, if any $error = null; echo recaptcha_get_html($publickey, $error); ——————————————— app/code/core/Mage/Customer/controllers/AccountController.php Go to createPostAction function if ($this->getRequest()->isPost()) { $errors = array(); —————————————————- /***** start code for recaptcha ***/ require_once ‘lib/recaptcha/recaptchalib.php’; $privatekey = ‘xxxxxxxxxxxxxxxxxxxxxxxxxxx’; $resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $this->getRequest()->getParam(‘recaptcha_challenge_field’), $this->getRequest()->getParam(‘recaptcha_response_field’)); if ($resp->is_valid) { // take no action } else { # set the error code so that we can display it $errors[] = $resp->error; } /*** end of recaptcha option ****/ ——————————————————————- if (!$customer = Mage::registry(’current_customer’)) { $customer = Mage::getModel(’customer/customer’)->setId(null); } Provatelo!

ago
04
Scritto da: Magento Expert  | Archivio: Guide Per Magento Commerce, Magento Commerce

Magento è la piattaforma per l'ecommerce più potente in circolazione, in quanto copre egregiamente tutte le funzioni necessarie per un efficace negozio online. Tuttavia, essendo un progetto open source, alcune funzioni non sono ancora state sviluppate. Tra le funzioni che sono presenti nella roadmap, c'è anche l'implementazione di un comando che permetta di cambiareare l'ordine di default dei prodotti. Nell'attesa che anche questo particolare venga sistemato, se volete modificare il criterio con cui vengono ordinati di default i prodotti, potete utilizzare questa semplice soluzione. Cercate il file toolbar.php all'interno di app/code/core/Mage/Catalog/Block/Product/List Create la cartella in Locale Create la stessa struttura di cartelle in locale. In questo modo tutti gli aggiornamenti che farete non avranno alcun effetto sulle vostre modifiche. La struttura dovrebbe essere così: /app/code/local/Mage/Catalog/Block/Product/List Modificate la Toolbar adesso bisogna modificare una riga. Trovate la riga seguente

/**
     * Default direction
     *
     * @var string
     */
    protected $_direction           = 'asc';
e cambiatela con
/**
     * Default direction
     *
     * @var string
   

ago
03
Scritto da: Magento Expert  | Archivio: Guide Per Magento Commerce, Video Guide

Come per qualunque altro sito, anche nei siti di ecommerce fatti con Magento è fondamentale avere delle ottime landing page. La landing page è la pagina web su cui "atterrano" i visitatore del vostro sito, di solito dopo aver cliccato su un link o su un banner. E' il primo punto di contatto tra voi e i vostri visitatori, quindi è fondamentale che sia costruita per bene e che abbia un buon design. Questo video (in inglese), mostra con molta precisione come creare al meglio una landing page: Landing Pages from dan iavorszky on Vimeo.