Salve a tutti, premetto di essere un neofita di Magento e nemmeno una cima in programmazione.
Il mio problema è il seguente:
Lavoro su Magento 1.9.3.1 e sto cercando di sviluppare un eCommerce di una casa editrice.
Volendo mantenere come Tema di base il tema RWD (quello dei prodotti di esempio) ho comunque la necessità di personalizzare il contenuto della Product Page al fine di visualizzare ulteriori attributi (da me creati) dei miei prodotti, vale a dire l'eventuale sottotitolo, nome e cognome degli autori, il codice ISBN di ogni libro (corrisponde al sku) etc...
Quindi per fare ciò sono andato a modificare in: app/design/frontend/rwd/default/template/catalog/product il file view.phtml
Ho inserito il seguente codice dopo il div <div class="product-shop">...... </div>:
<div class="product-shop-2">
<div class="sotto-titolo">
<BR><BR><span class="h3"><?php echo $_helper->productAttribute($_product, $_product->getSottoTitolo(), 'sotto_titolo') ?></span>
</div>
<?php if ($_product->getNomeAutore1()):?>
<div class="nome-autore-1">
<div class="h2"><?php echo $_helper->productAttribute($_product, nl2br($_product->getNomeAutore1()), 'nome_autore_1') ?></div>
</div>
<?php endif;?>
<?php if ($_product->getAuthorArtist()):?>
<div class="cognome-autore">
<div class="h2"><?php echo $_helper->productAttribute($_product, nl2br($_product->getAuthorArtist()), 'author_artist') ?></div>
</div>
<?php endif;?>
<?php if ($_product->getNomeAutore2()):?>
<div class="nome-autore-2">
<div class="h2"><?php echo $_helper->productAttribute($_product, nl2br($_product->getNomeAutore2()), 'nome_autore_2') ?></div>
</div>
<?php endif;?>
<?php if ($_product->getAuthorArtist2()):?>
<div class="cognome-autore-2">
<div class="h2"><?php echo $_helper->productAttribute($_product, nl2br($_product->getAuthorArtist2()), 'author_artist_2') ?></div>
</div>
<?php endif;?>
e quest'altro codice subito dopo <div class="extra-info"> ....... </div>:
<?php if ($_product->getSku()):?> <div class="sku"> <h3><?php echo $this->__('Codice ISBN:') ?></h3> <div class="h4"><?php echo $_helper->productAttribute($_product, nl2br($_product->getSku()), 'sku') ?></div> </div> <?php endif;?>
sempre partendo dal codice di default ed ho ottenuto il seguente risultato:
I codici per quanto riguarda il "Sottotitolo", il "codice ISBN" e il "Cognome del Autore 1", funzionano correttamente, ma purtroppo non mi vengono stampati i valori relativi agli attributi "Nome Autore" in generale, così come i cognomi e i nomi degli eventuali ulteriori autori...
Qualcuno che ne capisce più di me sarebbe così gentile da indicarmi dove ho sbagliato e come rimediare?
Grazie in anticipo a tutti
Solved! Go to Solution.
Sono riuscito a risolvere... il problema era dovuto alla nomenclatura degli attributi.
Alcuni attributi che avevo chiamato "nome_autore_1" ad esempio non rispondevano al comando $_product->getNomeAutore1(), ma andando a creare un nuovo attributo chiamato "nome_autore1" il codice funziona correttamente. Il problema credo fosse dovuto alla presenza di "_1", eliminate _ prima dei numeri, il comando funziona perfettamente.
Grazie comunque per la pazienza e l'aiuto!
il codice corretto è $_product->getNomeAutore1()
In ogni caso il codice dipende anche dalla tipologia di attributo, questo formato è valdo per gli attributi di tipo input - text.
Infine voglio farti notare che è sbagliato modificare il tema di Magento in quanto parte del core e rischia di essere sovrascritto a successivi aggiornamenti.
Devi necessariamente creare un nuovo tema con percorso app/design/frontend/nometema/nomesubpackage/ e inserirci le modifiche necessarie.
Innanzitutto grazie per la risposta.
Per quanto riguarda la modifica del tema, la cartella rwd (che viene aggiunta quando si caricano in Magento i prodotti d'esempio) non è già di per sé una cartella di "Tema personalizzato"?
Al di là di questo, mi pare di aver usato il codice da te riportato in:
<?php if ($_product->getNomeAutore1()):?> <div class="nome-autore-1"> <div class="h2"><?php echo $_helper->productAttribute($_product, nl2br($_product->getNomeAutore1()), 'nome_autore_1') ?></div> </div> <?php endif;?>
solo che ho dovuto aggiungere la funzione if per fare in modo che venga Stampata a video solo nell'eventualità in cui ci sia effettivamente un valore per l'attributo richiesto...
Quello che non riesco a capire è il perchè il codice che ho riportato qui sopra non mi stampi a video l'attributo relativo al Nome del Autore ma questo codice:
<?php if ($_product->getAuthorArtist()):?> <div class="cognome-autore"> <div class="h2"><?php echo $_helper->productAttribute($_product, nl2br($_product->getAuthorArtist()), 'author_artist') ?></div> </div> <?php endif;?>
che ha la stessa struttura, invece, funziona perfettamente per l'attributo relativo al Cognome dell'autore...
Spero di essere riuscito a spiegarmi...
Non ho i dettagli di quello che stai facendp però solitamente il codice funziona anche senza inserirlo all'interno dell'helper attribute.
In ogni caso, hai controllato se gli attributi hanno impostazioni differenti nel backend?
Per il tema RWD, è un tema di base ma va esteso non sovrascritto:
http://alanstorm.com/magento_infinite_fallback_theme_xml/
Sono riuscito a risolvere... il problema era dovuto alla nomenclatura degli attributi.
Alcuni attributi che avevo chiamato "nome_autore_1" ad esempio non rispondevano al comando $_product->getNomeAutore1(), ma andando a creare un nuovo attributo chiamato "nome_autore1" il codice funziona correttamente. Il problema credo fosse dovuto alla presenza di "_1", eliminate _ prima dei numeri, il comando funziona perfettamente.
Grazie comunque per la pazienza e l'aiuto!