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:
Wenn Sie einfach auf den Namen in der Warenliste klicken, öffnet sich ein solches Zwischenfenster:
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.
Vielleicht fühlt sich jemand wohl. Jemand, aber nicht ich.Erkunden
Wenn Sie sich den Link ansehen, wird klar, dass die Zwischenseite eine Adresse hathttps:///webasyst/shop/?action=products
Und die Bearbeitungsseite ist /edit
am 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:
Anzeige von Waren in Form einer Tabelle, Symbolen und einer Tabelle mit Artikeln. Ich benutze nur die Tabellenansicht, daher wähle ich die Dateiproduct_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:
Ansicht vor Ort:
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:
Nach dem Drücken:
Vielleicht könnte all dies einfacher gelöst werden, aber ich entschied mich so gut ich konnte. Ich hoffe, jemand wird dies hilfreich finden.