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
Wasserzeichen/Label für Sonderpreise
 
Dscho
Sr. Member
 
Avatar
Total Posts:  236
Joined:  2007-10-05
Singen, Germany
 

Hallo,

in der Produktliste möchte ich gerne Produkte mit Sonderpreis durch ein Zusatzbild besonders auszeichnen.
D.h. ein Bild für die Auszeichnung über das Produktbild legen. (Siehe Bild im Anhang)

HTML & CSS sind kein Problem. Wo kann ich allerdings den Zusätzlichen Code einfügen.

Wenn ein Produkt einen Sonderpreis hat soll ein Bild für die Auszeichnung integriert werden.
Ich hoffe jemand von Euch hast das schon gemacht und kann das evtl. posten oder einen Tipp geben.

Viele Grüße
Dscho

Image Attachments
special1.jpg
File Attachments
Special_Price_Watermarks.pdf  (File Size: 1512KB - Downloads: 577)
 
Magento Community Magento Community
Magento Community
Magento Community
 
Dscho
Sr. Member
 
Avatar
Total Posts:  236
Joined:  2007-10-05
Singen, Germany
 

Den ersten Ansatz habe ich gefunden.

Zum Testen benutze ich das blank - Template. Um die Auszeichnung zu integrieren habe ich nun die Datei app\design\frontend\default\blank\template\catalog\list.html geändert:

Ab Zeile 46:

<div class="product-image">       
            
<?php // Product Image ?>
            
<? if ( ($_product->getFinalPrice() - $_product->getPrice()) < 0{ ?>
             
<img class="special_image" src="<? echo $this->getSkinUrl('images/special_price.gif'); ?>">
            
            
<? } ?>
            
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>">
                <
img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135, 135); ?>" width="135" height="135" alt="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" title="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" /></a>
            </
div>

Das ganze Bild wird nun von einem DIV mit der Klasse product-image umschlossen. Wenn FinalPrice-Price kleiner 0 ist, dann gibt es einen reduzierten Preis und es soll eine Auszeichnung angezeigt werden. D.h. das Bild special_price.gif wird integriert.
Das ganze wird dann als CSS noch wie folgt definiert:

.special_image {
  position
absolute;
  
z-index:1;
  
margin0 0 0 90px;
}

Ich habe das vorerst nur für simple products und “List” eingesetzt. Für komplexere Daten muss man sicherlich noch einige Abfragen machen. Für den Grid-Mode erklärt sich ja von selbst.

Demo: http://magento.tmedia-shop.de/pflanzen.html

Viele Grüße
Dscho

 
Magento Community Magento Community
Magento Community
Magento Community
 
sfp77
Member
 
Total Posts:  71
Joined:  2008-11-29
 

Hallo Dscho,

Super. Das kann ich bestimmt auch bald gebrauchen!

Danke,

Sören

 
Magento Community Magento Community
Magento Community
Magento Community
 
eliot2k5
Jr. Member
 
Total Posts:  13
Joined:  2008-12-19
Germany
 

Hallo Dscho,

nicht schlecht, ich war auf der Suche nach was ähnlichem.
Ich hätte gerne die Produktbilder deren Artikel als Neu gesetzt sind mit sowas gekennzeichnet.

Evtl. weiss jemand wie die Variable heisst die man Abfragen muss für Produkte bei denen das “Set Product as New from Date --> Set Product as New to Date” gesetzt ist??

Bis dahin,
Eliot

 
Magento Community Magento Community
Magento Community
Magento Community
 
Dscho
Sr. Member
 
Avatar
Total Posts:  236
Joined:  2007-10-05
Singen, Germany
 

Hallo,

nun haben mir einige per Mail geschrieben, dass Sie mit der Anleitung nicht zurechtkommen.
Damit auch Einsteiger dieses Feature integrieren können habe ich ein Tutorial erstellt,
in der Hoffnung, dass nun jeder in der Lage ist die Schritt nachzuvollziehen.

Das Tutorial befindet sich als PDF im Anhang. Alle benötigten Dateien und Codeschnipsel
sind als Anhänge in das PDF integriert.

Viele Grüße
Dscho

 
Magento Community Magento Community
Magento Community
Magento Community
 
Dscho
Sr. Member
 
Avatar
Total Posts:  236
Joined:  2007-10-05
Singen, Germany
 
eliot2k5 - 09 February 2009 09:39 PM

Hallo Dscho,

nicht schlecht, ich war auf der Suche nach was ähnlichem.
Ich hätte gerne die Produktbilder deren Artikel als Neu gesetzt sind mit sowas gekennzeichnet.

Evtl. weiss jemand wie die Variable heisst die man Abfragen muss für Produkte bei denen das “Set Product as New from Date --> Set Product as New to Date” gesetzt ist??

