{"id":635,"date":"2016-05-24T12:32:50","date_gmt":"2016-05-24T10:32:50","guid":{"rendered":"https:\/\/apalion.com\/?post_type=project&amp;p=635"},"modified":"2016-05-24T12:32:50","modified_gmt":"2016-05-24T10:32:50","slug":"sviluppo-di-moduli-e-interfacce-personalizzate","status":"publish","type":"project","link":"https:\/\/apalion.com\/it\/project\/individuelle-modul-und-schnittstellenentwicklung\/","title":{"rendered":"Sviluppo di moduli e interfacce personalizzate"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8220;1&#8243; admin_label=&#8220;section&#8220; _builder_version=&#8220;4.16&#8243; global_colors_info=&#8220;{}&#8220;][et_pb_row admin_label=&#8220;row&#8220; _builder_version=&#8220;4.16&#8243; background_size=&#8220;initial&#8220; background_position=&#8220;top_left&#8220; background_repeat=&#8220;repeat&#8220; global_colors_info=&#8220;{}&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; custom_padding=&#8220;|||&#8220; global_colors_info=&#8220;{}&#8220; custom_padding__hover=&#8220;|||&#8220;][et_pb_text _builder_version=&#8220;4.22.2&#8243; _module_preset=&#8220;default&#8220; hover_enabled=&#8220;0&#8243; sticky_enabled=&#8220;0&#8243;]<\/p>\n<h1>Schnittstellen Entwicklung<\/h1>\n<p>[\/et_pb_text][et_pb_image src=&#8220;https:\/\/apalion.com\/wp-content\/uploads\/2016\/05\/puzzle-header-copy.jpg&#8220; alt=&#8220;Schnittstellenentwicklung Symbolbild mit Puzzle auf Macbook&#8220; title_text=&#8220;Schnittstellenentwicklung Symbolbild mit Puzzle auf Macbook&#8220; show_bottom_space=&#8220;off&#8220; align=&#8220;center&#8220; align_tablet=&#8220;center&#8220; align_phone=&#8220;center&#8220; align_last_edited=&#8220;on|desktop&#8220; admin_label=&#8220;Image&#8220; _builder_version=&#8220;4.16&#8243; animation_style=&#8220;fade&#8220; animation_duration=&#8220;500ms&#8220; animation=&#8220;fade_in&#8220; sticky=&#8220;on&#8220; use_border_color=&#8220;off&#8220; border_color=&#8220;#ffffff&#8220; border_style=&#8220;solid&#8220; always_center_on_mobile=&#8220;on&#8220; global_colors_info=&#8220;{}&#8220;] [\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8220;1_2,1_2&#8243; admin_label=&#8220;Row&#8220; _builder_version=&#8220;4.16&#8243; background_size=&#8220;initial&#8220; background_position=&#8220;top_left&#8220; background_repeat=&#8220;repeat&#8220; global_colors_info=&#8220;{}&#8220;][et_pb_column type=&#8220;1_2&#8243; _builder_version=&#8220;4.16&#8243; custom_padding=&#8220;|||&#8220; global_colors_info=&#8220;{}&#8220; custom_padding__hover=&#8220;|||&#8220;][et_pb_text admin_label=&#8220;Text&#8220; _builder_version=&#8220;4.16&#8243; background_size=&#8220;initial&#8220; background_position=&#8220;top_left&#8220; background_repeat=&#8220;repeat&#8220; use_border_color=&#8220;off&#8220; border_color=&#8220;#ffffff&#8220; border_style=&#8220;solid&#8220; global_colors_info=&#8220;{}&#8220;]<\/p>\n<div class=\"grid_5\">\n<p>Als Unterauftrag f\u00fcr ein erfolgreiches Softwareunternehmen haben wir ein mehrmonatiges Gro\u00dfprojekt umgesetzt. Dabei ging es um die individualisierte Schaffung einer Schnittstelle eines propriet\u00e4ren Warenwirtschaftssystems f\u00fcr Joomla\/Virtuemart. Dabei gab es zahlreiche technische H\u00fcrden zu bew\u00e4ltigen: Wie werden die Daten abgeholt? Wie sollen die Daten letztlich dargestellt werden? Hier geben wir einen kurzen \u00dcberblick \u00fcber das Projekt und unsere Herangehensweise.<\/p>\n<h3><span class=\"overlay\"> Problemstellung<\/span><\/h3>\n<p>Das Problem sah wie folgt aus: Der Kunde stellt ein propriet\u00e4res Warenwirtschaftssystem zur Verf\u00fcgung, dass \u00fcber eine enorm gro\u00dfe Datenbank im Hintergrund verf\u00fcgt. Das System wird kontinuierlich gepflegt und ver\u00e4ndert. Aus den dort hinterlegen Datens\u00e4tzen werden beispielsweise Kataloge generiert oder Kunden Ausk\u00fcnfte erteilt. Das System verf\u00fcgt \u00fcber mehrere Schnittstellen, unter Anderem auch standardisierte Abfragen \u00fcber MySQL. Das war unser Ansatzpunkt: Der Kunde wollte, dass der Katalog ohne weiteres Zutun von au\u00dfen dynamisch in einen webbasierten Katalog hinein geladen wird, durchsuchbar gestaltet wird und dabei zu jedem Artikel einer immer g\u00fcltige URL sowie einen QR-Code generiert und \u00fcber viele Eigenschaften Filter- und Suchbar eingegrenzt werden kann. Die L\u00f6sung sollte sowohl modular f\u00fcr den Einsatz in Joomla als auch sp\u00e4ter f\u00fcr Typo3 und auch als komplette Einbindung in ein Shopsystem konzipiert werden.<\/p>\n<div class=\"bubbles_left\"><\/div>\n<h3><span class=\"overlay\"> Herangehensweise<\/span><\/h3>\n<p>Zun\u00e4chst haben wir uns das Problem vom Kunden ausf\u00fchrlich erkl\u00e4ren lassen und Meilensteine gemeinsam mit diesem festgelegt. Aus diesen Meilensteinen wurde zun\u00e4chst ein Kostenvoranschlag erstellt und danach in alle beteiligten Systeme eingearbeitet. Anschlie\u00dfend wurde auf Grundlage dieser Einarbeitung ein Prototyp erstellt, welcher die grunds\u00e4tzliche Funktionalit\u00e4t des Systems demonstrieren und sicherstellen sollte. Dieser Prototyp war bereits nach einem Arbeitstag einsatzf\u00e4hig.<\/p>\n<p>Nach einer Schnittstellekonzeption und -Ausarbeitung folgte die Recherche nach funktionalen L\u00f6sungen f\u00fcr das Content Management-System <a class=\"intext\" href=\"https:\/\/www.joomla.org\/\" target=\"_blank\" rel=\"noopener\">\u201eJoomla\u201c<\/a>, auf deren Basis wir unsere L\u00f6sung aufsetzen konnten. Schnell fand sich mit <a class=\"intext\" href=\"https:\/\/virtuemart.net\/features\/what-is-virtuemart\" target=\"_blank\" rel=\"noopener\">\u201eVirtueMart\u201c<\/a> eine popul\u00e4re und vielversprechende Plattform, dessen Technologie wir nutzen konnten und schrittweise erweitert haben.<\/p>\n<p>Dabei mussten wir direkt zwei Anbindungen schaffen und einen \u00dcbersetzer schreiben: Auf der einen Seiten wird die propriet\u00e4re Struktur des Warenwirtschaftssystems des Kunden ausgelesen, durch unser System \u00fcbersetzt und genormt und auf der anderen Seite wieder ausgegeben bzw. in VirtueMart eingelesen. Alleine dieses Modul ist mit seinen mehreren tausend Zeilen Code, verteilt \u00fcber eine wohl-strukturierte Architektur in PHP ein absolutes Unikat.<\/p>\n<\/div>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8220;1_2&#8243; _builder_version=&#8220;4.16&#8243; custom_padding=&#8220;|||&#8220; global_colors_info=&#8220;{}&#8220; custom_padding__hover=&#8220;|||&#8220;][et_pb_text admin_label=&#8220;Text&#8220; _builder_version=&#8220;4.16&#8243; background_size=&#8220;initial&#8220; background_position=&#8220;top_left&#8220; background_repeat=&#8220;repeat&#8220; use_border_color=&#8220;off&#8220; border_color=&#8220;#ffffff&#8220; border_style=&#8220;solid&#8220; global_colors_info=&#8220;{}&#8220;]<\/p>\n<div class=\"grid_5\">\n<p>Zus\u00e4tzlich zu diesem \u00dcbersetzer wurden mehrere Anpassungen in der Darstellung notwendig. Hierbei haben wir die gew\u00fcnschte Funktionalit\u00e4t so weit wie m\u00f6glich mit bereits verf\u00fcgbaren Modulen angen\u00e4hert, um Kosten des Kunden zu minimieren. Diese Module wurden von uns weitergehend angepasst, beispielsweise wurden die URLs des Frontends \u201esprechend\u201c gestaltet \u2013 und man kann damit nun sowohl Produkte als auch beliebige Produktstrukturebenen ansprechen, was so ohne weiteres nicht m\u00f6glich war, insbesondere k\u00f6nnen durch unsere Anpassung nun beliebig viele Kategorien und Strukturebenen vergeben werden, da die Datenbank dynamisch in ihre Bestandteile zerlegt wird. Die Implementierung wurde dabei v\u00f6llig losgel\u00f6st von Virtuemart und dem Design gestaltet, das heisst im Klarext: Man kann ein beliebiges Joomla mit Virtuemart nehmen und unsere Erweiterung &#8222;drauf loslassen&#8220; und Virtuemart wird dann mit den Daten des WWS gef\u00fcttert und modifiziert. Das macht die L\u00f6sung hochportabel! Ebenso wurde eine Umsetzung in Typo3 bereits vorgesehen und dementsprechend aufbereitet.<\/p>\n<h3><span class=\"overlay\"> Besonderheiten <span class=\"think\">und<\/span> Sonderfunktionen<\/span><\/h3>\n<p>Dort, wo in der Datenbank Bilder zu Produkten vorhanden sind, wollte der Kunde, dass die Bilder automatisch importiert und im Frontend zugeordnet werden. Dabei werden sowohl verschiedene Gr\u00f6\u00dfen f\u00fcr Thumbnails generiert als auch f\u00fcr die Endansicht.<\/p>\n<p>Zu jedem Produkt gibt es im Frontend eine Funktion zur Generierung eines PDF, \u201eAsk a question\u201c, zum Mailen\/Teilen usw. Weiterhin kann der Kunde und der Nutzer nun Produkte dynamisch filtern und fein abstimmen, welche Eigenschaften \u00fcberhaupt zum Filtern angezeigt werden. Ebenfalls kann der Kunde im Backend f\u00fcr jeden Artikel nochmals gesondert einstellen, welche Eigenschaften er \u00fcberhaupt anzeigen lassen will, welche Informationen ein Artikel beinhaltet und welche Funktionen einem Nutzer bei der Artikel\u00fcbersicht zur Verf\u00fcgung stehen. Dies kann schon auf Datenbankseite im Warenwirtschaftssystem flexibel bestimmt werden! Titel und Bezeichner k\u00f6nnen dabei dynamisch auch auf Datenbankseite ge\u00e4ndert werden, ohne dass die QR-Code-Generierung hiervon beeinflusst wird: Einmal gesetzte Links bleiben g\u00fcltig.<\/p>\n<p>Ebenso kann bestimmt werden, ob man mit Checkboxen, Radio Buttons, Dropdowns etc. sortieren\/filtern m\u00f6chte. Das Filtern funktioniert dabei ohne Neuladen der Seite in Echtzeit. Die Filterung passt sich dabei dynamisch an. Hierf\u00fcr wurde eine Erweiterung komplett angepasst und umgeschrieben, sodass diese sowohl wahlweise mit Ajax als auch ohne Ajax funktioniert.<\/p>\n<p>Die gesamte L\u00f6sung ist als Shop vorbereitet und kann ebenfalls mit Preisen belegt werden, wenn dies gew\u00fcnscht ist. Ferner wurde die Anbindung an die Datenbank so dynamisch gestaltet, dass der Kunde die Datenbank per Funktion im Backend jederzeit oder auch teilweise neu einlesen kann, oder dies auch per Befehl von Au\u00dfen (<a class=\"intext\" href=\"https:\/\/de.wikipedia.org\/wiki\/Cron\" target=\"_blank\" rel=\"noopener\">\u201eCronjob\u201c<\/a>) ansto\u00dfen kann. Dazu wurde eine weitere Schnittstelle nach Au\u00dfen\u00a0hin geschaffen und der Backend-Bereich von Virtuemart erweitert.<\/p>\n<\/div>\n<div class=\"clear\"><\/div>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Schnittstellen Entwicklung Als Unterauftrag f\u00fcr ein erfolgreiches Softwareunternehmen haben wir ein mehrmonatiges Gro\u00dfprojekt umgesetzt. Dabei ging es um die individualisierte Schaffung einer Schnittstelle eines propriet\u00e4ren Warenwirtschaftssystems f\u00fcr Joomla\/Virtuemart. Dabei gab es zahlreiche technische H\u00fcrden zu bew\u00e4ltigen: Wie werden die Daten abgeholt? Wie sollen die Daten letztlich dargestellt werden? Hier geben wir einen kurzen \u00dcberblick \u00fcber [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":636,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"project_category":[17,19,18],"project_tag":[],"class_list":["post-635","project","type-project","status-publish","has-post-thumbnail","hentry","project_category-softwareentwicklung","project_category-technologieentwicklung","project_category-webentwicklung"],"acf":[],"_links":{"self":[{"href":"https:\/\/apalion.com\/it\/wp-json\/wp\/v2\/project\/635","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/apalion.com\/it\/wp-json\/wp\/v2\/project"}],"about":[{"href":"https:\/\/apalion.com\/it\/wp-json\/wp\/v2\/types\/project"}],"author":[{"embeddable":true,"href":"https:\/\/apalion.com\/it\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/apalion.com\/it\/wp-json\/wp\/v2\/comments?post=635"}],"version-history":[{"count":0,"href":"https:\/\/apalion.com\/it\/wp-json\/wp\/v2\/project\/635\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/apalion.com\/it\/wp-json\/wp\/v2\/media\/636"}],"wp:attachment":[{"href":"https:\/\/apalion.com\/it\/wp-json\/wp\/v2\/media?parent=635"}],"wp:term":[{"taxonomy":"project_category","embeddable":true,"href":"https:\/\/apalion.com\/it\/wp-json\/wp\/v2\/project_category?post=635"},{"taxonomy":"project_tag","embeddable":true,"href":"https:\/\/apalion.com\/it\/wp-json\/wp\/v2\/project_tag?post=635"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}