Commenti disabilitati su Escludere gli attributi vuoti o nulli in Magento

Per qualche strana ragione, gli sviluppatori di Magento hanno deciso che un attributo vuoto non deve essere vuoto, ma piuttosto “No” o “N/A”, a seconda del suo tipo. Questo non è solo fastidioso, ma in alcuni casi può far vedere informazioni errate il che confonderebbe i visitatori e le vendite potenzialmente perse.

Fortunatamente, c’è una soluzione rapida che risolve il problema. Aprite il file /app/design/frontend/default/template/catalog/product/view/attribute.phtml in un editor e trovare le seguenti righe:

<?php foreach ($_additional as $_data): ?>
    <tr>
        <th class="label"><?php echo $this->htmlEscape($this->__($_data['label'])) ?></th>
        <td class="data"><?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td>
    </tr>
<?php endforeach; ?>

e sostituirle con:

<?php foreach ($_additional as $_data): ?>
    <?php $_attribute = $_product->getResource()->getAttribute($_data['code']);
    if (!is_null($_product->getData($_attribute->getAttributeCode())) && ((string)$_attribute->getFrontend()->getValue($_product) != '')) { ?>
    <tr>
        <th class="label"><?php echo $this->htmlEscape($this->__($_data['label'])) ?></th>
        <td class="data"><?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td>
    </tr>
    <?php } ?>
<?php endforeach; ?>

Salva il file e hai finito.

WordPress 3.6 in now available!

Posted: 3rd Agosto 2013 by Daniele Crupi in Blog, Web News, Wordpress web site
Commenti disabilitati su WordPress 3.6 in now available!

Nuova versione per il popolare CMS, utilizzato da oltre un quinto di tutti i siti mondiali. WordPress 3.6 introduce poche ma interessanti novità che semplificano il lavoro degli autori e degli sviluppatori, con particolare attenzione alla protezione dei contenuti e alla multimedialità. Attualmente è disponibile solo la release in inglese. La traduzione in italiano verrà rilasciata nei prossimi giorni.
Per WordPress 3.6 è stato scelto il nome “Oscar”, in onore del compositore e pianista jazz canadese Oscar Peterson. L’elenco delle novità incluse in questa versione inizia con un nuovo tema, denominato Twenty Thirteen e specifico per i blog ricchi di contenuti multimediali, che permette di adattare il layout a singola colonna su qualsiasi dispositivo. La funzionalità più importante è sicuramente il media player HTML5 integrato. È infatti sufficiente caricare una file video o audio e inserire l’URL nel riquadro di editing. WordPress mostrerà direttamente il player con i pulsanti per la riproduzione all’interno del post pubblicato. Rimanendo in tema multimedialità, con il nuovo CMS è stata migliorata anche l’integrazione con Spotify, Rdio e SoundCloud.
La feature Augmented Autosave permette di salvare automaticamente il lavoro sia in locale che online. Quando l’utente riaprirà il post potrà continuare dal punto in cui ha interrotto la scrittura. Il Post Locking invece è una funzionalità utile nel caso in cui più autori lavorino sullo stesso post. Aggiornata anche l’interfaccia del Menu Editor per semplificare l’aggiunta e la rimozione dei menu. Infine, è stato rivisitato il controllo delle revisioni. Per tornare “indietro nel tempo”, è sufficiente spostare un cursore e vedere le modifiche effettuate sul testo. WordPress indicherà la data e l’ora dei precedenti salvataggi.
Tra le novità riservate agli sviluppatori spiccano le nuove API audio/video che consentono di accedere ai metadati, come i tag ID3. Con WordPress 3.6 sono stati risolti oltre 700 bug.

Leggi qui: WordPress 3.6, media player HTML5 integrato | Webnews

Commenti disabilitati su Magento: Error 404: Page not found in Cms Page

