Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Page 1 of 2
Wie bringe ich div. Produkte auf die Startseite
 
sideshow
Member
 
Avatar
Total Posts:  36
Joined:  2008-07-06
Germany
 

Hallo Forum,

ich bin schon seit einiger Zeit damit beschäftigt wie ich diverse Produkte auf die Startseite bringe. Ich habe schon viel rumprobiert und zum Beispiel die beliebtesten Schlagwörter auf die Startseite gebracht. Das war nicht schwer. Aber wie bringe ich zum Beispiel aus Rubrik 1 das erste Produkt und aus Rubrik 2 das erste Produkt auf die Website?

Gibt es hier eine schöne und einfache Lösung?

Für jeden Hinweis bzw. Idee wäre ich sehe dankbar!!!

PS:
Ich pers. habe kein Problem damit die einzelnen Produkte per HTML auf die Startseite zu bringen - aber wenn das mal ein Kunde benutzen sollte dann ist der davon bestimmt nicht so begeister! smile

Image Attachments
Bild 1.png
 
Magento Community Magento Community
Magento Community
Magento Community
 
Xtremo
Jr. Member
 
Total Posts:  14
Joined:  2007-09-10
 

Das würde mich auch stark interessieren. Ich habe hier 5 verschiedene Kategorien und ich möchte, dass das neuste Produkt aus jeder Kategorie auf der Startseite angezeigt wird.

 
Magento Community Magento Community
Magento Community
Magento Community
 
sideshow
Member
 
Avatar
Total Posts:  36
Joined:  2008-07-06
Germany
 

Das “Problem” ist schätze ich das ich mit Magento seit ca. 7 Tagen arbeite und du wahrscheinlich ne ganze Ecke länger!  wink

Aber dein Tipp ist super - da wär ich so nicht draufgekommen. Hört sich nicht allzu schwierig an. Ich probier das gleich mal aus. Ansonsten hab ich hier dann doch noch was interessantes gefunden:

http://www.magentocommerce.com/boards/viewthread/5147/

 
Magento Community Magento Community
Magento Community
Magento Community
 
sideshow
Member
 
Avatar
Total Posts:  36
Joined:  2008-07-06
Germany
 

Ok, so einfach ist es dann doch wohl nicht. Ich kann zwar PHP (auch Objektorientiert) und das nicht schlecht, aber ich hab keine Ahnung wie ich die meine Produkte abfragen kann.

Ich hab ein neues Template erstellt und das auch erfolgreich eingebunden, aber kannst du mir bitte Hilfestellung geben wie ich jetzt meine Produkte auf die Seite bekomme bzw. wie ich das Attribut auch abfragen kann?!

Da steh ich grade auf dem Schlauch!!!

Bzw. gibt es dazu irgendwo eine Doku?

 
Magento Community Magento Community
Magento Community
Magento Community
 
sideshow
Member
 
Avatar
Total Posts:  36
Joined:  2008-07-06
Germany
 

Ah, ok… ich beiss mich langsam durch!!! Man braucht eine Klasse dazu. -> http://www.magentocommerce.com/boards/viewthread/4454/

Ich schreib mal meine komplette Lösung wenn ich’s fertig hab!

 
Magento Community Magento Community
Magento Community
Magento Community
 
sideshow
Member
 
Avatar
Total Posts:  36
Joined:  2008-07-06
Germany
 

So, nach langem hin und her, schlau machen, einlesen und ausprobieren habe ich nun eine Lösung für mein Problem. Ich versuche es mal hier ausführlich zu beschreiben wie ich es hinbekommen hab. Evtl. nutzt es ja jemandem was! smile

Step 1:
Im Admin-Menü unter Katalog -> Attribute -> Attribute verwalten auswählen und ein neues Attribut anlegen. Ich habe es “latest” genannt. Einstellungen siehe Screenshot “Bild 1” und “Bild 2”.

