Neu Plugin Customlink-Tabs mit der Plugin-URL#plugin-tab-nnn, woher nnn nehmen?

fibergirl

Sehr aktives Mitglied
14. April 2016
832
262
Hallo,

mein neues Plugin wird Customlink-Tabs haben, die in info.xml definiert sind.
Dort gibt es jeweils ein Fomular, das beim Abschicken wieder auf derselben Seite (in demselben Tab) landen soll.

Äußerlich unterscheiden sich die Custom-Links auf das Plugin durch einen angehängten Hash "#plugin-tab-(irgendeine Zahl)".
Zum Beispiel https://meine.domain.tld/admin/plugin.php?kPlugin=138#plugin-tab-135

Meine Frage ist: woher kommt diese Zahl 135?

kPlugin steht in $plugin->getID().
Aber wo finde ich die Zahl im Hash #plugin-tab-? Gibt es da eine auch Variable oder Funktion?

Den erzeugten Quelltext untersuchen und abschreiben ist doch vermutlich eine ganz schlechte Idee...

Dank & Gruß,
fibergirl
 

fibergirl

Sehr aktives Mitglied
14. April 2016
832
262
Hallo @NETZdinge.de ,
vielen Dank!

Ich hatte diese Version schon hier im Forum gesehen, aber gleich verworfen und noch nicht mal ausprobiert, war ja uralt und für den Shop 3.
Aber es funktioniert tatsächlich!

Mittlerweile habe ich aber auch eine alternative Implementation mit einer eigenen Funktion, die tatsächlich die Plugin-Tab Nummer herausfindet.
Aber so ist es viel besser und einfacher.

Dank&Gruß,
fibergirl
 

FMoche

Moderator
Mitarbeiter
15. Dezember 2014
1.369
347
Halle (Saale)
Noch einfacher geht das, wenn du in deiner Boostrap.php die Methode renderAdminMenuTab() implementierst, siehe dazu auch https://gitlab.com/jtl-software/jtl-shop/plugins/jtl_test/-/blob/master/Bootstrap.php#L192

Wenn du im Template dieses Tabs auch noch ein hidden-Input mit name="kPluginAdminMenu" anlegst, bleibt der Tab dann auch nach Absenden eines Formulars aktiv.

Also z.B. in so:

Code:
public function renderAdminMenuTab(string $tabName, int $menuID, JTLSmarty $smarty): string
{
    $smarty->assign('menuID', $menuID);
    return $smarty->fetch($this->getPlugin()->getPaths()->getAdminPath() . '/templates/meineTemplateDatei.tpl');
}

Und in meineTemplateDatei.tpl:
Code:
<form method="post">
    {$jtl_token}
    <input type="hidden" name="kPluginAdminMenu" value="{$menuID}">
    <input type="text" name="foo_tab3" class="form-control">
    <button class="btn btn-default" type="submit">Absenden</button>
</form>
 

SportNet

Sehr aktives Mitglied
16. Oktober 2014
228
56
Hallo @NETZdinge.de ,


Mittlerweile habe ich aber auch eine alternative Implementation mit einer eigenen Funktion, die tatsächlich die Plugin-Tab Nummer herausfindet.
Aber so ist es viel besser und einfacher.
Kannst du uns daran teilhaben lassen? Die Methode von Felix funktioniert für uns leider nicht wie gewünscht, da bei Definition von <Filename>script.php</Filename> in der info.xml scheinbar die renderAdminMenuTab Funktion nicht aufgerufen wird.

bzw. @FMoche wie können wir aus unserem Script oder der zugehörigen Templatedatei auf menuID zugreifen, wenn die bootstrap.php nicht genutzt wird?

Die Variante von @NETZdinge.de "?kPlugin=" . $plugin->getID() . "&cPluginTab='NameDesTabs'" geht in 5.2 zwar auch noch, aber wir hätte es gern variabler.
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.797
2.198
Berlin
Ich Regel das bei mir per JS, so lande ich immer wieder in dem Tab den ich im Plugin zuletzt offen hatte, ohne das ich hier Parameter übergeben muss
Das nutze ich seit dem 4er Shop in allen Plugins, du musst also nichts weiter tun als dieses JS im Backend einzubinden.

Code:
var cssHashCode  = function() {
    var hash = 5381, i = this.length
    while(i)
        hash = (hash * 33) ^ this.charCodeAt(--i)
    return hash >>> 0;
};

jQuery(document).ready(function() {
    cssHashCode(document.location.href);
    $('.tabs-nav a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
        var target = $(e.target).attr("href"); // activated tab
        $.cookie('target', target, {expires: 7});
    });

    if ($.cookie('target') != 'undefined') {
        $(".tabs-nav li.nav-item a[href='" + $.cookie('target') + "']").tab('show');
    }
});
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Plugin Empfehlung gesucht - Warenkorb z.B. Kaufe 2, 2. Produkt x Rabatt Plugins für JTL-Shop 0
Neu CSS-Gutschein-Plugin funktioniert nach Shop-update auf 5.5.3 nicht mehr Plugins für JTL-Shop 1
Neu Google Shopping (Plugin) Export immer leer Allgemeine Fragen zu JTL-Shop 4
Neu Sendcloud Plugin immer im Tab fehlerhaft - Lizenz abgelaufen Plugins für JTL-Shop 0
Neu Texteditor Hinweis Plugin von Webstollen Plugins für JTL-Shop 0
Neu Welches PlugIn für ein besseres Google Ranking? Plugins für JTL-Shop 2
Neu Händlerbund Plugin: "Zahlung und Versand" wird nicht automatisch übernommen Plugins für JTL-Shop 2
Neu Die Zahlungsart SOFORT ist eine Plugin-Zahlungsart für Mollie. Das zugehörige Plugin ist jedoch nicht installiert! Allgemeine Fragen zu JTL-Shop 0
Neu Plugin PayPal - capture failed for method PayPal Checkout Plugins für JTL-Shop 0
Neu Plugin-Update 2.4.1: JTL Exportformat Google Shopping Plugins für JTL-Shop 6
Neu Paypal Plugin läßt sich nicht installieren - SQL Fehler Plugins für JTL-Shop 2
Neu Paypal Plugin 2.0.1 Merachant JTL-Shop - Fehler und Bugs 10
Neu Plugin Fehler JTL-Shop - Fehler und Bugs 7
Neu PayPal Plugin 2.0 - Vaulting - Ist IMMER ein neues Onboarding nötig? Wie prüfen, ob OK? Plugins für JTL-Shop 6
Neu Plugin - Kindartikel in der Artikelübersicht anzeigen - SHOP-475 Plugins für JTL-Shop 8
Neu 🌟Neues Plugin: Produkt FAQ Plugins für JTL-Shop 0
Neu Suche Plugin: Zusatzartikel mit einfacher Variationsauswahl Plugins für JTL-Shop 8
Neu Neues Plugin - Der ultimative Super-Slider Plugins für JTL-Shop 0
Neu Plugin "Verwalte deinen JTL Shop mit Excel Dateien" geht wohl nicht mit JTL-Shop 5.4.1 Plugins für JTL-Shop 1

Ähnliche Themen