Se entrando da pannello di controllo in CMS -> Pagine il server vi restituisce un errore 404: page not found molto probabilmente è dovuto al fatto che avete eliminato delle store view (ad esempio la lingua inglese o francese), e si sono verificati dei conflitti nel database su quelle pagine di cui non esiste più lo store view corrispondente.

 

Per risolvere questa situazione bisogna semplicemente lanciare questa query nel database:

DELETE FROM cms_page_store WHERE store_id NOT IN (SELECT store_id FROM core_store);

Commenti disabilitati su Magento: Problema nel salvataggio dei metodi di pagamento nella configurazione del backoffice

L’altro giorno non capivo perchè nella pagina dei metodi di pagamento della configurazione di magento, non funzionasse il salvataggio. In pratica quando cliccavo su “Salva Config” non succedeva niente ed il browser non caricava. Mi era venuto il dubbio che fosse il mio browser ed effettivamente ho scoperto che è un bug di Chrome.

Per risolverlo basta semplicemente modificare il file \app\design\adminhtml\default\default\template\system\config\edit.phtml aggiungendo l’attributo name=”configForm” nella form circa alla linea 47.

Rimanendo in tema di bug dei browser (o di codice scritto male :D), oggi mi è capitato di risolvere un problema che riguarda Firefox 20.0 e l’inserimento di immagini attraverso l’editor di Magento.

L’errore che la console genera  quando si cerca di inserire un’immagine è questo:

 opener is null in browser.js

La soluzione è molto semplice e dovuta al conflitto tra variabili.

1. apri il file /js/mage/adminhtml/browser.js 
2. trova la funzione getTargetElement alla linea 228: 

getTargetElement: function() {
if (typeof(tinyMCE) != ‘undefined’ && tinyMCE.get(this.targetElementId)) {
if ((opener = this.getMediaBrowserOpener())) {
var targetElementId = tinyMceEditors.get(this.targetElementId).getMediaBrowserTargetElementId();
return opener.document.getElementById(targetElementId);
} else {
return null;
}
} else {
return document.getElementById(this.targetElementId);
}
} 

3. cambia il nome della variabile opener, ad esempio opener2….facile no?!

getTargetElement: function() {
if (typeof(tinyMCE) != ‘undefined’ && tinyMCE.get(this.targetElementId)) {
if ((opener2 = this.getMediaBrowserOpener())) {
var targetElementId = tinyMceEditors.get(this.targetElementId).getMediaBrowserTargetElementId();
return opener2.document.getElementById(targetElementId);
} else {
return null;
}
} else {
return document.getElementById(this.targetElementId);
}
}

Se vi compaiono questi errori con Magento 1.3.xPHP 5.3.x:

Fatal error: Method Varien_Object::__tostring() cannot take arguments

Function split() is deprecated in …… on line xxx

Seguite le istruzioni per risolverli:

1. Apri lib/Varien/Object.php  e alla linea 484 sostituisci

public function __toString(array $arrAttributes = array(),
$valueSeparator=',')

con

public function  __invoke(array  $arrAttributes = array(),
$valueSeparator=',')

 

2. Apri app/code/core/Mage/Core/Controller/Request/Http.php e alla linea 199 sostituisci

$host = split(':', $_SERVER['HTTP_HOST']);

con

$host = explode(':', $_SERVER['HTTP_HOST']);

 

3. Apri app/code/core/Mage/Admin/Model/User.php e alla linea 374 sostituisci

$nodePath = 'adminhtml/menu/' . join('/children/', split('/', $startupPage)) . '/action';

con

$nodePath = 'adminhtml/menu/' . join('/children/', explode('/', $startupPage)) . '/action';

 

4. Apri app/code/core/Mage/Catalog/Attribute/Backend/Sortby.php e alla linea 88 sostituisci

$object->setData($attributeCode, split(',', $data));

con

$object->setData($attributeCode, explode(',', $data));

 

La funzione Split è stata DEPRECATA dal PHP 5.3.0.