Step 2:
Unter Katalog -> Attribute -> Attributsets verwalten “Default” auswählen und nun das eben erstelle Attribut von den nicht zugewiesenen in die Gruppe “General” reinziehen.

Step 3:
Ein bzw. einige Produkte bearbeiten und bei “Auf Startseite anzeigen” -> Ja auswählen

Step 4:
In diesem Beispiel -> mein Style (Theme) heisst BC und meine Firma in dem Fall MP…
Jetzt legt man zum einen das Template an das die Produkte auf der Startseite anzeigen soll. Ich habe mich hier sehr am “New” Template orientiert.
Hier wird das Template abgelegt: app/design/frontend/default/BC/template/catalog/product/latest.phtml

Mein Template sieht aus wie folgt:

<?php if (($_products $this->getProductCollection()) && $_products->getSize()): ?>
<div class="box recently">
<
table cellspacing="0" class="recently-list" id="recently-compared-list-table">
<
tr>
<?php $i=0; foreach ($_products->getItems() as $_product): ?>
    <?php 
if ($i>5): continue; endif; ?>

    
<td>
        <
div>
            <
a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>">
                <
img class="product-image" src="<?php echo $_product->getSmallImageUrl() ?>" width="80" height="77" alt="<?php echo $this->htmlEscape($_product->getName()) ?>" />
            </
a>
        </
div>
            <
p><class="product-name" href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>)"><?php echo $this->htmlEscape($_product->getName()) ?></a></p>
            
