Costum Fields mit Widget-JS-Code

  • Joomla Version
    5.1.2
    PHP Version
    Unbekannt
    Hoster
    https://www.figurentheater-wels.at

    Costum Fields und JavaScript Frage

    Ich betreue eine Festivalseite. Auf dieser Seite kann man online Tickets bestellen (PRETIX). Mittels eines eingefügten JS-Widget im Code des Artikels. Funktioniert reibungslos.

    Da in der Festivalwoche an die 60 Veranstaltungen stattfinden und ich die Site 5 Monate bis auf das Online-Ticketing vor Beginn fertig haben muss suche ich nach Möglichkeiten das Einfügen möglichst praktikabel zu machen.

    Letztes Jahr habe Module mit dem Widget erstellt und mein "ticketing-Modul" jeweils in den Artikel eingefügt.

    Nun zu meiner Frage:

    Ich arbeite bei meiner Artikelerstellung hauptsächlich mit Feldern. Gibt es eine Möglichkeit den Widget-Code (JS) in ein Feld zu packen, wobei 2 fünfstellige Zahlenreihen in dem Code variabel sind?

    Beispiel:

    Code
    <pretix-widget event="https://karten.figurentheater-wels.at/Festival24/" subevent="4135302" single-item-select="button"></pretix-widget>
    <noscript>
        <div class="pretix-widget">
        <div class="pretix-widget-info-message"> JavaScript ist in Ihrem Browser deaktiviert. Um unseren Ticket-Shop ohne JavaScript aufzurufen, klicken Sie bitte <a target="_blank" rel="noopener" href="https://karten.figurentheater-wels.at/Festival24/4135302/">hier</a>. </div></div></noscript>-->

    Die Zahl des Subevents ist die Zahl, die zur Veranstaltung (hier 4135302) weist. Diese Zahl muss änderbar sein.

    Mein Traum wäre eine Feldgruppe mit den Standardwerten des Widgets und ein Feld, in dem ich die variable Zahl einfügen kann.

    Geht das?

  • Zur hilfreichsten Antwort springen
  • Eventuell nützlich:

    neoman666
    22. Juli 2022 um 10:02

    und:

    How to get/call Joomla 4 custom fields into module
    I tried below code &lt;?php $article_id = 2; $model = JModelLegacy::getInstance('Article', 'ContentModel'); $article = $model-&gt;getItem($article_id);…
    joomla.stackexchange.com
  • Ich glaube, da liegt ein Missverständnis vor. Ich suche eine Alternative zu den Modulen. Ich möchte per costumfields einen bestimmten Wert in einem widget austauschen. Siehe oben. Ich mach mal die Augen zu und sehe eine Feldgruppe. Hier kann ich mit einem Mausklick das Widget aktivieren. Dann trage ich meinen gewünschten Wert der Variable in einem Textfeld ein. Und voila, das Widget funktioniert.... Man wird ja noch träumen dürfen. :P

  • Was ich machen würde:

    Ich würde mir ein Custom FIeld anlegen, in dem ich die ID der Veranstaltung eingebe. Dann erstelle ich ein Modul, in dem der Code das JavaScript hinterlegt wird. Dafür würde ich zu einem Templateoverride greifen in dem ich die mir die ID des Beitrags aus der Datenbank und damit den Inhalt des Custom Fields auslese. Diesen Inhalt schreibe ich dann an die entsprechende Stelle in JavaScript – Code. Das Modul würde ich jetzt noch in den Beitrag laden.

    • Hilfreichste Antwort

    evilgrinIch habe mit Hilfe der freien Komponente "ReReplacer von RegularLabs" einen Work-Around gefunden!

    1.) Am Anfang steht folgender Code:

    Code
    <pretix-widget event="https://karten.figurentheater-wels.at/Festival24/" subevent="4135302" single-item-select="button"></pretix-widget>
    <noscript><div class="pretix-widget"><div class="pretix-widget-info-message"> JavaScript ist in Ihrem Browser deaktiviert. Um unseren Ticket-Shop ohne JavaScript aufzurufen, klicken Sie bitte <a target="_blank" rel="noopener" href="https://karten.figurentheaterwels.at/Festival24/4135302/">hier</a>. </div></div></noscript>

    2.) Nun erstelle ich ein Custom FIeld (Text) und füge die ID in den Code des Artikels ein {field ID-Nr}. In dieses gebe ich den Wert: 4135302 ein.

    3.) Nun sieht der Code im Quelltext so aus:

    Code
    <pretix-widget event="https://karten.figurentheater-wels.at/Festival24/" subevent="<span class="field-value ">4135302</span>" single-item-select="button"></pretix-widget>
    <noscript><div class="pretix-widget"><div class="pretix-widget-info-message"> JavaScript ist in Ihrem Browser deaktiviert. Um unseren Ticket-Shop ohne JavaScript aufzurufen, klicken Sie bitte <a target="_blank" rel="noopener" href="https://karten.figurentheater-wels.at/Festival24/<span class="field-value ">4135302</span>/">hier</a>. </div></div></noscript>

    4.) Man sieht, dass die Nummer 4135302 nun von einer span Klasse umgeben ist, welche den JS-Code unbrauchbar macht.

    5.) Nun habe ich dem Feld eine eindeutige CSS-Klasse verpasst (pretixnummer)

    6.) Nun sieht der Code im Quelltext so aus:

    Code
    <pretix-widget event="https://karten.figurentheater-wels.at/Festival24/" subevent="<span class="field-value pretixnummer">4135302</span>" single-item-select="button"></pretix-widget>
    <noscript><div class="pretix-widget"><div class="pretix-widget-info-message"> JavaScript ist in Ihrem Browser deaktiviert. Um unseren Ticket-Shop ohne JavaScript aufzurufen, klicken Sie bitte <a target="_blank" rel="noopener" href="https://karten.figurentheater-wels.at/Festival24/<span class="field-value pretixnummer">4135302</span>/">hier</a>. </div></div></noscript>

    7.) Natürlich ist so der Code auch unbrauchbar, aber nun bekommt die Komponente ReReplacer von RegularLabs ihren Einsatz! Isch lösche damit die span-Klammern.

    Ich ersetze:
    " subevent="<span class="field-value pretixnummer"> -----> " subevent="
    </span>" single-item-select="button"></pretix-widget> -----> " single-item-select="button"></pretix-widget>
    <span class="field-value pretixnummer"> -----> nichts
    </span>/">hier</a> -----> /">hier</a>

    8.) Und voila, der Code von PRETIX funktioniert.

    Code
    <pretix-widget event="https://karten.figurentheater-wels.at/Festival24/" subevent="4135302" single-item-select="button"></pretix-widget>
    <noscript><div class="pretix-widget"><div class="pretix-widget-info-message"> JavaScript ist in Ihrem Browser deaktiviert. Um unseren Ticket-Shop ohne JavaScript aufzurufen, klicken Sie bitte <a target="_blank" rel="noopener" href="https://karten.figurentheaterwels.at/Festival24/4135302/">hier</a>. </div></div></noscript>
  • Warum, ich erspare mir die Einbettung eines Moduls. Und ich habe was ich wollte. Ein Field, in dem ich pro Veranstaltungstitel nur ein Feld ausfüllen muss. Für 50 Veranstaltungen, die in einer Woche im Jahr stattfinden keine schlechte Lösung :)