Seite 1 von 2

Probleme infolge fehlender column_left

Verfasst: Di 19. Feb 2013, 19:57
von Kopernikus
Wie ein Kollege vor mir schon in einem anderen Thread beschrieben hat, stehe auch ich vor dem Problem, dass ich ein Modul einbauen möchte welches eine Veränderung in der admin/column_left.php erfordert. Da es diese Datei nicht mehr gibt, stehe ich nun vor dem grossen Problem, dass ich nicht weiss wo ich den Code einbauen muss. Konkret handelt es sich um ein Ampelmodul, welches nebst dem Warenbestand auch die Lieferzeit dynamisch reguliert (Beispiel Lagerampel rot = Textausgabe: Lieferzeit ca. 5-10 Tage)

Wie gesagt habe ich genau ein solches Modul gefunden und sollte nun in der column_left.php folgende Veränderungen ausführen:

Code: Alles auswählen

Suchen nach:

if (($_SESSION['customers_status']['customers_status_id'] == '0') && ($admin_access['categories'] == '1')) echo '<a href="' . xtc_href_link(FILENAME_CATEGORIES, '', 'NONSSL') . '" class="menuBoxContentLink"> -' . BOX_CATEGORIES . '</a><br>';

In der darauffolgenden Zeile das hier einfügen:

if (($_SESSION['customers_status']['customers_status_id'] == '0') && ($admin_access['ampelsystem'] == '1')) echo '<a href="' . xtc_href_link(FILENAME_AMPELSYSTEM, '', 'NONSSL') . '" class="menuBoxContentLink"> -' . BOX_AMPELSYSTEM . '</a><br>';
Nun habe ich gelesen, dass die column_left.php in die header.php verschoben wurde. Doch dort finde ich keine entsprechenden Datenbankanweisungen. Wie müsste ich denn den obigen Code genau umschreiben? Könnt Ihr mir da einen Tipp geben?

Herzlichen Dank im Voraus :)

Re: Probleme infolge fehlender column_left

Verfasst: Di 19. Feb 2013, 20:42
von Xantiva
Du findest aber so etwas:

Code: Alles auswählen

    BOX_CATEGORIES => array('acl' => 'categories',
                            'link' => FILENAME_CATEGORIES,
                            'icon' => 'icon_produkt.png'),
Dann würde das bei Dir so etwas entsprechen:

Code: Alles auswählen

    BOX_AMPELSYSTEM => array('acl' => 'ampelsystem',
                            'link' => FILENAME_AMPELSYSTEM,
                            'icon' => 'icon_produkt.png'),
Wobei in Deiner Lösung keine Grafik vorkommt und hier dann einfach das Produkt Icon angezeigt würde ...

(Wie fanden unsere Lösung etwas "übersichtlicher" ;) )

Ciao,
Mike

Re: Probleme infolge fehlender column_left

Verfasst: Di 19. Feb 2013, 23:04
von Kopernikus
Super, herzlichen Dank :D

Ich konnte nun alle entsprechenden Codes einbauen, erhalte aber noch folgenden SQL Fehler:

Code: Alles auswählen

[WEB-Shop SQL Error]

/home/httpd/vhosts/mein-shop.ch/httpdocs/webs14/includes/classes/product.php:551
    1146 - Table 'xtc2.ampel_config' doesn't exist
    SELECT * FROM ampel_config
Folgendes habe ich in die products.php eingebaut:

Code: Alles auswählen

$ampel_config_query = xtDBquery('SELECT * FROM ' . TABLE_AMPEL_CONFIG);
			$ampel_config = xtc_db_fetch_array($ampel_config_query);
			
			$stime_ampel = $array['products_shippingtime'];

			if ($stime_ampel == $ampel_config['ampel_green'])
				$ampel = '<img src="templates/'.CURRENT_TEMPLATE.'/img/ampel_gruen.gif" alt="'.AMPEL_GRUEN.'" />';
			else if ($stime_ampel == $ampel_config['ampel_yellow'])
				$ampel = '<img src="templates/'.CURRENT_TEMPLATE.'/img/ampel_gelb.gif" alt="'.AMPEL_GELB.'" />';
			else
				$ampel = '<img src="templates/'.CURRENT_TEMPLATE.'/img/ampel_rot.gif" alt="'.AMPEL_ROT.'" />';
Du hast nicht per Zufall eine Ahnung, wo der Fehler liegen könnte?

Re: Probleme infolge fehlender column_left

Verfasst: Di 19. Feb 2013, 23:23
von Rainer
Hallo,

die angefragte Tabelle in der DB existiert?

Wenn Du das ganze fertig hast würde mich die Lösung auch interessieren. Danke.

Re: Probleme infolge fehlender column_left

Verfasst: Mi 20. Feb 2013, 07:53
von Kopernikus
Hallo Rainer

Ja, die Tabelle wurde erstellt. Die gesamten Änderungen in der products.php lauten wie folgt:

Code: Alles auswählen

Suche nach:

function buildDataArray(&$array,$image='thumbnail')

In der Funktion danach suchen:

$shipping_status_name = $main->getShippingStatusName($array['products_shippingtime']);
			$shipping_status_image = $main->getShippingStatusImage($array['products_shippingtime']);
			
Und in der darauffolgenden Zeile folgendes einfügen:

