WBCE CMS – Way Better Content Editing.
You are not logged in.
Es scheint, dass seit dem Sicherheitsupdate (Bakery Version 1.84) PHP 7.x Verkäufe ohne ausreichenden Lagerbestand auch dann möglich sind, wenn dies gar nicht erwünscht ist. Früher war das Verhalten so, dass beim Platzieren eines Produkts im Warenkorb mit Lagerbestand = 0 eine Fehlermeldung angezeigt worden ist und das Produkt nicht in den Warenkorb gelegt werden konnte. Das funktioniert jetzt nicht mehr, das Verhalten ist immer so, als sei die Option "Verkäufe ohne ausreichenden Lagerbestand zulassen" immer aktiviert.
Es wäre schön, wenn sich das mal wer anschauen könnte.
Last edited by florian (30.08.2018 07:45:27)
Offline
Gefunden. view.php
if (is_numeric($stock) && !empty($stock)) {
ändern zu
if (is_numeric($stock)) {
Es gibt aber noch weitere Unstimmigkeiten.
Last edited by florian (30.08.2018 07:45:02)
Offline
Ich habe nun zusätzlich das Problem, wenn der Lagerbestand leergelassen wird zeigt es immer "not available" an, also als wäre er Null. Kann man das auch noch beheben?
Vielen Dank schon mal fürs anschauen.
Offline
Versuch mal, o.g. Zeile in der view.php ändern zu
if (is_numeric($stock) || empty($stock)) {
dann ist die Bedingung erfüllt, wenn der Lagerbestand "eine Zahl oder leer" ist, anstatt von nur "eine Zahl" oder, wie es vorher war, "eine Zahl und nicht leer".
Offline
Vielen Dank fürs Nachschauen.
Der erste Vorschlag:
if (is_numeric($stock)) {
ist okay, der 2. Vorschlag produziert einen Fehler, wenn man etwas aus dem Warenkorb löscht.
Ich glaube meine Problem liegt eher bei der Textanzeige des Lagerbestands. Wenn der Lagerbestand leer ist, sollte kein Text erscheinen und wenn der Lagerbestand auf Null gesetzt ist, sollte stehen "nicht lieferbar". Nun wird jedoch überall auf den Platzhalter $MOD_BAKERY['TXT_N/A'] zugegriffen und es steht überall k.A., ausser ich gebe eine Zahl ein beim Lagerbestand, die nicht Null ist, dann steht wie gewünscht nichts.
Offline
ist okay, der 2. Vorschlag produziert einen Fehler, wenn man etwas aus dem Warenkorb löscht.
Kann ich nicht reproduzieren. Was für ein Fehler erscheint denn?
Oder meinst Du den Hinweis "Der Warenkorb ist leer"?
Die gewünschte Ausgabe des Textes ist ja noch was anderes. Dafür muss in der view_item.php und view_overview.php der Code
// Only show if item stock is not blank
if ((empty($item_stock) && $item_stock!=0) && $setting_stock_mode != 'none') {
$stock = $MOD_BAKERY['TXT_N/A'];
} else {
// Display number of items
if ($setting_stock_mode == 'number') {
if ($item_stock < 1) {
$stock = 0;
} else {
$stock = $item_stock;
}
// Display stock image
} elseif ($setting_stock_mode == 'img' && is_numeric($setting_stock_limit) && !empty($setting_stock_limit)) {
if ($item_stock < 1) {
$stock = '<img src="'.WB_URL.'/modules/bakery/images/out_of_stock.gif" alt="'.$MOD_BAKERY['TXT_OUT_OF_STOCK'].'" class="mod_bakery_item_stock_img_f" />';
} elseif ($item_stock > $setting_stock_limit) {
$stock = '<img src="'.WB_URL.'/modules/bakery/images/in_stock.gif" alt="'.$MOD_BAKERY['TXT_IN_STOCK'].'" class="mod_bakery_item_stock_img_f" />';
} else {
$stock = '<img src="'.WB_URL.'/modules/bakery/images/short_of_stock.gif" alt="'.$MOD_BAKERY['TXT_SHORT_OF_STOCK'].'" class="mod_bakery_item_stock_img_f" />';
}
// Display stock text message
} elseif ($setting_stock_mode == 'text' && is_numeric($setting_stock_limit) && !empty($setting_stock_limit)) {
if ($item_stock < 1) {
$stock = '<span class="mod_bakery_item_out_of_stock_f">'.$MOD_BAKERY['TXT_OUT_OF_STOCK'].'</span>';
} elseif ($item_stock > $setting_stock_limit) {
$stock = '<span class="mod_bakery_item_in_stock_f">'.$MOD_BAKERY['TXT_IN_STOCK'].'</span>';
} else {
$stock = '<span class="mod_bakery_item_short_of_stock_f">'.$MOD_BAKERY['TXT_SHORT_OF_STOCK'].'</span>';
}
// Display nothing
} else {
$stock = '';
}
}
geändert werden zu (quick & dirty, ist jetzt nur für Textausgabe und nicht Zahl oder Bild angepasst)
if ($setting_stock_mode != 'none') {
// Display number of items
if ($setting_stock_mode == 'number') {
if ($item_stock < 1) {
$stock = 0;
} else {
$stock = $item_stock;
}
// Display stock image
} elseif ($setting_stock_mode == 'img' && is_numeric($setting_stock_limit) && !empty($setting_stock_limit)) {
if ($item_stock < 1) {
$stock = '<img src="'.WB_URL.'/modules/bakery/images/out_of_stock.gif" alt="'.$MOD_BAKERY['TXT_OUT_OF_STOCK'].'" class="mod_bakery_main_stock_img_f" />';
} elseif ($item_stock > $setting_stock_limit) {
$stock = '<img src="'.WB_URL.'/modules/bakery/images/in_stock.gif" alt="'.$MOD_BAKERY['TXT_IN_STOCK'].'" class="mod_bakery_main_stock_img_f" />';
} else {
$stock = '<img src="'.WB_URL.'/modules/bakery/images/short_of_stock.gif" alt="'.$MOD_BAKERY['TXT_SHORT_OF_STOCK'].'" class="mod_bakery_main_stock_img_f" />';
}
// Display stock text message
} elseif ($setting_stock_mode == 'text') {
if ($item_stock!='') {
if ($item_stock < 1) {
$stock = '<span class="mod_bakery_main_out_of_stock_f">'.$MOD_BAKERY['TXT_OUT_OF_STOCK'].'</span>';
} elseif ($item_stock > $setting_stock_limit) {
$stock = '<span class="mod_bakery_main_in_stock_f">'.$MOD_BAKERY['TXT_IN_STOCK'].'</span>';
} else {
$stock = '<span class="mod_bakery_main_short_of_stock_f">'.$MOD_BAKERY['TXT_SHORT_OF_STOCK'].'</span>';
}
} else {
$stock='';
}
} else {
$stock = '';
}
}
Offline
Vielen Dank quick & dirty ist perfekt für mich!
Sorry, das war kein Fehler sondern eine Warnmeldung:
Warning: A non-numeric value encountered in .../modules/bakery/view.php on line 371
Aber wie ich nun merkte, wird der Lagerbestand immer auf Null gesetzt statt leer gelassen, wenn ich den Code auf
if (is_numeric($stock) || empty($stock)) {
ändere.
Die Warnmeldung kam glaube ich erst, als ich nachträglich den Code änderte und ich schon etwas im Warenkorb hatte.
Offline