<?php echo $this->helper('review/product')->getSummaryHtml($_product'short'?>
            <?php 
echo $this->helper('catalog/product')->getPriceHtml($_product?>
            <?php 
if($_product->isSaleable()): ?>
            
<button class="form-button" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><?php echo $this->__('Add to Cart'?></span></button>
            
<?php else: ?>
            
<div class="out-of-stock"><?php echo $this->__('Out of stock'?></div>
            
<?php endif; ?>
            
<div class="clear"></div>
            <
class="add-to">
                
<?php if ($this->helper('wishlist')->isAllow()) : ?>
                
<a href="<?php echo $this->getAddToWishlistUrl($_product) ?>" class="link-cart"><?php echo $this->__('Add to Wishlist'?></a>
                
<?php endif; ?>
                <?php 
if($_compareUrl=$this->getAddToCompareUrl($_product)): ?><br />
                <
a href="<?php echo $_compareUrl ?>"><?php echo $this->__('Add to Compare'?></a>
                
<?php endif; ?>
            
</p>
        </
td>
<?php $i++; endforeach; ?>
<?php 
for($i;$i%5!=0;$i++): ?>
        
<td>&nbsp;</td>
    
<?php endfor; ?>
    
</tr>
</
table></div>

Step 5:
Jetzt brauchen wir noch eine Klasse die unser Template mit Daten füttert! Die Klasse befindet sich hier:
app/code/local/MP/Catalog/Block/Product/Latest.php

Die Klasse sieht so aus:

class MP_Catalog_Block_Product_Latest extends Mage_Catalog_Block_Product_Abstract {
    
public function __construct() {
        parent
::__construct();
        
        
$storeId Mage::app()->getStore()->getId();
        
        
$product Mage::getModel('catalog/product');
        
/* @var $product Mage_Catalog_Model_Product */
        
$todayDate $product->getResource()->formatDate(time());
        
$products $product->setStoreId($storeId)->getCollection()
            ->
addAttributeToFilter('latest', array('latest'=>true))
            ->
addAttributeToSelect(array('name''price''small_image'), 'inner')
            ;
        
        
/* @var $products Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection */
        
        
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products);
        
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products);
        
        
$products->setOrder('latest')->setPageSize(5)->setCurPage(1);
               
$this->setProductCollection($products);
    
}
}

Step 6:
Jetzt müssen wir Magento noch klar machen das wir die Klasse hier unter unserer “Firma” abgelegt haben und das Magento diese dann auch findet. Das geht so:
Wir öffnen die Datei app/etc/local.xml und fügen INNERHALB <config><global> folgendes ein:

<config><global> ...

<
blocks>
  <
catalog>
    <
rewrite>
      <
product_latest>MP_Catalog_Block_Product_Latest</product_latest>
    </
rewrite>
  </
catalog>
</
blocks>

...</global></
config>

Step 7:
So, fast geschafft. Nun brauchen wir nur noch im CMS -> Seiten verwalten die Startseite (also die Home Page) auswählen und bearbeiten. Unter “Eigene Gestaltung” habe ich folgendes in das XML eingefügt:

<block type="catalog/product_latest" name="home.catalog.product.latest" alias="product_latest" template="catalog/product/latest.phtml" after="cms_page"/>

Im Screenshot “Bild 3” sieht man hier den ganzen Code.

So, ich hoffe das nützt euch was - ich bin froh das ich es geschafft hab! smile

Image Attachments
Bild 1.pngBild 2.pngBild 3.png
 
Magento Community Magento Community
Magento Community
Magento Community
 
sommer79
Jr. Member
 
Total Posts:  8
Joined:  2008-08-02
 

Hallo

Ich habe nun Dein Tut durchgemacht - komme aber leider zu keinem Ergebniss dabei. Bekomme weiterhin eine weisse Frontseite anstatt von Content.

Welche Version hast Du?

Step 5:
Jetzt brauchen wir noch eine Klasse die unser Template mit Daten füttert! Die Klasse befindet sich hier:
app/code/local/MP/Catalog/Block/Product/Latest.php

Diese Ordnerstruktur existierte bei mir noch nicht - ich musste diese noch von Hand anlegen.

Hat jemand ne Idee woran dies liegen könnte?

Gruss, Sascha

 
Magento Community Magento Community
Magento Community
Magento Community
 
sideshow
Member
 
Avatar
Total Posts:  36
Joined:  2008-07-06
Germany
 

Hi Sascha,

ja, die Ordnerstruktur musst du selbst anlegen bzw. anpassen. In Magento ist das gut gelöst wie ich finde. Du kannst DEINE Erweiterungen die du selbst programmierst quasi in ein eigenes Verzeichnis packen damit der Update/Upgrade Vorgang leichter geht (so denke ich mir das zumindest!)

Zum Beispiel:
Du legst die Klasse an und zwar so:
app/code/local/Sascha/Catalog/Block/Product/Latest.php

Die Klasse wird dann in Verbindung mit dem dazugehörigen Template (app/design/frontend/default/BC/template/catalog/product/latest.phtml -> BC ist in dem Fall mein Theme bzw. Style den ich erstellt habe - kann auch unter default liegen) aufgerufen und füllt das Template mit Daten.

GANZ WICHTIG
Damit Magento checkt das es im Ordner “Sascha” nach der Klasse suchen soll musst du es im Configfile hinterlegen und zwar so:

In der Datei app/etc/local.xml den folgenden Code INNERHALB von <config><global> einfügen:

<config><global> ...

<
blocks>
  <
catalog>
    <
rewrite>
      <
product_latest>Sascha_Catalog_Block_Product_Latest</product_latest>
    </
rewrite>
  </
catalog>
</
blocks>

...</global></
config>

Der Klassenname muss mit der Ordnerstruktur übereinstimmen:

class Sascha_Catalog_Block_Product_Latest extends Mage_Catalog_Block_Product_Abstract {

Edit:
Ich benutze Version 1.0.19870.4 - wollte jetzt mal auf 1.1.2 Updaten… sollte da aber denke ich auch funktionieren. Hoffe ich zumindest! smile

 
Magento Community Magento Community
Magento Community
Magento Community
 
sommer79
Jr. Member
 
Total Posts:  8
Joined:  2008-08-02
 

Hi sideshow

Möglicherweise bin ich noch in meiner Montag-Morgen-Trance… aber ich denke ich habs genau so gemacht wie Du es geschrieben hast. Aber da kommt einfach nix auf der Startseite.

Habe Dir ein paar Screenshots gemacht. Evtl. kannst Du mir weiterhelfen

==> Attribut (Step 1)
http://www.filmdisc.ch/forum/attribute.jpg

==> Produkt einstellen (Step 3)
http://www.filmdisc.ch/forum/produkt.jpg

==> Latest.phtml übernehmen (Step4)
http://www.filmdisc.ch/forum/latest.phtml.jpg
Dabei habe ich eigentlich deinen Code 1:1 übernommen.

==> Latest.php erstellen (Step5)

class filmdisc_Catalog_Block_Product_Latest extends Mage_Catalog_Block_Product_Abstract {
    
public function __construct() {
        parent
::__construct();
        
        
$storeId Mage::app()->getStore()->getId();
        
        
$product Mage::getModel('catalog/product');
        
/* @var $product Mage_Catalog_Model_Product */
        
$todayDate $product->getResource()->formatDate(time());
        
$products $product->setStoreId($storeId)->getCollection()
            ->
addAttributeToFilter('latest', array('latest'=>true))
            ->
addAttributeToSelect(array('name''price''small_image'), 'inner')
            ;
        
        
/* @var $products Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection */
        
        
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products);
        
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products);
        
        
$products->setOrder('latest')->setPageSize(5)->setCurPage(1);
               
$this->setProductCollection($products);
    
}
}

==> Local.xml editieren (Step6)
http://www.filmdisc.ch/forum/local.xml.jpg

==> Layout anpassen (Step7)
http://www.filmdisc.ch/forum/gestaltung.jpg

Siehst Du den Fehler? Magento ist Geil… aber nicht wirklich einfach zu designen. hmmm
Edit: Ich benutze 1.1.2

Danke im Voraus
Gruss, Sascha

Image Attachments
attribute.jpggestaltung.jpglatest.php.jpglatest.phtml.jpglocal.xml.jpgprodukt.jpg
 
Magento Community Magento Community
Magento Community
Magento Community
 
sideshow
Member
 
Avatar
Total Posts:  36
Joined:  2008-07-06
Germany
 

Hi Sascha,

das ist jetzt nur ne Vermutung, evtl. liegt es daran. Ich kann mich noch dunkel dran erinnern das bei Klassennamen in PHP immer der erste Buchstabe große geschrieben sein muss!

Mach mal aus deinem “filmdisc” ein “Filmdisc” - beim Ordnernamen, in der Klasse und in der XML Datei. Vielleicht liegt es daran!?

 
Magento Community Magento Community
Magento Community
Magento Community
 
sommer79
Jr. Member
 
Total Posts:  8
Joined:  2008-08-02
 

Wenn ich nun die Klasse, die XML und anschliessend den Ordnernamen mit Grossbuchstaben beginne, erscheint beim Aufruf der Seite nur noch

class Filmdisc_Catalog_Block_Product_Latest extends Mage_Catalog_Block_Product_Abstract { public function __construct() { parent::__construct(); $storeId Mage::app()->getStore()->getId(); $product Mage::getModel('catalog/product'); /* @var $product Mage_Catalog_Model_Product */ $todayDate $product->getResource()->formatDate(time()); $products $product->setStoreId($storeId)->getCollection() ->addAttributeToFilter('latest', array('latest'=>true)) ->addAttributeToSelect(array('name''price''small_image'), 'inner') ; /* @var $products Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection */ Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products); Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products); $products->setOrder('latest')->setPageSize(5)->setCurPage(1); $this->setProductCollection($products); } } class Filmdisc_Catalog_Block_Product_Latest extends Mage_Catalog_Block_Product_Abstract { public function __construct() { parent::__construct(); $storeId Mage::app()->getStore()->getId(); $product Mage::getModel('catalog/product'); /* @var $product Mage_Catalog_Model_Product */ $todayDate $product->getResource()->formatDate(time()); $products $product->setStoreId($storeId)->getCollection() ->addAttributeToFilter('latest', array('latest'=>true)) ->addAttributeToSelect(array('name''price''small_image'), 'inner') ; /* @var $products Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection */ Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products); Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products); $products->setOrder('latest')->setPageSize(5)->setCurPage(1); $this->setProductCollection($products); } }

