Ho avuto grandi difficolta nell'aggiornamento di Magento dalla versione 1.3 alla versione 1.4. Non so se le difficoltà sono dovute alla personalizzazione che ho fatto al mio magento, alla grandezza del mio database o cos'altro, maho sbattuto la testa contro la mostruosità di Magento. Di seguito, troverete il percorso che ho seguito dopo che il normale processo di aggiornamento di Magento non è andato a buon fine. Invece di eseguire l'aggiornamento su Magento Connect oppure semplicemente usando un aggiornamento di filesystem per aggiornare il database, ho scelto di mettere su una nuova installazione di Magento e di utilizare l'importazione del profilo per ripristinare il mio store online. Questa è stata la mia procedura. L'ho eseguita su un server locala xxamp e poi ho spostato tutto in una sotto directori del nostro web server e, quando tutto funzionava così come volevo, ho copiato il tutto sulla root in modo che andasse "live". Assicuratevi che il vostro attuale negozio ecommerce sia online, in modo che potete esportare i dati e copiare le impostazioni da lì. 1. Create un database completamente nuovo, un nuovo utente che abbia tutti i permessi di accesso su quel db e appuntatevi le informazioni 2. Crate la cartella per l'installazione 3. Scaricate
ARCHIVIO: Guide Per Magento Commerce
In questo articolo vi spiegherò come aggiungere attributi per le categorie del vostro negozio Magento. Dal pannello di controllo, è possibile aggiungere soltanto gli attributi ai prodotti. Per aggiungere gli attributi alle categorie, bisogno scrivere una query sql in phpmyadmin oppure, ancora meglio, creando un nuovo modulo personalizzato ed aggiungendo gli attributi alla categoria dal file di setup di mysql del modulo. Con "file di setup di mysql", intendo il file che si trova all'interno della directory NomeSpazio/NometuoModulo/sql/NometuoModulo_setup/ Create un nuovo modulo e scrivete quanto segue nel file di setup di mysql all'interno del vostro modulo.
$installer = $this;
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$installer->startSetup();
$setup->addAttribute('catalog_category', 'my_attribute', array(
'group' => 'General',
'input' => 'text',
'type' => 'varchar',
'label' => 'My Attribute',
'backend' => '',
'visible' => 1,
'required' => 0,
'user_defined' => 1,
Ecco la procedura per installare una nuova lingua sul vostro Magento Store 1. Scaricare la traduzione desiderata attraverso Magento Connect 2. Dopo averla installata, andare a Sistema > Gestione Negozi > Crea Vetrina. Inserire i dati e Salvare 3. Andare a Sistema > Configurazione > Ambito della Configurazione Corrente (Selezionare la propria lingua dal menu dropdown) e, dalla barra destra, sotto "opzioni Locali", selezionare la lingua desiderata Fonte: fooit.blogspot.com
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
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
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
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
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
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
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
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



















Clicca qui per