Neue Produkte
Neue Produkte
Gibt es eine relativ einfache Möglichkeit, die neuen Produkte auf einer Seite im FE auszugeben?
Grüße
Jarek
Grüße
Jarek
- supportteam
- Beiträge: 245
- Registriert: 28. Aug 2013, 17:58
Re: Neue Produkte
Ja, das geht ganz leicht mit MERCONIS-Bordmitteln.
1. Erstellen Sie einen Neuheiten-CrossSeller (Typ "Produktsuche" und "Neues Produkt" als Suchkriterium aktivieren). Aktivieren Sie dann noch die Option "Übersichts-Produktdarstellung verwenden". Speichern.
2. Duplizieren Sie Ihr Standardlayout und entfernen Sie im neuen Layout das Frontendmodul "MERCONIS - product overview". Denn Sie möchten ja nicht, dass auf Ihrer Neuheiten-Seite zusätzlich auch die normalen Produkte ausgegeben werden. Nun können Sie stattdessen Ihren Neuheiten-CrossSeller (vorher als Modul erstellen) einfügen ODER Sie fügen lediglich einen Artikel mit dem Neuheiten-CrossSeller in die Neuheiten-Seite ein.
3. Weisen Sie das neue Neuheuten-Layout Ihrer Neuheiten-Seite zu.
Fertig!
Anmerkung: Das ist quasi die selbe "Technik", mit der auch die Seite für Suchergebnisse ausgegeben wird. Nur dass der CrossSeller für die Suchergebnisse nicht vom Typ "Produktsuche" ist, sondern vom Typ "Frontend-Poduktsuche".
1. Erstellen Sie einen Neuheiten-CrossSeller (Typ "Produktsuche" und "Neues Produkt" als Suchkriterium aktivieren). Aktivieren Sie dann noch die Option "Übersichts-Produktdarstellung verwenden". Speichern.
2. Duplizieren Sie Ihr Standardlayout und entfernen Sie im neuen Layout das Frontendmodul "MERCONIS - product overview". Denn Sie möchten ja nicht, dass auf Ihrer Neuheiten-Seite zusätzlich auch die normalen Produkte ausgegeben werden. Nun können Sie stattdessen Ihren Neuheiten-CrossSeller (vorher als Modul erstellen) einfügen ODER Sie fügen lediglich einen Artikel mit dem Neuheiten-CrossSeller in die Neuheiten-Seite ein.
3. Weisen Sie das neue Neuheuten-Layout Ihrer Neuheiten-Seite zu.
Fertig!
Anmerkung: Das ist quasi die selbe "Technik", mit der auch die Seite für Suchergebnisse ausgegeben wird. Nur dass der CrossSeller für die Suchergebnisse nicht vom Typ "Produktsuche" ist, sondern vom Typ "Frontend-Poduktsuche".
Re: Neue Produkte
Hallo,
danke für die schnelle Antwort. War ich bei meinen nicht ganz so erfolgreichen Versuchen schon auf Cross-Seller Produktsuche-Produkt Neu gekommen, hatte es allerdings nur in die Artikel auf "Neu" Seiten eingesetzt ohne Layout anzupassen.
Andere Frage, die sich fast nahtlos anschließt ist eine quasi Automatisierung der "Neu"-Eigenschaft. Es geht eigentlich darum, dass die Produkte beim Einstellen diese Eigenschaft bekommen - das ist mit MPM kein Problem - und dann nach Ablauf einer gewissen Zeit sie *automatisch* verlieren.
Ich komme auf die Lösung der Zeitfrage über z.B flexcontent als Datum, kann aber dann die daraus resultierenden Werte (in dem Beispiel 31 Tage) nicht als Auslöser der "Neu"-Eigenschaft einsetzen.
Beispiel der Anpassung im Template ProductOverview:
<?php
$then = $this->objProduct->_flexContents['flexContent7'];
$now = time();
$difference = $now - strtotime($then);
$days = floor($difference / (60*60*24));
?>
<?php if ($days < 31): ?>
<?php $this->objProduct->_isNew ?>
<a <?php echo $this->objProduct->_anchor; ?>" class="productImageOverlay isNew"><img src="files/merconisfiles/standardImages/shop_overlayNewSmall.svg" alt=""/> </a>
<?php endif; ?>
Images werden anstandslos ausgegeben, aber die Eigenschaft "New" wird nicht weitergegeben.
Gruss
Jarek
danke für die schnelle Antwort. War ich bei meinen nicht ganz so erfolgreichen Versuchen schon auf Cross-Seller Produktsuche-Produkt Neu gekommen, hatte es allerdings nur in die Artikel auf "Neu" Seiten eingesetzt ohne Layout anzupassen.
Andere Frage, die sich fast nahtlos anschließt ist eine quasi Automatisierung der "Neu"-Eigenschaft. Es geht eigentlich darum, dass die Produkte beim Einstellen diese Eigenschaft bekommen - das ist mit MPM kein Problem - und dann nach Ablauf einer gewissen Zeit sie *automatisch* verlieren.
Ich komme auf die Lösung der Zeitfrage über z.B flexcontent als Datum, kann aber dann die daraus resultierenden Werte (in dem Beispiel 31 Tage) nicht als Auslöser der "Neu"-Eigenschaft einsetzen.
Beispiel der Anpassung im Template ProductOverview:
<?php
$then = $this->objProduct->_flexContents['flexContent7'];
$now = time();
$difference = $now - strtotime($then);
$days = floor($difference / (60*60*24));
?>
<?php if ($days < 31): ?>
<?php $this->objProduct->_isNew ?>
<a <?php echo $this->objProduct->_anchor; ?>" class="productImageOverlay isNew"><img src="files/merconisfiles/standardImages/shop_overlayNewSmall.svg" alt=""/> </a>
<?php endif; ?>
Images werden anstandslos ausgegeben, aber die Eigenschaft "New" wird nicht weitergegeben.
Gruss
Jarek
- supportteam2
- Beiträge: 427
- Registriert: 4. Mär 2015, 14:05
Re: Neue Produkte
Ich vermute, dass Sie in Ihrem Beispiel mit "$this->objProduct->_isNew" den "New-Status" eines Produktes setzen wollen. Das geht so aber nicht, da $this->objProduct->_isNew nur eine Produkteigenschaft zurückgibt (neu -> true, nicht neu -> false). Es handelt sich nicht um eine Funktion, mit der Sie diese Eigenschaft beeinflussen können. Um die Eigenschaft zu beeinflussen, müssten Sie direkt in der DB das entsprechende Flag im Produkt-Datensatz setzen. Das sollten Sie aber auch besser nicht im Template machen, sondern idealerweise in einer speziellen Funktion, die Sie z. B. in einer kleine Extension erstellen und dann mittels Cronjob einmal am Tag aufrufen.
Re: Neue Produkte
Hi,
da der Vorteil der zeitlichen Angabe in der Flexibilität der Definition von "Neu" schon gegeben ist, könnte man, anstatt sich auf die BE-Definition von "neu" zu berufen, die zeitliche Angabe nutzen (z.B. die berechneten $days) und sie mittels einem mit Hook angepassten Crossseller verwenden um die Produkte mit der definierten Zeit seit der Einstellung auf der "Neu"-Seite anzuzeigen?
Gruss
Jarek
da der Vorteil der zeitlichen Angabe in der Flexibilität der Definition von "Neu" schon gegeben ist, könnte man, anstatt sich auf die BE-Definition von "neu" zu berufen, die zeitliche Angabe nutzen (z.B. die berechneten $days) und sie mittels einem mit Hook angepassten Crossseller verwenden um die Produkte mit der definierten Zeit seit der Einstellung auf der "Neu"-Seite anzuzeigen?
Gruss
Jarek
- supportteam2
- Beiträge: 427
- Registriert: 4. Mär 2015, 14:05
Re: Neue Produkte
Die Idee, das Einstelldatum eines Produktes als Darstellungskriterium für einen CrossSeller zu verwenden, ist gut und lässt sich durch Nutzung eines Hooks bereits jetzt realisieren. Wir finden die Idee so gut, dass wir die Einführung eines Produktdaten-Felds "eingestellt am" und die Erweiterung des CrossSeller-Typs "Produktsuche" um zeitbezogene Suchkriterien auf unsere Todo-Liste genommen haben. Ab einer der kommenden Merconis-Versionen wird es dann also möglich sein, den von Ihnen beschriebenen CrossSeller einfach im Backend zu definieren. Einen geplanten Veröffentlichungstermin für dieses Feature können wir leider noch nicht nennen.
Bis dahin können Sie einen speziellen Hook verwenden, um das gewünschte CrossSeller-Verhalten zu realisieren. Hierzu ein paar Tipps:
Bis dahin können Sie einen speziellen Hook verwenden, um das gewünschte CrossSeller-Verhalten zu realisieren. Hierzu ein paar Tipps:
- Es gibt aktuell noch keine Produkt-Eigenschaft "eingestellt am" und das Datenbankfeld "tstamp" können Sie nicht verwenden, da es ein Standard-Contao-Feld ist, das beim Bearbeiten eines Produktes im Backend aktualisiert wird. Benutzen Sie daher einen FlexContent um das Einstellungsdatum zu hinterlegen.
- Der Merconis-Hook, der Ihnen die Realisierung eines individuellen CrossSellers ermöglicht, heißt "beforeProductlistOutput" (siehe Handbuch: http://www.merconis.com/tl_files/Eigene ... /Hooks.htm)
Re: Neue Produkte
Hallo,
werden die met Merconis-Hooks ausgestatteten Module genauso erstellt wie übliche Contao-Hooks (Modul-Ordner in /system/modules, 2 Dateien (config im Unterordner /config und Logik in /classes))?
Gruss
Jarek
werden die met Merconis-Hooks ausgestatteten Module genauso erstellt wie übliche Contao-Hooks (Modul-Ordner in /system/modules, 2 Dateien (config im Unterordner /config und Logik in /classes))?
Gruss
Jarek
- supportteam2
- Beiträge: 427
- Registriert: 4. Mär 2015, 14:05
Re: Neue Produkte
Ja, das funktioniert genau so! ![Smile :)](./images/smilies/icon_e_smile.gif)
![Smile :)](./images/smilies/icon_e_smile.gif)
Re: Neue Produkte
Hallo,
Kriege die Anpassung des Cross-Sellers nicht hin. Irgendwo in meiner Vorgehensweise steckt sicherlich der Fehler.
1. Cross-Seller "NEW" (ID=46) erstellt. Als Frontend-Produktsuche und mit "Übersichts-Produktdarstellung verwenden"
2. In der Seitenstruktur entsprechende Seiten "New" (en) und "Neu" (de) erstellt und in die jeweiligen Artikel den Cross-Seller "NEW" eingestellt
3.Den o.g. Seiten einen neuen Layout zugewiesen (ohne Product-Overview, damit es sich nicht mit dem Cross-Seller "beißt")
4.Einen Hook (anhand: https://www.merconisforum.com/viewtopic.php?f=28&t=350) erstellt im Ordner /contao/system/modules/newproducts
mit der config.php in config-Ordner:
<?php
$GLOBALS['MERCONIS_HOOKS']['beforeProductlistOutput'][] = array('newproducts', 'myBeforeProductlistOutput');
und newproducts.php im übergeordneten Ordner newproducts:
<?php
class newproducts
{
public function myBeforeProductlistOutput($productListID, $arrProducts)
{
$this->import('ls_shop_controller');
if ($productListID != 'crossSeller_46') {
return $arrProducts;
}
$arrProductsToOutput = array();
foreach ($arrProducts as $productID)
{
$objProduct = $this->ls_shop_controller->getObjProduct($productID);
$flex7 = $objProduct->_flexContents['flexContent7']
$month = date ('d.m.Y' , strtotime("-31 days"))
if ($flex7 < $month) {
continue;
}
$arrProductsToOutput[] = $productID;
}
return $arrProductsToOutput;
}
}
5.Autoload-Creator laufen lassen: autoload.php und autoload.ini erstellt
6.Cache gelöscht
Trotz der Anpassungsversuche bekomme ich immer beim Aufruf der Neu-Seiten und auch Kategorieseiten immer eine blanke Seite.
Vermute, dass die angepasste newproducts.php irgendwo ein Fehler hat.
Grüße
Jarek
Kriege die Anpassung des Cross-Sellers nicht hin. Irgendwo in meiner Vorgehensweise steckt sicherlich der Fehler.
1. Cross-Seller "NEW" (ID=46) erstellt. Als Frontend-Produktsuche und mit "Übersichts-Produktdarstellung verwenden"
2. In der Seitenstruktur entsprechende Seiten "New" (en) und "Neu" (de) erstellt und in die jeweiligen Artikel den Cross-Seller "NEW" eingestellt
3.Den o.g. Seiten einen neuen Layout zugewiesen (ohne Product-Overview, damit es sich nicht mit dem Cross-Seller "beißt")
4.Einen Hook (anhand: https://www.merconisforum.com/viewtopic.php?f=28&t=350) erstellt im Ordner /contao/system/modules/newproducts
mit der config.php in config-Ordner:
<?php
$GLOBALS['MERCONIS_HOOKS']['beforeProductlistOutput'][] = array('newproducts', 'myBeforeProductlistOutput');
und newproducts.php im übergeordneten Ordner newproducts:
<?php
class newproducts
{
public function myBeforeProductlistOutput($productListID, $arrProducts)
{
$this->import('ls_shop_controller');
if ($productListID != 'crossSeller_46') {
return $arrProducts;
}
$arrProductsToOutput = array();
foreach ($arrProducts as $productID)
{
$objProduct = $this->ls_shop_controller->getObjProduct($productID);
$flex7 = $objProduct->_flexContents['flexContent7']
$month = date ('d.m.Y' , strtotime("-31 days"))
if ($flex7 < $month) {
continue;
}
$arrProductsToOutput[] = $productID;
}
return $arrProductsToOutput;
}
}
5.Autoload-Creator laufen lassen: autoload.php und autoload.ini erstellt
6.Cache gelöscht
Trotz der Anpassungsversuche bekomme ich immer beim Aufruf der Neu-Seiten und auch Kategorieseiten immer eine blanke Seite.
Vermute, dass die angepasste newproducts.php irgendwo ein Fehler hat.
Grüße
Jarek
- supportteam2
- Beiträge: 427
- Registriert: 4. Mär 2015, 14:05
Re: Neue Produkte
Hallo, zunächst mal ein paar Fragen, um das Ganze etwas einzugrenzen:
- Meinen Sie mit "blanke Seite" eine komplett weiße Seite oder nur einen leeren/blanken Bereich dort, wo eigentlich die Produkte stehen sollten? Das erste würde für einen Fatal Error sprechen, das letzte dafür, dass die von Ihnen eingebundene Hook-Funktion lediglich ihr Ziel noch nicht erreicht.
- Gibt es im Error-Log (/system/logs/error.log) Hinweise auf irgendwelche Fehler?
- Wird Ihre Funktion "myBeforeProductlistOutput" tatsächlich aufgerufen, greift der Hook also wirklich? Testen Sie das am besten, indem Sie am Anfang dieser Funktion mit der PHP-Anweisung "error_log" etwas ins Error-Log eintragen.
- Ist am Ende der Funktion "myBeforeProductlistOutput" das Array "$arrProductsToOutput" leer oder ist es tatsächlich gefüllt und der CrossSeller zeigt trotzdem keine Ausgabe?
- In welcher Form tragen Sie das Datum in flexContent7 ein?
- Meinen Sie mit "blanke Seite" eine komplett weiße Seite oder nur einen leeren/blanken Bereich dort, wo eigentlich die Produkte stehen sollten? Das erste würde für einen Fatal Error sprechen, das letzte dafür, dass die von Ihnen eingebundene Hook-Funktion lediglich ihr Ziel noch nicht erreicht.
- Gibt es im Error-Log (/system/logs/error.log) Hinweise auf irgendwelche Fehler?
- Wird Ihre Funktion "myBeforeProductlistOutput" tatsächlich aufgerufen, greift der Hook also wirklich? Testen Sie das am besten, indem Sie am Anfang dieser Funktion mit der PHP-Anweisung "error_log" etwas ins Error-Log eintragen.
- Ist am Ende der Funktion "myBeforeProductlistOutput" das Array "$arrProductsToOutput" leer oder ist es tatsächlich gefüllt und der CrossSeller zeigt trotzdem keine Ausgabe?
- In welcher Form tragen Sie das Datum in flexContent7 ein?