Wenn ich den Ordername wieder klein mache (und klasse und xml so belasse in Gross Buchstaben) dann kommt wieder nix

Aber ne andere Frage: Bei “Allgemeine Informationen” im Feld “Inhalt” muss ich nichts zusätzliches einfügen? Da steht bei mir nämlich momentan nur

<h3>Willkommen</h3>
- und genau das ist auch das einzige was ich auf der Startseite zu sehen bekomme.

Sascha

 
Magento Community Magento Community
Magento Community
Magento Community
 
sideshow
Member
 
Avatar
Total Posts:  36
Joined:  2008-07-06
Germany
 

Ne, da musst du nix anderes reinschreiben - das wird über das Layout im XML eingebunden…

Ich stell mal meine Dateien hoch dann kannst du noch mal vergleichen… bin auch grade etwas ratlos!

File Attachments
Latest.php  (File Size: 2KB - Downloads: 83)
latest.phtml  (File Size: 3KB - Downloads: 87)
local.xml  (File Size: 2KB - Downloads: 104)
 
Magento Community Magento Community
Magento Community
Magento Community
 
sideshow
Member
 
Avatar
Total Posts:  36
Joined:  2008-07-06
Germany
 

Wie sieht deine local.xml aus? Poste noch mal!

 
Magento Community Magento Community
Magento Community
Magento Community
 
