it-swarm.com.de

Hinzufügen einer SKU zu generierten Aliasen in J2Store

Ich bin ein bisschen ein Joomla Noob, also hoffentlich ist das ein einfaches Problem.

Wir haben eine Joomla 3.8.11-Website mit J2Store 3.3.0, und der Kunde möchte die SKU-Werte zu den Produktaliasnamen hinzufügen. Insbesondere möchten wir, dass das Alias-Generierungsverfahren so aussieht

make alias based on title in the usual way;
if (SKU is set):
  append SKU to the alias;
check for duplicates in the usual way;

Wir möchten, dass sich alles andere gleich verhält. Wir möchten dem Alias ​​nur dann einen Wert hinzufügen, wenn er automatisch generiert wird. Gibt es eine einfache Möglichkeit, dies zu tun?

Was ich bisher versucht habe:

Ich schaue mir das MVC Component-Tutorial an und sie unterordnen JModelAdmin und überschreiben dann die Funktion save (). Ihre Situation hat mehr Änderungen als meine, so dass es schwierig ist zu sehen, was genau ich brauche, und außerdem basiert J2Store auf f0f und verwendet stattdessen F0FModel.

Was ich gefunden habe, war eine Klasse namens J2StoreModelOptions, in der F0FModel untergeordnet ist

./administrator/components/com_j2store/models/options.php

mit einer Funktion zum Speichern ($ data), die ich möglicherweise ändern muss. Ich habe dem Funktionskörper jedoch eine Konsolenmeldung hinzugefügt, aber wenn ich auf der Bearbeitungsseite eines Artikels auf "Speichern" klicke, wird dieser nicht protokolliert, sodass ich möglicherweise nicht am richtigen Ort bin. Wenn jemand einen einfacheren Weg kennt oder weiß, dass ich etwas falsch mache, wäre das sehr hilfreich. (Ich habe eine Supportanfrage an J2Store gesendet, aber wir befinden uns in verschiedenen Zeitzonen und ich möchte diese so schnell wie möglich beheben. Ich werde wahrscheinlich noch Hilfe benötigen, sobald ich eine Antwort gehört habe.)

1
William

Nein, es gibt keinen einfachen Weg dazu. Zumindest einfach bedeutet hier eine Menge für alle. Ich werde Ihnen jedoch einige gute Anweisungen dazu geben.

Erstens bietet J2Store einfache Produkte, variable Produkte, konfigurierbare Produkte, flexible Produkte ... usw. Wie denkst du, ist es einfach? Dann gibt es die Inhaltskomponente, die die Artikel behandelt, eine ziemlich komplexe Komponente. J2Store ist eine andere, auch sehr komplexe Komponente mit mindestens 10 verschiedenen Datenbanktabellen oder mehr.

Wenn Sie nur die Kerndatei der Inhaltskomponente überschreiben möchten, die das Alias-Feld erstellt, verlieren Sie diese Überschreibung beim nächsten Joomla-Update. Es ist besser, dies nicht zu tun. Also :

1. Sie müssen ein Inhalts-Plugin erstellen (google: Erstellen von Inhalts-Plugins für Joomla 3) und bitte besuchen Sie auch diesen Link: https: //docs.joomla.org/J3.x:Creating_a_Plugin_for_Joomla

2. Artikel-Alias-Feld wird in yourjoomla/administrator/com_content/models/article.php file Um line 642. Im Code erstellt (das ist immer noch leicht zu finden. Nun, wenn jemand weiß, wo er danach suchen muss. Sie können die Dinge hier jedoch stark vermasseln, seien Sie vorsichtig.

3. Das Plugin muss mit dem Ereignis onContentBeforeSave arbeiten. Ihre Funktion muss also auf dieses Ereignis angewendet werden. Sie können auch ein J2Store-Plugin erstellen und etwas Ähnliches tun, wenn Sie die Sku-Erstellung beim gemeinsamen Erstellen von Artikeln durchführen möchten (hier arbeiten zwei verschiedene Komponenten). Es ist also etwas komplex herauszufinden, welchen Ansatz Sie verwenden müssen. Aber ich denke, das Content-Plugin ist dafür die bessere Wahl.

4. Sie müssen eine Funktion erstellen, die die database->j2store products, variants Usw. Tabellen und die Produktdaten (wie product_sku) Aus diesen Tabellen, basierend auf product_source_id, Die gleich article_id Sind, und verbinden Sie die Abfrage für variant_id Und sku von Variantenprodukten zu Variantentabelle, wenn Ihr Kunde diese Art von Produkten hat (es ist möglich).

5. Mit der Funktion $db = JFactory::getDbo(); Zeile und Sie können Abfrageobjekte erstellen, um die Daten mit $query = $db->getQuery(true); abzurufen. Sie müssen dies hier ein wenig studieren: https://docs.joomla.org/Selecting_data_using_JDatabase

Sie müssen also nur das oben Gesagte zusammenstellen und sind fertig :) Ich kann Ihnen nur viel Glück für das Projekt wünschen und von Ihnen ein höheres Gehalt verlangen Kunde für dieses Projekt. :) :)

Ich hoffe, ich habe Ihnen geholfen, etwas Licht in den Anfang Ihres speziellen Projekts zu bringen (das Obige ist jedoch keine vollständige Liste der Aufgaben, sondern nur ein sehr schnelles Skelett).

1
Zollie