Hallo Community,
ich habe etwas zusammengestellt und mich an dem originalen "ProduktSlider" von Viecode orientiert. Meine Version kann aktuell folgendes:
- Es wird das Produktbild ausgegeben
- Es wird der Link zum Produkt ausgegeben
- Es wird der Name des Produkts ausgegeben
- Es wird die Kurzbeschreibung ausgegeben
- Es wird das Label mit ausgegeben
- Und es wird der Preis ausgegeben, zudem wird auch der "Aktionspreis" berücksichtigt Beispiel: ((
EUR 17,11) EUR 16,10) - Die Sprache wird berücksichtigt
Es sieht dem originalen Produkslider 1:1 ähnlich, nur das die "Neustesten produkte" ausgegeben werden.
Voraussetzung
- Viecode Shop
- Für Boxen: PHP in Boxen
- Für Seiten: PHP in Seiten
Beim erstellen einer Box und/oder Seite kommt unter dem Punkt PHP-Code folgender Inhalt
PHP
<?php
namespace wcf\page;
use shop\data\product\Product;
use wcf\system\request\LinkHandler;
use wcf\system\WCF;
$language = WCF::getLanguage()->languageCode;
$sliderProductSQL = array();
$sql = "SELECT *
FROM shop1_product
WHERE isDisabled = 0
ORDER BY isDisabled=0 DESC";
$sliderProduct = '
<div class="slideshowContainer">
<ul class="slideshowItemList productSlider">
';
$statement = WCF::getDB()->prepareStatement($sql, 10);
$statement->execute();
while ($row = $statement->fetchArray()) {
$sliderProductSQL[] = new Product(null, $row);
}
// Funktion zur Preis-Korrektur
function sliderCorrectPrice($price)
{
$price = sprintf('%.2f', $price); // Korrektur auf 2 Dezimalstellen
return $price;
}
if ($sliderProductSQL) {
foreach ($sliderProductSQL as $sliderRecord) {
// PREIS AUSLESEN, NORMAL UND AKTION
$sliderEnableSpecialOfferPrice = $sliderRecord->enableSpecialOfferPrice;
$sliderSpecialOfferPrice = $sliderRecord->specialOfferPrice;
$sliderPrice = $sliderRecord->price;
// Überprüfen, ob "enableSpecialOfferPrice" 1 ist
if ($sliderEnableSpecialOfferPrice == 1) {
// Sonderangebot vorhanden, Währung und Preis auslesen
$sliderSpecialOfferData = unserialize($sliderSpecialOfferPrice);
$sliderSpecialOfferCurrency = key($sliderSpecialOfferData);
$sliderSpecialOfferPrice = sliderCorrectPrice($sliderSpecialOfferData[$sliderSpecialOfferCurrency]);
$sliderData = unserialize($sliderPrice);
$sliderCurrency = key($sliderData);
$sliderPrice = sliderCorrectPrice($sliderData[$sliderCurrency]);
// Text generieren
$sliderPrice = '<small>(<span class="shopRegularPrice customerPrice"><span class="customerPriceValue">' . $sliderSpecialOfferCurrency . ' ' . $sliderPrice . '</span></span>) <span class="customerPrice"><span class="customerPriceValue">' . $sliderSpecialOfferCurrency . ' ' . $sliderSpecialOfferPrice . '</span></span>)</small>';
} else {
// Kein Sonderangebot, Währung und Preis aus "sliderPrice" auslesen
$sliderData = unserialize($sliderPrice);
$sliderCurrency = key($sliderData);
$sliderPrice = sliderCorrectPrice($sliderData[$sliderCurrency]);
// Text generieren
$sliderPrice = '<small>(<span class="customerPrice"><span class="customerPriceValue">' . $sliderCurrency . ' ' . $sliderPrice . '</span></span>)</small>';
}
$sliderLabel = $sliderRecord->label;
$sliderCssClassName = $sliderRecord->cssClassName;
$sliderName = $sliderRecord->title;
$sliderName = (strlen($sliderName) > 32 ? substr($sliderName, 0, 29) . ' ' : $sliderName);
$sliderName = WCF::getLanguage()->get($sliderName);
$sliderImage = $sliderRecord->image;
// SUMME KÄUFE
$sliderPurchases = $sliderRecord->purchases;
// BESCHREIBUNG
$sliderDescription = $sliderRecord->shortDescription;
$link = LinkHandler::getInstance()->getLink('Product', array('application' => 'shop', 'object' => $sliderRecord));
// PRODUCT IMAGE
if ($sliderImage != '') {
$sliderProductImage = '<a href="' . $link . '"><img src="../shop/images/products/' . $sliderImage . '" alt=""></a>';
} else {
$sliderProductImage = '<a href="' . $link . '"><img src="../shop/images/products/noImage.png" alt=""></a>';
}
if ($sliderLabel != '') {
$sliderLabel = WCF::getLanguage()->get($sliderLabel);
$sliderLabeld = '<span class="label badge ' . $sliderCssClassName . '">' . $sliderLabel . '</span>';
}
$sliderProduct .= '
<li class="slideshowItem">
<div>
' . $sliderProductImage . '
<div>
<div class="containerHeadline">
<h3>
<a href="' . $link . '">' . $sliderName . '</a>
' . $sliderLabeld . '
</h3>
</div>
<div class="productTeaser">' . $sliderDescription . '</div>
<div>
<a href="' . $link . '" class="button buttonPrimary">
<span>'.WCF::getLanguage()->get('shop.product.order.order').'</span>
' . $sliderPrice . '
</a>
</div>
</div>
</div>
</li>
';
}
}
$sliderProduct .= '
</ul>
</div>
<script data-relocate="true">
$(function () {
$(".slideshowContainer").wcfSlideshow();
});
</script>
';
WCF::getTPL()->assign('sliderProducts', $sliderProduct);
Alles anzeigen
Der Haken bei PHP-Code manuell im Template platzieren darf nicht gesetzt sein !
Unter Inhalt brauchst du nurnoch an der Stelle deiner Wahl die Variable {@$sliderProducts} setzen.
Wer nicht möchte, dass der Titel gekürzt wird, der muss folgende Zeile auskommentieren:
Ich hoffe der ein oder andere hat Spaß damit.
Für jede Art von Verbesserung, Optimierung und generell Feedback bin ich sehr dankbar.
Referenz: https://www.viecode.com/support/thread…dukte/?pageNo=2