Überarbeitung des Webasyst-Administrationsbereichs

In diesem Artikel möchte ich erklären, wie ich auf einfache Weise mein Leben ein wenig vereinfachen kann, indem ich die Site in der WebAsyst-Engine ausfülle, sofort Produkte bearbeite und alle Kontrollkästchen auf der Seite entfernen kann. Außerdem sparen Sie möglicherweise 500 Rubel beim Kauf eines Plugins, das eines dieser Probleme behebt.

Vorwort


Ich arbeite im Bereich der Erstellung und Förderung von Websites, und für Online-Shops greifen wir hauptsächlich auf die Webasyst-Engine zurück. Ich kann nichts schlechtes über ihn sagen, aber in einem Jahr des Ausfüllens von Websites wurde mir klar, dass mich zwei Dinge nerven, über die ich später sprechen werde.
Und als ich mich entschied, in den Code des Admin-Panels selbst zu schauen und zu versuchen, das zu beheben, was mir nicht gefällt.

Wechseln Sie zur Produktbearbeitung, indem Sie im Admin-Bereich darauf klicken


So sieht die Warenliste aus:

Bild

Wenn Sie einfach auf den Namen in der Warenliste klicken, öffnet sich ein solches Zwischenfenster:

Bild

Darin können Sie Fotos bearbeiten oder den Namen ändern ... Und wenn Sie auf die Schaltfläche "Bearbeiten" klicken, wird der Übergang direkt angezeigt zum Bearbeiten.

Bild

Vielleicht fühlt sich jemand wohl. Jemand, aber nicht ich.

Erkunden


Wenn Sie sich den Link ansehen, wird klar, dass die Zwischenseite eine Adresse hat

https:///webasyst/shop/?action=products#/product/id

Und die Bearbeitungsseite ist /editam Ende gleich + .

Wir korrigieren


Es war nicht schwierig, die Vorlage für die Produktlisten-Anzeigeseite zu finden. Sie befindet sich unter:

//wa-apps/shop/templates/actions/products/

Es gibt 3 Dateien, deren Name mit beginnt product_list_. Alle zeichnen das Admin-Panel in 3 Variationen:

Bild

Anzeige von Waren in Form einer Tabelle, Symbolen und einer Tabelle mit Artikeln. Ich benutze nur die Tabellenansicht, daher wähle ich die Datei

product_list_table.html

Nachdem ich den Browser-Seiteninspektor im Admin-Bereich geöffnet hatte, stellte ich fest, dass Produktlinks ungefähr so ​​aussehen:

<td class="drag-handle s-product-name">
    <a href="#/product/6037">
        <div>.  <i class="shortener"></i></div>
    </a>
</td>

Gefunden die Zeile in der obigen Datei:

<td class="drag-handle s-product-name">
    <a href="#/product/{%#p.id%}/">
        <div>{%#p.name%}<i class="shortener"></i></div> 
    </a>
</td>

und am Ende der Bearbeitung hinzugefügt, stellte sich heraus, dass:

<td class="drag-handle s-product-name">
    <a href="#/product/{%#p.id%}/edit">
        <div>{%#p.name%}<i class="shortener"></i></div> 
    </a>
</td>

Und es hat funktioniert.

Übrigens habe ich auf den Flächen des Installationsprogramms ein Plug-In gesehen, das für dieselbe Aufgabe benötigt wird, aber 500 Rubel kostet.

Kontrollkästchen


Auf der Baustelle, die am häufigsten gefüllt werden muss, werden verschiedene zusätzliche Komponenten für Türen mit den "Services" implementiert. Jedes Produkt (Tür) ist seiner Kategorie zugeordnet. Da es unmöglich ist, einer Kategorie eine Dienstleistung zuzuweisen, werden alle Produkte weiterhin in verschiedene Warentypen sortiert, bei denen es sich normalerweise um doppelte Kategorien handelt.

Das heißt, alles, was sich in der Kategorie „Eins“ befindet, gehört zum Produkttyp „Eins“. Es gibt jedoch Ausnahmen, wenn der Preis für Komponenten in einer Kategorie je nach Farbe der Tür usw. unterschiedlich ist. Dann werden die Produkttypen "one.1", "one.2" usw. erstellt. Und für jeden Typ müssen Sie Ihre eigenen Dienste mit ihren eigenen Preisen erstellen.

Ansicht im Admin-Bereich:

Bild

Ansicht vor Ort:

Bild

Es war erforderlich, viele solcher Services zu erstellen, und es war erforderlich, 1 bis 5 Kontrollkästchen zu markieren. Beim Erstellen eines neuen „Service“ waren standardmäßig alle Kontrollkästchen in der Liste der Produkttypen bereits markiert. Zuerst habe ich alles manuell entfernt, so dass es notwendig war, aber natürlich hat es viel Zeit gekostet, ungefähr hundert Kontrollkästchen zu entfernen, und ich habe jedes Mal, wenn ich einen „Dienst“ erstellt habe, angefangen, den Code in die Konsole zu schreiben:

$('body input:checkbox').prop('checked', false);

Dieser Code entfernt alle aktivierten Kontrollkästchen auf der Seite. Es hat funktioniert, aber es war immer noch nicht sehr praktisch. Daher habe ich zwei Optionen gesehen: Bearbeiten Sie den Code so, dass beim Erstellen des Dienstes die Kontrollkästchen im deaktivierten Status und nicht im markierten Status angezeigt werden, oder fügen Sie der Administrationsoberfläche die Schaltfläche "Alle Kontrollkästchen entfernen" hinzu.

Meine Kenntnisse in JS sind extrem gering, deshalb habe ich mich für die zweite Methode entschieden.

Es wurde eine Renderdatei für die Dienstbearbeitungsoberfläche gefunden:

//wa-apps/shop/templates/actions/services/Services.html

Und darin ist der Schaltflächencode für den "Dienst löschen":

<li>
    <a href="#" class="s-delete-service">
        <i class="icon16 delete"></i>
        [`Delete this service`]
    </a>
</li>

Ohne nachzudenken, fügte ich eine Schaltfläche direkt neben dem aktuellen einsamen "Löschen" hinzu, indem ich den folgenden Code platzierte:

<li>
    <input type="button" value="  " onClick="$('body input:checkbox').prop('checked', false);" />
</li>

Wenn Sie darauf klicken, wird der obige JS-Code ausgeführt und alles funktioniert.

Vor dem Klicken:

Bild
Nach dem Drücken:

Bild
Vielleicht könnte all dies einfacher gelöst werden, aber ich entschied mich so gut ich konnte. Ich hoffe, jemand wird dies hilfreich finden.

Source: https://habr.com/ru/post/undefined/


All Articles