Bis dahin,
Eliot

Hi,

vieleicht hilt Dir dieser Code weiter:

public function isNewProduct()
{
    
if ($this->getData('news_to_date') === true{
        
return true;
    
}
    
return false;        
}

oder:

public function isNew($date=null)
    
{
        
if($date==null{
            $date 
$this->getResource()->formatDate(time());
        
}
        
        
if(!$this->getData('news_from_date')) {
            
return false;
        
}
        
        $current_date 
= new DateTime($date); // compare date
        
$from_date = new DateTime($this->getData('news_from_date')); // begin date
        
$to_date = new DateTime($this->getData('news_to_date')); // end date
        
        
$return = ($current_date >= $from_date && $current_date <= $to_date);
        
        return 
$return;
    
}

Quelle: http://www.magentocommerce.com/boards/viewthread/5272/

Integriere eine dieser Funktionen und Du kannst immer eine New-Label beim Produktbild anzeigen.

Gruß
Dscho

 
Magento Community Magento Community
Magento Community
Magento Community
 
eliot2k5
Jr. Member
 
Total Posts:  13
Joined:  2008-12-19
Germany
 

Hi,

danke für die Antwort und danke für den Link.
Ich hatte zwar auch schon mal im Forum gesucht, aber nichts gefunden. smile

Die Variante aus dem Link mit dem *.xml erstellen in
/app/etc/modules ist natürlich eine saubere Lösung und funktioniert ohne Probleme.

http://www.magentocommerce.com/boards/viewthread/19215/#t75902

Grüße Eliot

 
Magento Community Magento Community
Magento Community
Magento Community
 
Dscho
Sr. Member
 
Avatar
Total Posts:  236
Joined:  2007-10-05
Singen, Germany
 

Hi Eliot,

würde mich auch interessieren ob es klappt: Falls ja kannst es ja posten.
Ich würde es dann in das Tutorial mit aufnehmen.

Viele Grüße und viel Spaß am WE
Dscho

 
Magento Community Magento Community
Magento Community
Magento Community
 
eliot2k5
Jr. Member
 
Total Posts:  13
Joined:  2008-12-19
Germany
 

Also ohne viel Aufwand funktionierts zwar aber ...

eine *.xml in /app/etc/modules/ anlegen

<?xml version="1.0"?>
<config>
  <
frontend>
    <
product>
      <
collection>
        <
attributes>
          <
news_to_date/>
        </
attributes>
      </
collection>
    </
product>
  </
frontend>
</
config>

Danach in .../template/catalog/product/list.phtml

<?php if($this->htmlEscape($_product->getData('news_to_date'))): ?>
<img class="news_to_image" src="<? echo $this->getSkinUrl('images/news_to_date.gif'); ?>" alt="new" />
<?php endif; ?>

Die Lösung ist sicherlich noch nicht perfekt, man müsste hier schon noch das aktuelle Datum mit dem “news_to_date” vergleichen um das zu automatisieren.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Dscho
Sr. Member
 
Avatar
Total Posts:  236
Joined:  2007-10-05
Singen, Germany
 

Hi Eliot,

danke für Dein Posting. Sobald ich etwas mehr Zeit haben werde ich mich daran setzen und das austesten.

Meine Idee: Kombinierte Grafiken aus New & Sonderpreis. Für jede Kombination eine Grafik indem man über logische
verknüpfungen die richtige Grafik ermittelt. Das kann man natürlich noch mit beliebigen Attributen erweitern.
Zum Beispiel: Testsieger, Top-Produkt, Empfehlung, etc.

Viele Grüße
Dscho

 
Magento Community Magento Community
Magento Community
Magento Community
 
Dscho
Sr. Member
 
Avatar
Total Posts:  236
Joined:  2007-10-05
Singen, Germany
 

Sorry, auf Seite 3 des Tutorials hatte ich einen Fehler.

app\design\frontend\default\blank\template\catalog\products\list.html
anstatt
app\design\frontend\default\blank\template\catalog\list.html

Das PDF habe ich geändert.

 
Magento Community Magento Community
Magento Community
Magento Community
 
eliot2k5
Jr. Member
 
Total Posts:  13
Joined:  2008-12-19
Germany
 

Hallo nochma,

ich habs nochmal geändert weil ich echt nicht jedes mal schauen will ob das Datum das bei News to Date steht schon abgelaufen ist und das mit der Hand rauslöschen möchte.

Die *.xml bleibt unverändert /app/etc/modules/*.xml

<?xml version="1.0"?>
<config>
  <
frontend>
    <
product>
      <
collection>
        <
attributes>
          <
news_to_date/>
        </
attributes>
      </
collection>
    </
product>
  </
frontend>
</
config>

In /app/code/core/Mage/Catalog/Model/Product.php habe ich folgendes hinzugefügt:

public function todayDate()
    
{
    $tNow 
date("Y-m-d h:i:s");
    return 
$tNow;
    
}

Meine ../template/catalog/product/list.phtml habe ich wie folgt geändert:

<class="product-image">

<?php if($_product->todayDate() <= $this->htmlEscape($_product->getData('news_to_date'))): ?>
<img class="news_to_image" src="<? echo $this->getSkinUrl('images/news_to_date.gif'); ?>" alt="" />
<?php endif; ?>

...

Grüße Eliot

 
Magento Community Magento Community
Magento Community
Magento Community
 
Dscho
Sr. Member
 
Avatar
Total Posts:  236
Joined:  2007-10-05
Singen, Germany
 

Hallo Eliot,

danke für Dein Feedback und die Sourcen.

Viele Grüße
Dscho

 
Magento Community Magento Community
Magento Community
Magento Community
 
albossum
Member
 
Total Posts:  55
Joined:  2009-03-17
 

also ich habe es irgendwie noch etwas einfacher gemacht:

einfach im template folgenden code in den div-container vom bild einfügen und die position durch css festlegen:

<?php 
                    $_now 
time();
                    
$specialToDate strtotime($_product->getspecial_to_date())+(60*60*24); // 60*60*24, da gültigkeit einschl. des datums
                    
$specialFromDate strtotime($_product->getspecial_from_date());
                    
$newsToDate strtotime($_product->getnews_to_date())+(60*60*24); // 60*60*24, da gültigkeit einschl. des datums
                    
$newsFromDate strtotime($_product->getnews_from_date());
                    
                    if (((
$newsFromDate <= $_now) && ($newsToDate $_now)) || (($_product->getSpecialPrice()) && ($specialFromDate <= $_now) && ($specialToDate $_now))): ?>
                      
<div class="teaser">
                        
<?php if (($_product->getSpecialPrice()) && ($specialFromDate <= $_now) && ($specialToDate $_now)): ?>
                           
<p><span><?php echo $this->__('Sparpreis!'?></span></p>
                        
<?php endif; ?>
                        <?php 
if (($newsFromDate <= $_now) && ($newsToDate $_now)): ?>
                           
<p><span><?php echo $this->__('NEU!'?></span></p>
                        
<?php endif; ?>
                      
</div>
                    
<?php endif; ?>

code boxes.css

.listing-type-grid .product-image .teaser {right:0top:0position:absolutez-index:5filter:alpha(opacity=60); -moz-opacity:.60opacity:.60}

.listing-type-grid .product-image .teaser p { padding5px 0margin-bottom:2pxtext-align:rightline-height:15px;}

.listing-type-grid .product-image .teaser span {padding2px 5pxcolor:#ffffff; width: auto; background-color:#FF0000; font-family:Impact; font-size:1.5em; letter-spacing:0.05em; }

hier sind abfragen drin, ob das produkt neu und/oder ein sonderangebot ist. entsprechend wird eins oder beides im bild oben rechts angezeigt.

da ich die abfragen jeweis 2 mal benötige habe ich sie in neue variablen gespeichert. wenn man jeweils einzelabfragen macht braucht man das nicht.

bei mir wird zwar nur ein text angezeigt, man kann aber natürlich auch ein bild laden.

was genau erscheint könnt ihr euch ja anpassen… ich denke es geht hier ja um das workaround und die if abfragen.

bin natürlich für verbesserungsvorschläge offen bzw. hätte ich gern das erstellungsdatum des produkts genommen um automatisiert festzulegen, ob das produkt neu ist oder nicht. (dachte an erstellungsdatum + 30 tage => Produkt ist neu, is es älter wird es nicht mehr als “neu” beworben)

gibt es ein attribut in welchem das erstellungsdatum des produktes im catalog enthalten ist? würde viel zeit sparen, wenn man nicht “neu von” und “neu bis” angeben müsste…

gruß

albossum

 
Magento Community Magento Community
Magento Community
Magento Community
 
Dscho
Sr. Member
 
Avatar
Total Posts:  236
Joined:  2007-10-05
Singen, Germany
 

Hi, das Datum kannst Du wie folgt auslesen.

$product->getCreatedAt();

Zu finden in lib/Varien/Object.php, wen es interessiert grin

Grüße
Dscho

 
Magento Community Magento Community
Magento Community
Magento Community
 
albossum
Member
 
Total Posts:  55
Joined:  2009-03-17
 

Bestens! Danke!!!

das erspart ne Menge Arbeit, da ich das jetzt automatisieren kann!!!

lieben

Gruß

albossum

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top
Page 1 of 2