Slideshow Modul - Anzahl Bilder auswählen

  • Hallo,


    ich habe bereits hier dieses Thema erstellt, aber da scheint wirklich nichts mehr los zu sein.
    Bloss ein Hinweis wegen crossposting :)


    Jedenfalls,


    ich habe ein Slideshow Modul basierend auf jQuery gebastelt. Habe mir dazu aus verschiedenen anderen Modulen zusammengereimt wie es geht.
    Das Modul funktioniert auch perfekt, ich bin aber an der Weiterentwicklung ;)


    Für die Bildquelle habe ich 5 Felder angegeben in der modul.xml (hier werden ja die Parameter im Backend eingestellt)
    Was aber, wenn mehr Bilder verwendet werden sollen?


    Deshalb wollte ich gern das der User die gewünschte Bildanzahl eingibt
    und daraufhin "erscheint" die entsprechenden Anzahl an Bildquellen-Felder zur Auswahl.


    Ich brauche dabei einen Lösungsansatz oder eine Alternative.
    Kann man in der modul.xml Ajax verwenden um dies zu realisieren?
    Oder mit php irgendwas basteln?


    Wäre net wenn mir jemand helfen könnte :)

  • Hallo @nierewa


    es gibt mehrere Möglichkeiten, die mir einfallen würden ;)


    Einmal du gibst nur einen Ordner an (Beispiel findet sich in mod_random_image)
    Die Bilder bekommt man dann zum Beispiel so: https://github.com/joomla/joom…_image/helper.php#L84-128


    Oder ein Repeatable form field siehe:
    https://github.com/joomla/joomla-cms/pull/3574
    Beispielimplementierung hier: https://github.com/joomla/joomla-cms/pull/3147

  • Repeatable form field hab ich mir angeschaut. Ist echt cool.
    Doch leider komme ich nicht richtig zurecht. Wie kann ich das angegeben dann in der default.php auslesen?


    @'DirtyWorld:
    Ich habe den im Link angegebenen Code in der XML-Datei eingetragen (zum Test)


    Es funktioniert erst mal und ich kann mehrere Einträge angeben. Diese werden auch der Liste hinzugefügt.

  • @nierewa

    Zitat von nierewa

    Doch leider komme ich nicht richtig zurecht. Wie kann ich das angegeben dann in der default.php auslesen?


    Ungefähr so:


    Code
    $param = $this->params->get('list_example', null);if ($param){	$paramArray = json_decode($param, true);	$paramArray['fieldname_example'];	$paramArray['fieldname_example_2'];	$paramArray['fieldname_example_3'];}


    Der dazu passende XML eintrag:

  • Danke erst mal, aber es funktioniert nicht.


    Ich habe den angegebenen Code kopiert, dann hat er meine Seite nicht mehr angezeigt.
    Dann habe ich durch probieren herausgefunden, das es mit folgender Änderung geht:


    Code
    $param = $this->params->get('list_example', null);   geändert zu:    $param = $params->get('list_example', null);


    Ich möchte HTML-Tags mit übergeben, damit der Nutzer die Bildbeschreibung formatieren kann, also zum Beispiel mit <h1>.
    Leider werden die Tags entfernt.


    Wie kann ich diese mit übergeben? Oder ist das nicht möglich?

  • Hi,
    also die params fragst du in der mod_xx.php zusammen.
    Die Ausgabe dieser erfolgt in der tmpl/default.php. Dort setzt du die parameter in Html.
    Willst du die Headline-Elemente direkt im Formularfeld eintragen oder soll das innerhalb der View passieren?
    Denn mit einem normalen Textfeld kannst du kein HTML mitgeben. Das wird herausgefiltert.
    Du könntest ein Editorfeld anstatt dem Textfeld verwenden dann kann der Nutzer das sogar mit Editor einstellen oder mit dem Text form field müsste das auch gehen.


    https://docs.joomla.org/Standard_form_field_types


    Grüße

  • Also ich bekomms net hin. Wenn ich ein Editorfeld verwende, wird es zwar angezeigt, ich kann aber nichts reinschreiben.
    Es wird nicht aktiviert und ich sehe auch keinen Cursor. (Browser ist Firefox)
    Am Besten ich häng das Modul in der Testphase(!) mal an, bedeutet es ist nicht alles ausgereift :)


    Im Moment habe ich zwei Varianten um die Bilder auszuwählen.
    Einmal mit der Liste und das zweite unter dem Reiter "Image Source".


    Bei beiden werden keine HTML-Tags mit übergeben.
    Also zum Beispiel wenn ich unter Beschreibung <h1>Bild 1</h1> eingebe und dann speichere steht nur noch Bild 1.


    So weit ich das herausgefunden habe liegt es bei Varianta 2 an daran, das die eingegebenen Elemente mit Javascript als <span> gespeichert werden.


    Mit gefällt übrigens Varainte 1 besser, wenn nur die HTML Tags gehen würden.

  • Ja, das Repeatable hat noch einige andere "Macken". Du musst den filter aufs repeatable-Feld setzen. Die andern Felder brauchen gar keinen Filter. Weiß nicht, aber ich würde sie trotzdem setzen, falls es sch um einen "Bug" handelt und zukünftig doch noch geändert wird



    Und alle andern text und textarea-Felder funktionieren bei mir mit filter="safehtml" einwandfrei.


    Nebenbei:
    Jetzt ist es nur so, dass ich als User erwarten würde, dass mir das Modul meine Titel formatiert und ich da nicht mit HTML rummachen muss ;)
    Und zu Beschreibungen wurde dir ja schon empfohlen, vielleicht(?) Editor zu verwenden (auch aus Usersicht).

  • Zitat

    Du musst den filter aufs repeatable-Feld setzen.


    Ok, das rockt. So läufts. Ich hatte das schon probiert, den Filter auf ein anderes Feld zu setzen.
    Nur das repeat-Feld an sich hatte ich noch nicht ;)


    Zitat

    Und zu Beschreibungen wurde dir ja schon empfohlen, vielleicht(?) Editor zu verwenden (auch aus Usersicht).


    Würde ich ja gern. Aber wie beschrieben funktioniert das nicht, weil man in das Editorfenster nichts reinschreiben kann.

  • Würde ich ja gern. Aber wie beschrieben funktioniert das nicht, weil man in das Editorfenster nichts reinschreiben kann.


    Wo jetzt? Im repeatable? Das hat generell Probleme, wenn irgendein Feld JavaScript braucht. So weit ich das bisher rausbekommen habe, sind die IDs der Felder, die JQuery und JS ansprechen will, anders aufgebaut, heißen einfach falsch.


    Oder generell kein Editor möglich? Das sollte eigentlich schon gehen.

  • Zitat

    Wo jetzt? Im repeatable?


    Genau.
    In der xml-Datei lege ich ein field type="editor" an.
    Im Joomla-Backend in der Modulkonfiguration kann ich dann aber im Modul nichts reinschreiben, da das Editorfeld keinen Fokus erhält.