sommer79
Jr. Member
 
Total Posts:  8
Joined:  2008-08-02
 

Hab gerade wieder neu aufgesetzt und kämpfe zurzeit mit einem anderen Problem (Bild Upload funktioniert nicht). Komme aber gerne noch auf einmal auf Dich zu.

 
Magento Community Magento Community
Magento Community
Magento Community
 
sideshow
Member
 
Avatar
Total Posts:  36
Joined:  2008-07-06
Germany
 

Ich habe jetzt mal bei mir Version 1.1.2 aufgesetzt und versucht mein Script dort zum laufen zu bringen. Leider ohne Erfolg… :(

Bekomme immer diesen Fehler hier:

PHP Fatal error:  Class 'Mage_Review_Helper_Product' not found in /Applications/MAMP/htdocs/magento/magento_v1/app/code/core/Mage/Core/Model/App.php on line 779

Versuche gerade rauszufinden an was das liegt!!!

 
Magento Community Magento Community
Magento Community
Magento Community
 
sideshow
Member
 
Avatar
Total Posts:  36
Joined:  2008-07-06
Germany
 

Mh… er kann sich den Preis wohl nicht holen…

Wenn ich die beiden Zeilen im Template latest.phtml auskommentiere dann funktioniert die Funktion wieder:

<?php echo $this->helper('review/product')->getSummaryHtml($_product'short'?>
<?php 
echo $this->helper('catalog/product')->getPriceHtml($_product?>

Hat jemand ne Idee an was das liegen könnte das er die Infos nicht bekommt?

Wenn ich nur mal die erste Zeile auskommentiere und ->getPriceHtml() drinlasse dann bekomme ich folgende Fehlermeldung:

Fatal errorCall to undefined method Mage_Catalog_Helper_Product::getPriceHtml() in /Applications/MAMP/htdocs/magento/magento_v1/app/design/frontend/default/bavarian_clothes/template/catalog/product/latest.phtml on line 24

Kann es sein das dass nicht in der Klasse abgefragt wird? Ich hab keine Ahnung wie das mit den Filtern hier funktioniert… grrrr!!!

Kann doch nicht sein… hab das doch in meiner Klasse drin:

$products $product->setStoreId($storeId)->getCollection()
            ->
addAttributeToFilter('latest', array('latest'=>true))
            ->
addAttributeToSelect(array('name''price''small_image'), 'inner')
            ;
 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top
Page 1 of 2