Das hinzufügen von YouTube-Videos zu Produkt-und CMS Seiten in Magento
Habe ich ein benutzerdefiniertes Attribut in meinem Magento-Shop, um zu zeigen, youtube-videos durch hinzufügen der video-id in einem Textfeld.
Ich habe diesen code in video.phtml
die in catalog/product/view
Ordner
<p>
<?php $attStuff= $_product->getData(); ?>
<?php if( !empty( $attStuff['videoid'] ) ): ?>
<iframe width="330" height="253" src="http://www.youtube.com/embed/<?php echo $attStuff['videoid']; ?>" frameborder="0" allowfullscreen></iframe>
<?php endif; ?>
</p>
Jetzt will ich das video zeigen in der rechten Seitenleiste eine CMS-Seite und ein layout-update verweisen auf video.phtml
:
<reference name="right">
<block type="core/template" name="catalog.product.video" template="catalog/product/view/video.phtml" />
</reference>
Bekomme ich jetzt die folgende Fehlermeldung:
Fatal error: Call to a member function getData() on a non-object in /Applications/MAMP/htdocs/mysite/app/design/frontend/bootstrapped/default/template/catalog/product/view/video.phtml on line 13
und ich kann nicht das problem diagnostizieren!
Alle Ideen, was könnte hier das problem?
InformationsquelleAutor user1704524 | 2012-11-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie sehr nahe. Anstatt den block-Typ zu sein
core/template
müssen Sie eine Klasse verwenden, die die Fähigkeit hat, überprüfen Sie mit dem aktuellen Produkt. Diecatalog/product_abstract
block hat sehr Funktionen. Tun Sie dies für Ihre layout-Datei:Dann, in Ihre video-Datei:
Edit:
Wenn Sie es auf CMS-Seiten, wird es ein wenig schwieriger. Sie müssen bestimmen, was Produkt, das Sie abrufen möchten, und das video für. Es gibt eine Reihe von Möglichkeiten, dies zu tun. Wenn Sie eine Aktualisierung des Layouts in die CMS-Seite, die man tun könnte etwas wie diese:
Und dann, in Ihre video-Datei:
Ich schlage vor, diese Methode, weil es klingt nicht so, als wenn Sie sehr vertraut sind mit der Erstellung Ihres eigenen Modul. Ich würde empfehlen, der Suche, bis, denn, was ich bin zeigen Sie hier ist nicht best practice, ie laden ein Modell in einem block-template-Datei. Es sollte verschoben werden in einen eigenen block-Klasse (die verlängern könnte
Mage_Catalog_Block_Product_Abstract
, und überschreiben Sie diegetProduct()
- Methode).Edit #2:
Die Produkt-ID kann verwendet werden. In der layout-xml, ändern Sie die
In der template-code, verwenden Sie diese Zeile:
Fatal error: Cannot instantiate abstract class Mage_Catalog_Block_Product_Abstract in /Applications/MAMP/htdocs/mysite/app/code/local/Mage/Core/Model/Layout.php on line 491
Oops. Mein schlechtes - ich entschuldige mich. Ich habe geändert den block Verweis auf
catalog/product_view
. Bitte akzeptieren Sie die Antwort, ob es funktioniert.Das funktioniert in der Produkt-Ansicht-Seiten ohne Fehler, aber in einer CMS-Seite gibt es ein problem. Ich bekomme immer noch eine Fehlermeldung, nachdem Sie die änderungen:
Fatal error: Call to a member function getMetaTitle() on a non-object in /Applications/MAMP/htdocs/mysite/app/code/local/Mage/Catalog/Block/Product/View.php on line 56
Danke könnte ich productId der SKU statt?
Siehe mein update..
InformationsquelleAutor Joseph at SwiftOtter
Erstellen Sie video-Vorlage und verwenden Sie das Produkt "XML-Layout-Update".
Erstellen:
app/design/frontend/yourpackage/yourtheme/template/catalog/product/video.phtml
mit
Nun fügen Sie den folgenden code in die Produkt-XML-Layout-Update unter der Registerkarte "Entwurf" auf Produkt Bearbeiten Seite:
InformationsquelleAutor Henry Roger