Dieses Dokument wurde erstellt von MaleBorg vom Zen-Cart.at Team
Getestet wurde es mit Zen-Cart 1.3.8 und Zen-Cart 1.3.9 unter PHP 5.3
Anleitung für Lieferzeitangabe beim Anlegen eines Artikels in Zen-Cart
-----------------------------------------------------------------------
ACHTUNG: Es werden einige Originaldateien sowie die Datenbank geändert. Bitte machen Sie VORHER ein Backup!!!
In den Pfadangaben gibt es 2 Dinge zu beachten:
IHRTEMPLATE ist zu ersetzen durch den von Ihnen benutzen Templatenamen
IHRADMIN ist zu ersetzen durch Ihren Pfad zum Adminbereich, sofern Sie das Adminverzeichnis umbenannt haben sollten.
Für das Bearbeiten der Dateien, insbesondere der Sprachdateien empfehle ich Ihnen das Programm NOTEPAD++
WICHTIG: Diese Anleitung ist sehr umfangreich und benötigt volle Konzentration. Bitte führen Sie die einzelnen Schritte gewissenhaft aus.
TEIL 1 - Modifikation Artikel anlegen:
-------------------------------------
1) Im Adminbereich --> Tools --> SQL Patches einspielen folgendes eintragen:
ALTER TABLE `products` ADD `products_delivery_time_status` INT( 11 ) NOT NULL DEFAULT '1';
Damit wird das Feld products_delivery_time_status in der Tabelle products angelegt. In diesem wird die Lieferzeit ID hinterlegt.
2) a)Öffnen Sie die Datei IHRADMIN/includes/modules/product/collect_info.php
Suchen Sie nach:
$parameters = array('products_name' => '',
'products_description' => '',
'products_url' => '',
'products_id' => '',
'products_quantity' => '',
'products_model' => '',
'products_image' => '',
'products_price' => '',
'products_virtual' => DEFAULT_PRODUCT_PRODUCTS_VIRTUAL,
'products_weight' => '',
'products_date_added' => '',
'products_last_modified' => '',
'products_date_available' => '',
'products_status' => '',
'products_tax_class_id' => DEFAULT_PRODUCT_TAX_CLASS_ID,
'manufacturers_id' => '',
'products_quantity_order_min' => '',
'products_quantity_order_units' => '',
'products_priced_by_attribute' => '',
'product_is_free' => '',
'product_is_call' => '',
'products_quantity_mixed' => '',
'product_is_always_free_shipping' => DEFAULT_PRODUCT_PRODUCTS_IS_ALWAYS_FREE_SHIPPING,
'products_qty_box_status' => PRODUCTS_QTY_BOX_STATUS,
'products_quantity_order_max' => '0',
'products_sort_order' => '0',
'products_discount_type' => '0',
'products_discount_type_from' => '0',
'products_price_sorter' => '0',
'master_categories_id' => '',
);
und ersetzen Sie es durch:
$parameters = array('products_name' => '',
'products_description' => '',
'products_url' => '',
'products_id' => '',
'products_quantity' => '',
'products_model' => '',
'products_image' => '',
'products_price' => '',
'products_virtual' => DEFAULT_PRODUCT_PRODUCTS_VIRTUAL,
'products_weight' => '',
'products_date_added' => '',
'products_last_modified' => '',
'products_date_available' => '',
'products_status' => '',
'products_tax_class_id' => DEFAULT_PRODUCT_TAX_CLASS_ID,
'manufacturers_id' => '',
'products_quantity_order_min' => '',
'products_quantity_order_units' => '',
'products_priced_by_attribute' => '',
'product_is_free' => '',
'product_is_call' => '',
'products_quantity_mixed' => '',
'product_is_always_free_shipping' => DEFAULT_PRODUCT_PRODUCTS_IS_ALWAYS_FREE_SHIPPING,
'products_qty_box_status' => PRODUCTS_QTY_BOX_STATUS,
'products_quantity_order_max' => '0',
'products_sort_order' => '0',
'products_discount_type' => '0',
'products_discount_type_from' => '0',
'products_price_sorter' => '0',
'master_categories_id' => '',
'products_delivery_time_status' => ''
);
b) In der gleichen Datei suchen Sie nach
if (isset($_GET['pID']) && empty($_POST)) {
$product = $db->Execute("select pd.products_name, pd.products_description, pd.products_url,
p.products_id, p.products_quantity, p.products_model,
p.products_image, p.products_price, p.products_virtual, p.products_weight,
p.products_date_added, p.products_last_modified,
date_format(p.products_date_available, '%Y-%m-%d') as
products_date_available, p.products_status, p.products_tax_class_id,
p.manufacturers_id,
p.products_quantity_order_min, p.products_quantity_order_units, p.products_priced_by_attribute,
p.product_is_free, p.product_is_call, p.products_quantity_mixed,
p.product_is_always_free_shipping, p.products_qty_box_status, p.products_quantity_order_max,
p.products_sort_order,
p.products_discount_type, p.products_discount_type_from,
p.products_price_sorter, p.master_categories_id
from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd
where p.products_id = '" . (int)$_GET['pID'] . "'
and p.products_id = pd.products_id
and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'");
und ersetzen es durch
if (isset($_GET['pID']) && empty($_POST)) {
$product = $db->Execute("select pd.products_name, pd.products_description, pd.products_url,
p.products_id, p.products_quantity, p.products_model,
p.products_image, p.products_price, p.products_virtual, p.products_weight,
p.products_date_added, p.products_last_modified,
date_format(p.products_date_available, '%Y-%m-%d') as
products_date_available, p.products_status, p.products_tax_class_id,
p.manufacturers_id,
p.products_quantity_order_min, p.products_quantity_order_units, p.products_priced_by_attribute,
p.product_is_free, p.product_is_call, p.products_quantity_mixed,
p.product_is_always_free_shipping, p.products_qty_box_status, p.products_quantity_order_max,
p.products_sort_order,
p.products_discount_type, p.products_discount_type_from,
p.products_price_sorter, p.master_categories_id, p.products_delivery_time_status
from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd
where p.products_id = '" . (int)$_GET['pID'] . "'
and p.products_id = pd.products_id
and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'");
c) In der gleichen Datei suchen Sie nach
(YYYY-MM-DD) |
|
und fügen direkt DAVOR ein
|
'', 'text' => ''));
$delivery_time_status_array[] = array('id' => 1, 'text' => TEXT_PRODUCTS_DELIVERY_TIME_STATUS_1);
$delivery_time_status_array[] = array('id' => 2, 'text' => TEXT_PRODUCTS_DELIVERY_TIME_STATUS_2);
?>
products_delivery_time_status); ?> |
|
3) In der Datei IHRADMIN/includes/languages/german/product.php fügen Sie folgendes ein:
define('TEXT_PRODUCTS_DELIVERY_TIME_STATUS', 'Lieferzeitangabe:');
define('TEXT_PRODUCTS_DELIVERY_TIME_STATUS_1', 'Lieferzeit 3 - 5 Tage');
define('TEXT_PRODUCTS_DELIVERY_TIME_STATUS_2', 'Lieferzeit 2 - 4 Wochen');
Sollten Sie mehrere Sprachen in Ihrem Adminbereich verwenden, müssen Sie es in den entsprechenden Dateien ebenfalls einfügen.
4) Öffnen Sie die Datei IHRADMIN/includes/modules/update_products.php
Suchen Sie nach
$sql_data_array = array('products_quantity' => $products_quantity,
'products_type' => zen_db_prepare_input($_GET['product_type']),
'products_model' => zen_db_prepare_input($_POST['products_model']),
'products_price' => $products_price,
'products_date_available' => $products_date_available,
'products_weight' => $products_weight,
'products_status' => zen_db_prepare_input($_POST['products_status']),
'products_virtual' => zen_db_prepare_input($_POST['products_virtual']),
'products_tax_class_id' => zen_db_prepare_input($_POST['products_tax_class_id']),
'manufacturers_id' => $manufacturers_id,
'products_quantity_order_min' => zen_db_prepare_input($_POST['products_quantity_order_min']),
'products_quantity_order_units' => zen_db_prepare_input($_POST['products_quantity_order_units']),
'products_priced_by_attribute' => zen_db_prepare_input($_POST['products_priced_by_attribute']),
'product_is_free' => zen_db_prepare_input($_POST['product_is_free']),
'product_is_call' => zen_db_prepare_input($_POST['product_is_call']),
'products_quantity_mixed' => zen_db_prepare_input($_POST['products_quantity_mixed']),
'product_is_always_free_shipping' => zen_db_prepare_input($_POST['product_is_always_free_shipping']),
'products_qty_box_status' => zen_db_prepare_input($_POST['products_qty_box_status']),
'products_quantity_order_max' => zen_db_prepare_input($_POST['products_quantity_order_max']),
'products_sort_order' => (int)zen_db_prepare_input($_POST['products_sort_order']),
'products_discount_type' => zen_db_prepare_input($_POST['products_discount_type']),
'products_discount_type_from' => zen_db_prepare_input($_POST['products_discount_type_from']),
'products_price_sorter' => zen_db_prepare_input($_POST['products_price_sorter']),
);
und ersetzen Sie es durch
$sql_data_array = array('products_quantity' => $products_quantity,
'products_type' => zen_db_prepare_input($_GET['product_type']),
'products_model' => zen_db_prepare_input($_POST['products_model']),
'products_price' => $products_price,
'products_date_available' => $products_date_available,
'products_weight' => $products_weight,
'products_status' => zen_db_prepare_input($_POST['products_status']),
'products_virtual' => zen_db_prepare_input($_POST['products_virtual']),
'products_tax_class_id' => zen_db_prepare_input($_POST['products_tax_class_id']),
'manufacturers_id' => $manufacturers_id,
'products_quantity_order_min' => zen_db_prepare_input($_POST['products_quantity_order_min']),
'products_quantity_order_units' => zen_db_prepare_input($_POST['products_quantity_order_units']),
'products_priced_by_attribute' => zen_db_prepare_input($_POST['products_priced_by_attribute']),
'product_is_free' => zen_db_prepare_input($_POST['product_is_free']),
'product_is_call' => zen_db_prepare_input($_POST['product_is_call']),
'products_quantity_mixed' => zen_db_prepare_input($_POST['products_quantity_mixed']),
'product_is_always_free_shipping' => zen_db_prepare_input($_POST['product_is_always_free_shipping']),
'products_qty_box_status' => zen_db_prepare_input($_POST['products_qty_box_status']),
'products_quantity_order_max' => zen_db_prepare_input($_POST['products_quantity_order_max']),
'products_sort_order' => (int)zen_db_prepare_input($_POST['products_sort_order']),
'products_discount_type' => zen_db_prepare_input($_POST['products_discount_type']),
'products_discount_type_from' => zen_db_prepare_input($_POST['products_discount_type_from']),
'products_price_sorter' => zen_db_prepare_input($_POST['products_price_sorter']),
'products_delivery_time_status' => zen_db_prepare_input($_POST['products_delivery_time_status']),
);
5) Installation Teil 1 abgeschlossen. Damit können Sie nun beim Anlegen oder bearbeiten des Artikels eine der beiden Lieferzeiten auswählen.
Sollten Sie mehr als 2 Angaben benötigen, müssen Sie die Angaben unter 2c) und 3) entsprechend erweitern.
TEIL 2 - Modifikation Shop, damit die Lieferzeit auch angezeigt wird
--------------------------------------------------------------------
1) Öffnen Sie die Datei includes/languages/german.php und fügen Sie Folgendes ein
// Modifikation Lieferanzeige
define('TEXT_PRODUCTS_DELIVERY_TIME_STATUS_1', 'Lieferzeit 3 - 5 Tage');
define('TEXT_PRODUCTS_DELIVERY_TIME_STATUS_2', 'Lieferzeit 2 - 4 Wochen');
Sollten Sie beim Teil 1 mehr als 2 Angaben gemacht haben, oder die Texte geändert haben, dann müssen Sie diese Einträge hier entsprechend anpassen.
Sollten Sie mehrere Sprachen im Shop verwenden, dann müssen Sie diese Einträge in die entsprechenden Dateien einfügen.
2) Öffnen Sie die Datei includes/templates/IHRTEMPLATE/templates/tpl_product_info_display.php
Suchen Sie nach
Etwas oberhalb davon finden Sie die Zeilen
echo $display_qty;
echo $display_button;
Fügen Sie davor diese Zeilen ein
if ($products_delivery_time == 1) {
echo TEXT_PRODUCTS_DELIVERY_TIME_STATUS_1 . '
';
} elseif ($products_delivery_time == 2){
echo TEXT_PRODUCTS_DELIVERY_TIME_STATUS_2 . '
';
}
Es sollte nun wie folgt ausschauen
if ($products_delivery_time == 1) {
echo TEXT_PRODUCTS_DELIVERY_TIME_STATUS_1 . '
';
} elseif ($products_delivery_time == 2){
echo TEXT_PRODUCTS_DELIVERY_TIME_STATUS_2 . '
';
}
echo $display_qty;
echo $display_button;
Sollten Sie mehr als 2 Angaben in Teil 1 angelegt haben, dann müssen Sie diese Einträge entsprechend anpassen.
3) Öffnen Sie die Datei includes/modules/pages/product_info/main_template_vars.php
Ersetzen Sie
$sql = "select p.products_id, pd.products_name,
pd.products_description, p.products_model,
p.products_quantity, p.products_image,
pd.products_url, p.products_price,
p.products_tax_class_id, p.products_date_added,
p.products_date_available, p.manufacturers_id, p.products_quantity,
p.products_weight, p.products_priced_by_attribute, p.product_is_free,
p.products_qty_box_status,
p.products_quantity_order_max,
p.products_discount_type, p.products_discount_type_from, p.products_sort_order, p.products_price_sorter
from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd
where p.products_status = '1'
and p.products_id = '" . (int)$_GET['products_id'] . "'
and pd.products_id = p.products_id
and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'";
durch
$sql = "select p.products_id, pd.products_name,
pd.products_description, p.products_model,
p.products_quantity, p.products_image,
pd.products_url, p.products_price,
p.products_tax_class_id, p.products_date_added,
p.products_date_available, p.manufacturers_id, p.products_quantity,
p.products_weight, p.products_priced_by_attribute, p.product_is_free,
p.products_qty_box_status,
p.products_quantity_order_max,
p.products_discount_type, p.products_discount_type_from, p.products_sort_order, p.products_price_sorter, p.products_delivery_time_status
from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd
where p.products_status = '1'
and p.products_id = '" . (int)$_GET['products_id'] . "'
and pd.products_id = p.products_id
and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'";
Suchen Sie nach
$product_info = $db->Execute($sql);
und fügen direkt darunter ein
$products_delivery_time = $product_info->fields['products_delivery_time_status'];
4) Im Adminbereich --> Tools --> SQL Patches installieren folgendes einfügen und auf SENDEN klicken.
INSERT INTO `configuration` ( `configuration_id` , `configuration_title` , `configuration_key` , `configuration_value` , `configuration_description` , `configuration_group_id` , `sort_order` , `last_modified` , `date_added` , `use_function` , `set_function` )
VALUES (
'', 'Display delivery time', 'PRODUCT_LIST_DELIVERY_TIME', '0', 'Do you want to display the delivery time?', '8', '7', now() , now(), NULL , NULL);
INSERT INTO `configuration_language` ( `configuration_id` , `configuration_title` , `configuration_key` , `configuration_language_id` , `configuration_description` , `last_modified` , `date_added` )
VALUES (
'', 'Lieferzeit anzeigen', 'PRODUCT_LIST_DELIVERY_TIME', '43', 'Wollen Sie die Lieferzeit in der Artikelliste anzeigen?', now(), now());
5) Öffnen Sie die Datei /includes/languages/german/index.php
Suchen Sie nach
define('TABLE_HEADING_WEIGHT','Gewicht');
und fügen direkt darunter ein
define('TABLE_HEADING_DELIVERY_TIME','Lieferzeit');
Sollten Sie mehrere Sprachen im Shop verwenden, dann müssen Sie diese Einträge in die entsprechenden Dateien einfügen.
6) Öffnen Sie die Datei includes/index_filters/default_filter.php
und suchen nach
case 'PRODUCT_LIST_WEIGHT':
$listing_sql .= "p.products_weight " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
break;
Direkt danach folgendes einfügen
case 'PRODUCT_LIST_DELIVERY_TIME':
$listing_sql .= "p.products_delivery_time_status " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
break;
7) Öffnen Sie die Datei includes/modules/pages/index/main_template_vars.php
und suchen nach
'PRODUCT_LIST_WEIGHT' => PRODUCT_LIST_WEIGHT,
Direkt dahinter folgendes einfügen
'PRODUCT_LIST_DELIVERY_TIME' => PRODUCT_LIST_DELIVERY_TIME,
In der gleichen Datei suchen Sie auch nach
case 'PRODUCT_LIST_WEIGHT':
$select_column_list .= 'p.products_weight, ';
break;
und fügen direkt darunter ein
case 'PRODUCT_LIST_DELIVERY_TIME':
$select_column_list .= 'p.products_delivery_time_status, ';
break;
8) Öffnen Sie die Datei includes/modules/product_listing.php
und suchen nach
case 'PRODUCT_LIST_WEIGHT':
$lc_text = TABLE_HEADING_WEIGHT;
$lc_align = 'right';
$zc_col_count_description++;
break;
Direkt dahinter folgendes einfügen
case 'PRODUCT_LIST_DELIVERY_TIME':
$lc_text = TABLE_HEADING_DELIVERY_TIME;
$lc_align = 'center';
$zc_col_count_description++;
break;
In der gleichen Datei suchen Sie nach
case 'PRODUCT_LIST_WEIGHT':
$lc_align = 'right';
$lc_text = $listing->fields['products_weight'];
break;
Direkt dahinter einfügen
case 'PRODUCT_LIST_DELIVERY_TIME':
$lc_align = 'center';
$lc_text = '';
if ($listing->fields['products_delivery_time_status'] == 1) {
$lc_text .= TEXT_PRODUCTS_DELIVERY_TIME_STATUS_1;
} elseif ($listing->fields['products_delivery_time_status'] == 2){
$lc_text .= TEXT_PRODUCTS_DELIVERY_TIME_STATUS_2;
}
$lc_text .= '
';
break;
9) Teil 2 ist abgeschlossen
Damit die Lieferzeit nun in der Artikeliste auftaucht, müssen Sie im
Adminbereich --> Konfiguration --> Artikelliste --> Lieferzeit anzeigen eine Zahl größer 0 eingeben.
Die Zahl gibt die Spalte an, in der die Lieferampel auftauchen soll.