set
02
Scritto da: carlo  | Archivio: Guide Per Magento Commerce, Magento Commerce

Quando si lavora con grandi quantità di dati, non sempre si può fare tutto manualmente. Immaginate di avere un catalogo con diverse migliaia di prodotti e, per qualche motivo, di doverli cancellare tutti senza intaccare l'organizzazione e la categorizzazione delle categorie. Pensare di cancellare un prodotto alla volta manualmente, può portare rapidamente all'esaurimenento nervoso e/o alla pazzia. Dunque, se dovete cancellare tutti i prodotti senza cancellare alcuna categoria, consigliamo vivamente di utilizzare questo script, che funziona anche con la versione 1.4.0.1 di Magento

SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE `catalog_product_bundle_option`;
TRUNCATE TABLE `catalog_product_bundle_option_value`;
TRUNCATE TABLE `catalog_product_bundle_selection`;
TRUNCATE TABLE `catalog_product_entity_datetime`;
TRUNCATE TABLE `catalog_product_entity_decimal`;
TRUNCATE TABLE `catalog_product_entity_gallery`;
TRUNCATE TABLE `catalog_product_entity_int`;
TRUNCATE TABLE `catalog_product_entity_media_gallery`;
TRUNCATE TABLE `catalog_product_entity_media_gallery_value`;
TRUNCATE TABLE `catalog_product_entity_text`;
TRUNCATE TABLE `catalog_product_entity_tier_price`;
TRUNCATE TABLE `catalog_product_entity_varchar`;
TRUNCATE TABLE `catalog_product_link`;
TRUNCATE TABLE `catalog_product_link_attribute`;
TRUNCATE TABLE `catalog_product_link_attribute_decimal`;
TRUNCATE TABLE `catalog_product_link_attribute_int`;
TRUNCATE TABLE `catalog_product_link_attribute_varchar`;
TRUNCATE TABLE `catalog_product_link_type`;
TRUNCATE TABLE `catalog_product_option`;
TRUNCATE TABLE `catalog_product_option_price`;
TRUNCATE TABLE `catalog_product_option_title`;
TRUNCATE TABLE `catalog_product_option_type_price`;
TRUNCATE TABLE `catalog_product_option_type_title`;
TRUNCATE TABLE `catalog_product_option_type_value`;
TRUNCATE TABLE `catalog_product_super_attribute_label`;
TRUNCATE TABLE `catalog_product_super_attribute_pricing`;
TRUNCATE TABLE `catalog_product_super_attribute`;
TRUNCATE TABLE `catalog_product_super_link`;
TRUNCATE TABLE `catalog_product_enabled_index`;
TRUNCATE TABLE `catalog_product_website`;
TRUNCATE TABLE `catalog_category_product_index`;
TRUNCATE TABLE `catalog_category_product`;
TRUNCATE TABLE `cataloginventory_stock_item`;
TRUNCATE TABLE `cataloginventory_stock_status`;
TRUNCATE TABLE `cataloginventory_stock`;
INSERT  INTO `catalog_product_link_type`(`link_type_id`,`code`)
VALUES (1,'relation'),(2,'bundle'),(3,'super'),(4,'up_sell'),(5,'cross_sell');
INSERT  INTO `catalog_product_link_attribute`(`product_link_attribute_id`,`link_type_id`,`product_link_attribute_code`,`data_type`)
VALUES (1,2,'qty','decimal'),(2,1,'position','int'),(3,4,'position','int'),(4,5,'position','int'),(6,1,'qty','decimal'),(7,3,'position','int'),(8,3,'qty','decimal');
INSERT  INTO `cataloginventory_stock`(`stock_id`,`stock_name`)
VALUES (1,'Default');
TRUNCATE TABLE `catalog_product_entity`;
SET FOREIGN_KEY_CHECKS = 1;
Speriamo vi possa essere d'aiuto

set
01
Scritto da: carlo  | Archivio: Magento Commerce, Video Guide

Il Video che segue (in Inglese) mostra tutti i passi per creare un Database MySql e un Utente per Magento Commerce, utilizzando il database Widard di cPanel Fonte: screencastworld.com

ago
31

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: carlo  | 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: carlo  | 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: carlo  | 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: carlo  | 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: carlo  | 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: carlo  | 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
06
Scritto da: carlo  | Archivio: Magento Commerce

Uno dei temi di Magento più caldi - l'argomento su cui riceviamo decine di domande ogni mese - riguarda l'ottimizzazione della velocità degli ecommerce su piattaforma Magento. Come saprete, la velocità è uno dei fattori più importanti, sia per l'usabilità e quindi per gli utenti, sia per Google e gli altri motori di ricerca. A questo proposito, abbiamo messo giù una checklist che può esservi utile come promemoria. Seguendo tutti  i consigli presenti nella checklist vedrete le prestazioni del vostro negozio Magento migliorare a vista d'occhio. Ecco i nostri consigli: - usate un hosting su cui sia installato APC o qualunque altro modulo di caching - assicuratevi di assegnare a MySQL (my.cnf), una quantità di memoria sufficiente - comprimete i file JS e CSS - usate la compressione gzip per tutti i file text-based - configurate il server in base alle vostre esigenze - separate i contenuti statici (immagini, stili, scripts), ospitandoli su un server separato Ma attenzione: tutti questi consigli si rivelano essere inutili se il vostro server non rispetta i requisiti minimi. Se così non fosse, il consiglio è di cambiare immediatamente server con uno ottimizzato per Magento