Barcode –> keine URL sondern Objektinformationen
-
Hi,
die Datei die du dort geändert hast ist ein Smarty Cache. Es ist sinnvoller das Template selber (main_objectdetail.tpl) zu editieren, da die Änderung beim nächste Cache refresh wieder überschrieben ist.Gruß,
ds -
Puh okay!
Aber wie binde ich den Code da ein, einfaches Copy&Paste reicht/funktioniert da leider nicht! )=
-
Du kannst deinen Code in einen Php-Block setzen: [{php}]hier dann den code rein[{/php}], anstelle von und anstatt $_qr_ausgabe = dann einfach echo
-
Hallo!
Ich poste hier nun nochmal den richtigen Code inkl. dem JavaScript öffnen des Barcodes.
- main_objecttype.tpl unter \i-doit\src\themes\default\smarty\templates\content\top
[{php}]#aktuelle Objekt-ID $_qr_objid = $_GET['objID']; #benoetigte ID $_qr_abfrage = "SELECT isys_catg_model_list__isys_model_title__id FROM isys_catg_model_list WHERE isys_catg_model_list__isys_obj__id = ($_qr_objid)"; $_qr_ergebnis = mysql_query($_qr_abfrage); while($_qr_row = mysql_fetch_object($_qr_ergebnis)) { $_qr_id = $_qr_row->isys_catg_model_list__isys_model_title__id; }; # Bezeichnung selektieren $_qr_abfrage = "SELECT isys_model_title__title FROM isys_model_title WHERE isys_model_title__id = ($_qr_id)"; $_qr_ergebnis = mysql_query($_qr_abfrage); while($_qr_row = mysql_fetch_object($_qr_ergebnis)) { $_qr_bezeichnung = $_qr_row->isys_model_title__title; }; #Seriennummer selektieren $_qr_abfrage = "SELECT isys_catg_model_list__serial FROM isys_catg_model_list WHERE isys_catg_model_list__isys_obj__id = ($_qr_objid)"; $_qr_ergebnis = mysql_query($_qr_abfrage); while($_qr_row = mysql_fetch_object($_qr_ergebnis)) { $_qr_sn = $_qr_row->isys_catg_model_list__serial; }; #Firmware selektieren $_qr_abfrage = "SELECT isys_catg_model_list__firmware FROM isys_catg_model_list WHERE isys_catg_model_list__isys_obj__id = ($_qr_objid)"; $_qr_ergebnis = mysql_query($_qr_abfrage); while($_qr_row = mysql_fetch_object($_qr_ergebnis)) { $_qr_fw = $_qr_row->isys_catg_model_list__firmware ; }; #Beschreibung selektieren $_qr_abfrage = "SELECT isys_obj__description FROM isys_obj WHERE isys_obj__id = ($_qr_objid)"; $_qr_ergebnis = mysql_query($_qr_abfrage); while($_qr_row = mysql_fetch_object($_qr_ergebnis)) { $_qr_beschreibung = $_qr_row->isys_obj__description; }; $_qr_ausgabe = "Name: ".$this->_plugins['function']['isys'][0][0]->smarty_function_isys(array('type' => 'f_data','name' => 'C__CATG__TITLE','p_plain' => 1), $this)."%0ABezeichnung: ".$_qr_bezeichnung."%0ASN: ".$_qr_sn."%0AFW: ".$_qr_fw."%0A%0ABeschreibung:%0A".$_qr_beschreibung; [{/php}]
Hier werden wieder die Daten, die später im Barcode angezeigt werden sollen, per mysql abgefragt und in die Variable $_qr_ausgabe gespeichert. Die Zeilen bitte irgendwo am Anfang einfüen.
[![](src/tools/php/qr/qr_img.php?d=[{php}] echo $_qr_ausgabe; [{/php}]&s=1)](javascript:;)
Hier wird $_qr_ausgabe (also die gewünschten Daten) übergeben, sodass der Barcode dementsprechend angezeigt wird. Die vorhandenen Zeilen hier bitte ersetzen. Mit der Variablen "s" kann man hier jeweils für den Barcode auf der Übersichtsseite und den per Klick angezeigten die Größe einstellen.
- qr.php unter \i-doit\src\tools\php\qr
$l_urldaten = http_build_query($_GET); /*Daten fuer den Barcode aus der URL holen. */ $l_barcodedaten = substr($l_urldaten, 6); /*"obID=" entfernen. Darf nur hier und nicht in main_objectdetail entfernt werden! */
und
![](qr_img.php?d=<?php)" border="0" />
Beides bitte in der Datei ersetzen.
So, fertig! (=
-
Du solltest die Objekt-ID lieber aus dem _GET array entfernen, das ist sauber und sicherer. Also ungefähr so:
unset($_GET['objID']);
$l_barcodedaten = http_build_query($_GET); -
Die Objekt-ID wird doch gar nicht übergeben? Doch nur Name, Bezeichnung, Seriennummer Beschreibung und Firmware?
-
Es geht um die URL. Du schreibst hier, dass du die Objekt ID folgendermaßen entfernst: "$l_barcodedaten = substr($l_urldaten, 6); /*"obID=" entfernen. Darf nur hier und nicht in main_objectdetail entfernt werden! */"
Das kann aber in die Hose gehen mit substr(). -
Die Sache ist die, dass die Objekt-ID hier eigentlich gar nicht übergeben wird.
Man kann "objID" auch durch "blablabla" ersetzen. Entferne ich dies aber ganz (also nur …qr.php?[{php}] echo $_qr_ausgabe; [{/php}]) wird mir der Text im Barcode so
A_DFSR_Internetdaten_1#Bezeichnung:_Proliant_DL380_G7#SN:_CZ2112089Q#FW:_8_70##Beschreibung:#=
(also mit lauter Unterstrichen)und nicht so
Name: DFSR Internetdaten 1#Bezeichnung: Proliant DL380 G7#SN: CZ2112089Q#FW: 8.70##Beschreibung:#
angezeigt!
-
Das mit den Unterstrichen kann aber schlecht durch die Änderung gekommen sein
-
Ich weiß nicht woher das kommt! (=
Auf jeden Fall sind die Unterstriche da, wenn man vor den Text für die Ausgabe keine "irgendeintextoderauchnurbuchstabe=" setzt. ^^