das komplette Routing von Isotope muss umgebaut werden. Ich habe da schon etwas begonnen, wenn du das vorerst ignorieren kannst (einfach die Hooks auskommentieren) dann wär das vielleicht zielführender
das komplette Routing von Isotope muss umgebaut werden. Ich habe da schon etwas begonnen, wenn du das vorerst ignorieren kannst (einfach die Hooks auskommentieren) dann wär das vielleicht zielführender
terminal42 gmbh
Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle
Warum enthält Haste 5 diese Klassen nicht mehr?
Gibt es mittlerweile im Contao oder Isotope Core entsprechende features? (Wenn ja, bitte einen Tipp, wo ich die finden könnte).
Oder ist es einfach deswegen:
90% of the code was dropped because Haste predates the world of Composer. Now we have Packagist and acccess to a wonderful world of libraries that are way better, well tested and used by millions of projects.
Geändert von Ernestopheles (29.10.2023 um 21:02 Uhr)
ich denke Hintergrund war, dass nur Isotope diese Klassen genutzt hat. Und wir das entweder direkt in Isotope integrieren, oder noch besser ein öffentliches Paket finden dass sich um Gewichtsberechnung kümmert. Auf die Schnelle konnte ich nichts finden, vielleicht wäre es auch sinnvoll dieses Paket auszulagern. Vielleicht braucht ja jemand anderes mal eine Gewichtsberechnung. Allerdings müsste man den Code sicherlich modernisieren. Ist \Isotope\Units\Mass das einzige mit diesem Bezug?
terminal42 gmbh
Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle
https://github.com/jordanbrauer/unit-converter wäre zum Beispiel eine Library. Getestet habe ich sie aber nicht.
terminal42 gmbh
Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle
Habe nach weiterem Nachforschen auf das PHP Attribut verzichtet - das wird nicht benötigt. Die services.yaml und die Weight::createFromTimePeriod() korrigiert.
Könnte das so stimmen und ist es ein sinniger Weg?
Ich nehme den UnitConverter von jordanbrauer. Der soll Haste\Unit\Mass ersetzen (es werden nur Mass Units verwendet in Isotope).
Bitte gebt mir ein Feedback, ob ich mit dieser Konstruktion richtig (und auf der Höhe der Zeit) liege:
1. Die Weight Klasse (und das Interface Weighable) aus Haste ersetze ich durch eine Isotope Klasse (und Interface) gleichen Namens und wende DI an, um den UnitConverterProvider Service zu injecten:
PHP-Code:
<?php
namespace Isotope;
use Contao\StringUtil;
use Isotope\Interfaces\IsotopeWeighable;
use Isotope\UnitConverterProvider;
use UnitConverter\UnitConverter;
class Weight implements IsotopeWeighable
{
protected UnitConverterProvider $unitConverterProvider;
protected UnitConverter $unitConverter;
protected float $fltValue;
protected float $strUnit;
public function __construct($fltValue, $strUnit)
{
$this->fltValue = $fltValue;
$this->strUnit = (string) $strUnit;
}
public function getWeightValue()
{
return $this->fltValue;
}
public function getWeightUnit()
{
return $this->strUnit;
}
/**
* Create weight object from timePeriod widget value
* @param mixed $arrData
* @return Weight|null
*/
public static function createFromTimePeriod($unitConverterProvider, $arrData)
{
$unitConverter = $unitConverterProvider->create();
$arrData = StringUtil::deserialize($arrData);
if (
empty($arrData)
|| !is_array($arrData)
|| $arrData['value'] === ''
|| $arrData['unit'] === ''
|| !in_array($arrData['unit'], $unitConverter->getRegistry()->listUnits('Mass'))
) {
return null;
}
return new static($arrData['value'], $arrData['unit']);
}
}
2. Services.yaml
Code:isotope.unit_converter: class: UnitConverter\UnitConverter arguments: - '@isotope.unit_registry' - '@isotope.binary_calculator' isotope.unit_registry: class: UnitConverter\Registry\UnitRegistry isotope.binary_calculator: class: UnitConverter\Calculator\BinaryCalculator isotope.unit_converter_provider: class: Isotope\UnitConverterProvider
4. Der UnitConverter ServiceProvider:
(Die in Haste aber nicht in jordanbrauer vorhandenen Units muss ich noch implementieren)PHP-Code:
<?php
declare(strict_types=1);
namespace Isotope;
use UnitConverter\Calculator\BinaryCalculator;
use UnitConverter\Calculator\CalculatorInterface;
// use UnitConverter\Unit\Mass\Carat;
// use UnitConverter\Unit\Mass\Grain;
use UnitConverter\Unit\Mass\Gram;
use UnitConverter\Unit\Mass\Kilogram;
// use UnitConverter\Unit\Mass\Metricton;
use UnitConverter\Unit\Mass\Milligram;
use UnitConverter\Unit\Mass\Ounce;
use UnitConverter\Unit\Mass\Pound;
use UnitConverter\Unit\Mass\Stone;
use UnitConverter\Registry\UnitRegistry;
use UnitConverter\UnitConverter;
class UnitConverterProvider
{
public function create(): UnitConverter
{
/**
* @var CalculatorInterface $binaryCalculator
*/
$binaryCalculator = new BinaryCalculator(5, 2);
// TODO: Set precision and rounding mode
$units = [
new Milligram(),
new Gram(),
new Kilogram(),
// new Metricton(),
// new Carat(),
new Ounce(),
new Pound(),
new Stone(),
// new Grain(),
// Add more units if needed
];
$unitRegistry = new UnitRegistry($units);
$unitConverter = new UnitConverter($unitRegistry, $binaryCalculator);
return $unitConverter;
}
}
Das erstmal als Idee, um zu sehen, ob ich auf dem richtigen Dampfer bin.
Geändert von Ernestopheles (04.11.2023 um 22:14 Uhr) Grund: Korrekturen, die sich aus weiterem Nachforschen ergaben
Habe den letzten Post bearbeitet, so könnte es gehen, oder?
brauchen wir eine eigene Weight-Klasse? Kann das nicht direkt an den entsprechenden Stellen angepasst werde? (ohne dass ich mir den Code im Detail angesehen hätte).
terminal42 gmbh
Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle
Ich kriege DI einfach nicht zum Laufen; bei Constructor Injection wird der Service nicht von Symfony übergeben.
Nach "alter" Art geht es wohl:
PHP-Code:
<?php
namespace Isotope;
use Contao\StringUtil;
use Contao\System;
use Isotope\Interfaces\IsotopeWeighable;
use UnitConverter\UnitConverter;
class Weight implements IsotopeWeighable
{
private static UnitConverter $unitConverter;
public function __construct(
private float $fltValue,
private string $strUnit
) {
}
public function getWeightValue()
{
return $this->fltValue;
}
public function getWeightUnit()
{
return $this->strUnit;
}
/**
* Create weight object from timePeriod widget value
* @param mixed $arrData
* @return Weight|null
*/
public static function createFromTimePeriod($arrData)
{
$container = System::getContainer();
self::$unitConverter = $container->get('isotope.unit_converter');
$arrData = StringUtil::deserialize($arrData);
if (
empty($arrData)
|| !is_array($arrData)
|| $arrData['value'] === ''
|| $arrData['unit'] === ''
|| !in_array($arrData['unit'], self::$unitConverter->getRegistry()->listUnits('Mass'))
) {
return null;
}
return new static($arrData['value'], $arrData['unit']);
}
}
services.yaml:
PHP-Code:
isotope.unit_converter:
class: UnitConverter\UnitConverter
arguments:
- '@isotope.unit_registry'
- '@isotope.binary_calculator'
public: true
isotope.unit_registry:
class: UnitConverter\Registry\UnitRegistry
arguments:
- ['@unit.milligram', '@unit.gram', '@unit.kilogram', '@unit.ounce', '@unit.pound', '@unit.stone']
unit.milligram:
class: UnitConverter\Unit\Mass\Milligram
unit.gram:
class: UnitConverter\Unit\Mass\Gram
unit.kilogram:
class: UnitConverter\Unit\Mass\Kilogram
unit.ounce:
class: UnitConverter\Unit\Mass\Ounce
unit.pound:
class: UnitConverter\Unit\Mass\Pound
unit.stone:
class: UnitConverter\Unit\Mass\Stone
isotope.binary_calculator:
class: UnitConverter\Calculator\BinaryCalculator
arguments:
- 2 # Precision
- 1 # PHP_ROUND_HALF_UP - Rounding mode
Isotope\Weight:
arguments:
- '@isotope.unit_converter'
public: true
Unveränderte Methode in Standard.php:
PHP-Code:
/**
* Get the weight of the product (as object)
*
* @return Weight
*/
public function getWeight()
{
if (!isset($this->arrData['shipping_weight'])) {
return null;
}
return Weight::createFromTimePeriod($this->arrData['shipping_weight']);
}
Eigentlich sollte beim Erzeugen eines Weight Objektes der UnitConverter service von Symfony übergeben werden, jedoch passiert das nicht:
Hier wird der Service als expliziter Parameter erwartet:PHP-Code:
class Weight implements IsotopeWeighable
{
public function __construct(
private UnitConverter $unitConverter,
private float $fltValue,
private string $strUnit
) {
}
...
}
PHP-Code:
new Weight(1, "kg")
Gehe auf PHP ^8.0 in der composer.json, ok?
Geändert von Ernestopheles (06.11.2023 um 22:24 Uhr)
Moin,
habe Haste\Units in Isotope ersetzt durch jordanbrauer\unitconverter. Cypress tests (Regressionstest mit einfachen usecases anhand der Isotope Demo) erfolgreich. Vor weiteren Tests (PHPUnit), die ich noch schreiben werde, prüft bitte einmal, ob die Änderungen euren Vorstellungen entsprechen (damit ich keinen unnötigen Testaufwand treibe). Danke!
https://github.com/isotope/core/pull/2501
Haste hats nicht mehr drin, weil "obsolet"...
Was heisst das jetzt für Isotope? Die Methode Debug::uncompressedFile() z.B. im CompatibilityHelper ergänzen oder ist die ganze Mimik nicht mehr benötigt?
Was es macht: "Get uncompressed version (file path) of a file if debug is enabled " - fügt file gleichen Pfades/Namens - aber .min. durch . ersetzt - zum array hinzu, z.B. hier:
PHP-Code:
// Load Isotope JavaScript and style sheet
if (CompatibilityHelper::isFrontend()) {
$GLOBALS['TL_JAVASCRIPT'][] = Debug::uncompressedFile(
'system/modules/isotope/assets/js/isotope.min.js|static'
);
$GLOBALS['TL_CSS'][] = Debug::uncompressedFile(
'system/modules/isotope/assets/css/isotope.min.css|screen|static'
);
Die Uncompressed-Varianten sind aus meiner Sicht mittlerweile obsolet.
terminal42 gmbh
Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle
Aktuell werden die uncompressed Dateien als einfache Kopie (mit angepasstem Dateinamen) der compressed Dateien zum Array hinzugefügt.
Verwendet werden sie z.B. in BackendTemplate.php:
PHP-Code:
// JavaScripts
if (!empty($GLOBALS['TL_JAVASCRIPT']) && \is_array($GLOBALS['TL_JAVASCRIPT']))
{
$strJavaScripts = '';
foreach (array_unique($GLOBALS['TL_JAVASCRIPT']) as $javascript)
{
$options = StringUtil::resolveFlaggedUrl($javascript);
$strJavaScripts .= Template::generateScriptTag($this->addStaticUrlTo($javascript), $options->async, $options->mtime);
}
$this->javascripts .= $strJavaScripts;
}
Leider kenne ich die Hintergründe nicht und denke, bevor ich mich da umständlich einarbeite, wäre eine Aussage, wie zu verfahren ist, ganz gut.
Geändert von Ernestopheles (14.11.2023 um 13:31 Uhr)
Contao: tl_user erbt von Contao\Backend
Isotope: tl_user erbt von Isotope\Backend das von Contao\Backend erbt
Meine Arbeit an diesem Projekt ruht und ich warte auf Antworten / Bearbeitung meiner PR
Contao "Standard" ist, dass man dann die Klasse bspw. tl_user_isotope nennt. Siehe auch https://github.com/contao/contao/blo...ontent.php#L30 bspw.
Best-practice wäre jedoch "echte" Klassen bzw. echte Eventlistener zu nutzen.
Ich beende meine Arbeit an der Umstellung von Isotope auf Contao5. Ein wenig wurde erreicht, hätte gerne noch mehr gemacht.
Hallo,
ich habe mal eine allgemeine Frage an die Isotope-Entwickler:
Wird aktuell an der Kompatibilität zu Contao 5.3 gearbeitet?
Ich würde neue Projekte gern mit der aktuellen LTS machen. Im Moment lässt sich Isotope aber unter Contao 5.3 nicht installieren.
Vielen Dank.
Steffen
@sgei
Einer der Isotope-Entwickler hatte im Slack folgendes gesagt:
Sollte es eine Isotope-Version für Contao 5 geben, wird diese ähnlich dem Notification-Center erst auf den komplett neuesten Stand der Dinge gebracht werden müssen.Isotope ist nicht mit Contao 5 kompatibel und das wird vorerst so bleiben.
Wir reden hier von 14 Jahre altem Code, welcher immer wieder angepasst wurde (https://github.com/isotope/core/releases/tag/0.1.0).
Wahrscheinlich würde eine komplette Finanzierung der 100+ Arbeitsstunden für eine Contao 5 kompatible Version den Prozess beschleunigen können.
Ich kann dazu nur auf Github verweisen https://github.com/isotope/core/issues/2450
Mit genügend Finanzierung z.B. als Mitglied im Isotop Circle oder einmaliges Sponsoring https://www.isotopeecommerce.org/de/circle.html kann das Vorhaben sicher beschleunigt werden.
Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
Unterstütze bitte das Contao-Projekt (Button Links)
Weitere Spendenmöglichkeiten
------------------------------------------------------------------------------------------------------
Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
Contao-Online-Video-Kurse: Contao Academy
Funktionalität erweitern: Contao-Erweiterungen
Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.
Ziel dürfte sein, mit Auslaufen von Contao 4(.13) im Februar 2026 ein neues Isotope zu haben - ist die Frage, ob da genügend vorab eingezahlt wird oder man das wie bei MM über ein "EAP" macht
MetaModels-Workshop: ... wo sich die nächste Gelegenheit bietet... oder Extern oder Online
Erweiterungen: Infos im Seitenbaum, Formular-Default für Select/Checkbox/Radio (SCR), Formular-Newsletteranmeldung, Regex-Formularwidget, Lizenzmanager für Isotope
Unterstützung per Github-Sponsoring: MetaModels Handbuch und Forum, e-spin Erweiterungen
Hallo, eventuell wäre die Contao Association zu einer Finanzierung bereit. Immerhin dürfte C5.3 nach aktuellem Stand keinen Shop integrieren können. Damit wird man auf 4.13 bleiben oder zu einem anderen CMS wechseln müssen, beides ist für das Contao-Projekt nicht förderlich.
My 5 Cents
PS: Ein zukünftiges Isotope sollte unbedingt die Contao-Dateiverwaltung nutzen.
da würde ich dagegen stimmen - was hat die CA mit der Finanzierung einer eher speziellen Erweiterung zu tun?
Zum Thema Finanzierung gabs zum Camp eine Session - ggf. gibts da inzwischen einen konkreteren Plan bei T42
MetaModels-Workshop: ... wo sich die nächste Gelegenheit bietet... oder Extern oder Online
Erweiterungen: Infos im Seitenbaum, Formular-Default für Select/Checkbox/Radio (SCR), Formular-Newsletteranmeldung, Regex-Formularwidget, Lizenzmanager für Isotope
Unterstützung per Github-Sponsoring: MetaModels Handbuch und Forum, e-spin Erweiterungen
Ich würde da eben so strikt dagegen sein. Wer einen Shop betreibt, verdient damit Geld und kann für die Weiterentwicklung durchaus auch selbst etwas investieren.
Viele andere beliebte und wahrscheinlich sogar häufiger eingesetzte Erweiterung werden ja auch nicht von der CA gesponsert.
Da muss man auch entweder Geld in die Hand nehmen um die Kompatibilität einer Erweiterung herstellen zu lassen, Zeit investieren um es selbst zu machen (wenn man dazu in der Lage ist) oder halt warten, bis andere mal wieder dafür gezahlt haben oder Zeit investiert haben, dass man es dann auch nutzen kann. Letzteres geht auf Dauer im Open Source Bereich schief. Wenn keiner etwas investieren möchte, dann wird im schlimmsten Fall nicht weiterentwickelt.
Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
Unterstütze bitte das Contao-Projekt (Button Links)
Weitere Spendenmöglichkeiten
------------------------------------------------------------------------------------------------------
Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
Contao-Online-Video-Kurse: Contao Academy
Funktionalität erweitern: Contao-Erweiterungen
Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.
@Creasign
Die Association lebt von Spenden von Agenturen und Leuten wie dir und dient der Entwicklung des CMS.
Wenn es deutlich mehrere Beitragende geben würde, welche hier auch spenden, würde das vielleicht was bringen?
Eventuell wärst du bereit eine 5-stellige Summe zu finanzieren, wenn du das Shop-Feature in deinem Liebliengs-Content-Management-System weiterhin brauchst?
Möglicherweise wärst du auch bereit deine Entwicklungskenntnisse einzusetzen und über einen Fork die Contao 5 Kompatibilität umsonst bereitzustellen?
Du kannst hier sicherlich auch auf Shopsysteme ausweichen und deine Kenntnisse in diesen Bereichen auffrischen?
Übrigens hier eine gute Landingpage bezüglich Open Source von den Entwicklern von Isotope:
https://www.terminal42.ch/de/open-source
Falls du die Contao-Dateiverwaltung nutzen möchtest, kannst du gerne den PR bereitstellen oder finanzieren und Isotope für Contao 5 ready machen.
Just my 10 euros
Geändert von zoglo (13.07.2024 um 22:40 Uhr)
Hi zusammen!
Was ratet ihr denn? Bei 4.13 mit Isotope bleiben oder auf 5.3 aktualisieren und nach externen Alternativen schauen?
Kommt m.E. auf den Einzelfall an. Da kann man nicht allgemein raten.
Contao 4.13 ist noch bis Februar 2025 im regulären Support und bis Februar 2026 im Security Support. Da würde ich noch nicht in Hektik verfallen. Eher mal Kontakt mit den Entwicklern aufnehmen und erfragen wie der Plan ist und wie man unterstützen könnte. Je nach dem wie die Antworten ausfallen, würde ich danach entscheiden, was zu tun ist.
Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
Unterstütze bitte das Contao-Projekt (Button Links)
Weitere Spendenmöglichkeiten
------------------------------------------------------------------------------------------------------
Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
Contao-Online-Video-Kurse: Contao Academy
Funktionalität erweitern: Contao-Erweiterungen
Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.
Ich möchte mich an dieser Stelle ebenfalls mal mit einbringen.
Wie bereits mehrfach hier und im Slack angesprochen wurde, besteht das Problem darin, dass es bisher keine konkreten Antworten gibt.
Wir entwickeln selbst umfangreiche Erweiterungen und haben im Tagesgeschäft natürlich auch andere Aufgaben zu erledigen. Fakt ist jedoch, dass Isotope, insbesondere im Agenturumfeld, die einzige Shoplösung für Contao ist. Daher hängt, gerade im Hinblick auf Contao 5, auch finanziell einiges daran.
Niemand erwartet von den Entwicklern bei Terminal42, dass sie hunderte Stunden kostenlos investieren, damit andere damit Geld verdienen – im Gegenteil. Als Agentur haben wir möglicherweise nicht die notwendigen Ressourcen und das Know-how, um aktiv am Projekt mitzuarbeiten, aber wir würden die Weiterentwicklung sehr gerne finanziell unterstützen. Ich selbst habe Andi Schempp bereits eine entsprechende Investition angeboten und auch andere befreundete Agenturen, mit denen ich über dieses Thema gesprochen habe, wären bereit, das Projekt zu finanzieren.
Trotz möglicher Bedenken – man sieht zum Beispiel, dass auch das Funding bei MetaModels wohl nicht ganz problemlos ist – sollte man zumindest eine konkrete Ansage machen. Wenn sich dann genügend Unterstützer finden, ist alles prima. Falls nicht, müssen eben andere Lösungen erarbeitet werden.
Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
Unterstütze bitte das Contao-Projekt (Button Links)
Weitere Spendenmöglichkeiten
------------------------------------------------------------------------------------------------------
Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
Contao-Online-Video-Kurse: Contao Academy
Funktionalität erweitern: Contao-Erweiterungen
Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.
Ich glaube aktuell hängt das Thema eher an der mangelnden Kommunikation von Andy/T42. Das Camp liegt nun schon drei Monate in der Vergangenheit und mir ist bisher keine konkrete Aussage zu dem Thema bekannt. Hier wäre eine Info zu "ob überhaupt", wenn ja, wann in etwa und welche Finanzierungsform im Fokus steht prima und würde einiges zur Planungssicherheit beitragen.
MetaModels-Workshop: ... wo sich die nächste Gelegenheit bietet... oder Extern oder Online
Erweiterungen: Infos im Seitenbaum, Formular-Default für Select/Checkbox/Radio (SCR), Formular-Newsletteranmeldung, Regex-Formularwidget, Lizenzmanager für Isotope
Unterstützung per Github-Sponsoring: MetaModels Handbuch und Forum, e-spin Erweiterungen
Bjarke und ich haben nächste Woche eine Sitzung, hoffentlich kommen wir dann einen Schritt weiter
Geändert von andreas.schempp (16.07.2024 um 14:55 Uhr)
terminal42 gmbh
Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle
Lieber Andreas,
nachdem dein Post jetzt einige Tage her ist wollte ich mal nachfragen, ob du zum Thema aktualisierte Infos geben kannst?
Wir sind im Moment wieder an der Entscheidung, ob wir Isotope/Contao für neue Projekte weiter verwenden können oder uns nach einem alternativen CMS für Websites mit kleinem Shop umsehen müssen? Wenn du uns da etwas Planungssicherheit (oder zumindest einen groben Ausblick) geben könntest, wäre das für uns sehr hilfreich.
Vielen lieben Dank
https://www.isotopeecommerce.org/de/...fentlicht.html
Wie geht es weiter
Du fragst dich bestimmt, wie es mit Isotope und Contao 5 weiter geht? Wir haben uns die Köpfe zerbrochen, demnächst werden wir Genaueres dazu sagen können.
Wenn du den weiteren Weg von Isotope eCommerce aktiv verfolgen willst, empfehlen wir dir, unseren Newsletter zu abonnieren.
Viel Spass mit der neuen Version von Isotope eCommerce und frohes Verkaufen!
Jetzt gibt's was
https://www.isotopeecommerce.org/de/...-15-jahre.html
terminal42 gmbh
Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)