//--- Ampel
			$ampel_config_query = xtDBquery('SELECT * FROM ' . TABLE_AMPEL_CONFIG);
			$ampel_config = xtc_db_fetch_array($ampel_config_query);
			
			$stime_ampel = $array['products_shippingtime'];

			if ($stime_ampel == $ampel_config['ampel_green'])
				$ampel = '<img src="templates/'.CURRENT_TEMPLATE.'/img/ampel_gruen.gif" alt="'.AMPEL_GRUEN.'" />';
			else if ($stime_ampel == $ampel_config['ampel_yellow'])
				$ampel = '<img src="templates/'.CURRENT_TEMPLATE.'/img/ampel_gelb.gif" alt="'.AMPEL_GELB.'" />';
			else
				$ampel = '<img src="templates/'.CURRENT_TEMPLATE.'/img/ampel_rot.gif" alt="'.AMPEL_ROT.'" />';
			//--- Ampel EOF
			
In der selben Funktion nach der Zeile suchen:

'PRODUCTS_ID'=>$array['products_id'],

In der nächsten Zeile folgendes einfügen:

'PRODUCTS_AMPEL' => $ampel,
'AMPEL_ACTIVE' => $ampel_config['ampel_active'],
'SHOW_PROD_QUANT_TEXT' => $ampel_config['show_prod_quant'],
'PROD_QUANT' => $array['products_quantity'],
und die DB wird wie folgt angelegt:

Code: Alles auswählen

DROP TABLE IF EXISTS `ampel_config`;
CREATE TABLE IF NOT EXISTS `ampel_config` (
  `ampel_active` tinyint(1) NOT NULL,
  `show_prod_quant` tinyint(1) NOT NULL,
  `ampel_yellow` smallint(4) NOT NULL,
  `ampel_green` tinyint(2) NOT NULL
) TYPE=MyISAM;

INSERT INTO `ampel_config` (`ampel_active`, `show_prod_quant`, `ampel_yellow`, `ampel_green`) VALUES (1, 1, 2, 1);
ALTER TABLE `admin_access` ADD `ampelsystem` INT( 1 ) NOT NULL ;
UPDATE `admin_access` SET `ampelsystem` = '1' WHERE customers_id = '1' ;
Sobald das Modul bei mir funktioniert, werde ich eine Anleitung zum Einbau in die Webs schreiben und es hier publizieren :)

Re: Probleme infolge fehlender column_left

Verfasst: Mi 20. Feb 2013, 07:58
von Kopernikus
Rainer hat geschrieben:Hallo,

die angefragte Tabelle in der DB existiert?

Wenn Du das ganze fertig hast würde mich die Lösung auch interessieren. Danke.
Gemäss Fehlermeldung (Zeile 551) muss hier der Fehler liegen:

Code: Alles auswählen

$ampel_config_query = xtDBquery('SELECT * FROM ' . TABLE_AMPEL_CONFIG);

Re: Probleme infolge fehlender column_left

Verfasst: Mi 20. Feb 2013, 08:14
von Kopernikus
Oh je, bin ich doof! Der Fehler wurde mir ja klar angezeigt. Ich habe mich noch gewundert, was der Anhang xtc2 soll. Aber das ist meine DB wie sie nach der Migration heisst. Ich habe den SQL Befehl in eine falsche DB integriert. So nun wird wenigstens der Shop wieder geladen. Nun kommt aber eine neue Fehlermeldung, die ich mir aber zunächst in Ruhe ansehen muss. Wie gesagt, wenn alles klappt, dann halte ich mein Versprechen und publiziere hier die Anleitung zum Einbau.

Re: Probleme infolge fehlender column_left

Verfasst: Mi 20. Feb 2013, 13:49
von Kopernikus
@Rainer

Also: Ich habe das Modul nun zum Laufen gebracht. Leider ist es aber nicht das, für was ich es gehalten habe. Um es nochmals kurz zu formulieren was ich gesucht habe.

Ich suche eine Lagerampel für Produkte und Atributte welche einerseits den Bestand über Grafiken ausspuckt und dabei gleichzeitig die Lieferzeit dynamisch anpasst.

Beispiel:

10 Stück an Lager = Ampel grün + Text: Sofort Lieferbar
0 Stück an Lager = Ampel rot + Text Lieferzeit ca. 7 Tage

Vielleicht weiss hier jemand wie man dies relativ einfach umsetzen könnte. Ich werde das Modul wieder ausbauen, da es für mich keinen Sinn macht.

Gibt es für eine solche Ampel möglicherweise bereits eine Lösung?

Re: Probleme infolge fehlender column_left

Verfasst: Mi 20. Feb 2013, 17:39
von Rainer
Hallo,

also wenn ich mir die Beschreibung im Wiki http://wiki.webs.de/index.php/Modul:Lagerampel anschaue, müsste doch glaube ich nur noch der Text der Lieferezeit in der Bedingung ergänzt werden damit er aktuelle Wert überschrieben wird.

Re: Probleme infolge fehlender column_left

Verfasst: Mi 20. Feb 2013, 19:16
von Xantiva
Hast Du Dir mal im Webs - Template den Smarty modifier.getStockImage.php angesehen?

Da muss noch der Pfad zu den Grafiken angepasst werden, aber ...

Wobei man noch beachten muss, an welchen Stellen überall die Lieferzeit angezeigt wird.