[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Frage zu 'zufälligem Medium' - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
son
Beiträge: 13
Registriert: 18. Mai 2006, 20:08
Wohnort: Berlin

Frage zu 'zufälligem Medium'

6. Jun 2006, 20:09

Hallo zusammen,
ich habe gerade das Modul 'Zufälliges Medium' angepasst und eingebunden. Es funktioniert soweit auch, also dass bei jedem Aufruf ein zufälliges Bild angezeigt wird, allerdings bekomme ich immer folgende Fehlermeldung:
Warning: Invalid argument supplied for foreach() in /usr/local/etc/httpd/htdocs/kunden/fotomarathon/redaxo3_2/redaxo/include/classes/class.oomedia.inc.php on line 536
Hier ist der Quelltext des Moduls:

Code: Alles auswählen

<?php
$mediacat = 4;

 $cat = OOMediaCategory::getCategoryById($mediacat);
 $bilder = $cat->getFiles();

 shuffle( $bilder);
 $randIndex = mt_rand( 0, count( $bilder) -1);
 $bild = $bilder[ $randIndex];

echo $bild->toHTML();
?>
Hat jemand von Euch eine Idee, was falsch sein könnte? Ich habe leider keinen blassen Schimmer...
Vielen Dank schon einmal im voraus und viele Grüße,
son

son
Beiträge: 13
Registriert: 18. Mai 2006, 20:08
Wohnort: Berlin

6. Jun 2006, 22:27

Die Fehlermeldung bezieht sich ja auf diese Methode in der class.oomedia.inc.php... Nur was für ein Argument muss ich im Modul angeben, dass der Fehler verschwindet?

Code: Alles auswählen

// Zusatzattribute anfügen 
    foreach ($params as $name => $value)
    {
      $additional .= ' '. $name.'="'.$value.'"';
    }

    return sprintf('<img src="%s"%s />', $path.$file, $additional);
  }

???
:(

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

6. Jun 2006, 23:26

Hi son,

das sieht ja komisch aus.. Ich habe dieses Modul bereits ohne Probleme im Einsatz... Evtl mal die class.oomedia aus dem CVS verwenden..

Gruß,
Markus

son
Beiträge: 13
Registriert: 18. Mai 2006, 20:08
Wohnort: Berlin

7. Jun 2006, 00:13

Hi Markus,
ja, irgendwie habe ich ein Talent für seltsame Fehler... :?
Ich habe redaxo 3.2 installiert und an der class.oomedia.inc.php nach der Installation nie was verändert. Mit welcher Datei, meinst Du, könnte ich es nochmal probieren?
Viele Grüße und vielen Dank für Deine Antwort,
son

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

7. Jun 2006, 01:37

Hi son,

versuchs mal mit der neusten Version:

Gruß,
Markus

son
Beiträge: 13
Registriert: 18. Mai 2006, 20:08
Wohnort: Berlin

7. Jun 2006, 12:31

Hi Markus,
habe es gerade probiert, funktioniert leider auch nicht... immernoch die gleiche Fehlermeldung...
:(
Aber vielen lieben Dank für Deine Hilfe und
Grüße,
son

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

7. Jun 2006, 14:33

HI son,

teste ich bei gelegenheit, klappt aber jetzt wohl leider nicht mehr diese Woche.

Gruß,
Markus

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

7. Jun 2006, 14:42

Hej,

welche PHP-Version wird denn verwendet?

vg Thomas

son
Beiträge: 13
Registriert: 18. Mai 2006, 20:08
Wohnort: Berlin

8. Jun 2006, 10:24

Hallo Markus und Thomas,

teste ich bei gelegenheit, klappt aber jetzt wohl leider nicht mehr diese Woche.
das wäre klasse! Vielen lieben Dank schon einmal!
welche PHP-Version wird denn verwendet?
php Version 4.3.4

Viele Grüße,
Sonja

benny0903
Beiträge: 17
Registriert: 5. Jun 2006, 22:20

15. Jun 2006, 07:57

Wurde schon eine Lösung gefunden?

Erhalte gleiche Fehlermeldung. Habe ebenfalls Version 3.2 im Einsatz.
PHP Version 4.4.2

Danke!

son
Beiträge: 13
Registriert: 18. Mai 2006, 20:08
Wohnort: Berlin

15. Jun 2006, 17:38

bis jetzt leider noch nicht, bin immer noch ratlos...
Grüße, Sonja

discsniffer
Beiträge: 68
Registriert: 18. Mai 2006, 15:45
Wohnort: Birkenfeld a. d. N. | Birkenau | Weilheim a. d. T. | Stuttgart / Germany
Kontaktdaten: ICQ

15. Jun 2006, 18:23

Hallo Sonja,

ich befürchte zu wissen weshalb du den Fehler hast. durch den Aufruf:

Code: Alles auswählen

echo $bild->toHTML();
übergibst du toHTML() nichts, intern ersetzt toHTML deine Übergabe in:

Code: Alles auswählen

echo $bild->toHTML('');
dieser Wert wird an eine interne Funktion toImage() weitergereicht. Dort löst das letztendlich den Fehler auf weil '' eben kein Array ist den man durchlaufen kann. Ich konnte den folgenden Lösungsvorschlag leider noch nicht testen, da ich das zufällige Medium usw. nicht benutze. Deshalb probier mal, ohne Gewähr, aus den Aufruf wie folgt durchzuführen:

Code: Alles auswählen

echo $bild->toHTML(array());
Sollte dies nicht helfen müßte man vor dieser Foreach-Schleife abfangen ob es sich bei $Param um einen Array handelt. Das machst du am besten wie folgt:

Code: Alles auswählen

// Zusatzatrribute anfügen
if (is_array($params)) //Handelt es sich bei $params um einen Array?
{
foreach ($params as $name => $value)
{
$additional .= ' '. $name.'="'.$value.'"';
}
}
Das beeinträchtigt auch nicht die weitere Funktionalität des Skriptes.

Ich hoffe das war die Lösung deines Problems. Nette Grüße,

Flo
using: REDAXO|3.2

son
Beiträge: 13
Registriert: 18. Mai 2006, 20:08
Wohnort: Berlin

15. Jun 2006, 18:34

Hi Flo,
Klasse, das funktioniert!!
:D

Vielen, vielen lieben Dank!!!!
und Grüße,
Sonja

discsniffer
Beiträge: 68
Registriert: 18. Mai 2006, 15:45
Wohnort: Birkenfeld a. d. N. | Birkenau | Weilheim a. d. T. | Stuttgart / Germany
Kontaktdaten: ICQ

15. Jun 2006, 18:41

Hi Sonja,
das freut mich! :D
Liebe Grüße,
Flo
using: REDAXO|3.2

benny0903
Beiträge: 17
Registriert: 5. Jun 2006, 22:20

nur dateipfad ausgeben?

16. Jun 2006, 09:47

Das klappt supi!

Kleine Nachfrage:
Wie schaffe ich es, dass ich nur den Dateipfad erhalte?
bsp: files/beispielbild.jpg

Dann kann ich ein Zufallshintergrundbild nutzen.

discsniffer
Beiträge: 68
Registriert: 18. Mai 2006, 15:45
Wohnort: Birkenfeld a. d. N. | Birkenau | Weilheim a. d. T. | Stuttgart / Germany
Kontaktdaten: ICQ

16. Jun 2006, 12:49

Auch wenn ich das AddOn immer noch nicht bei mir installiert hab müßtest du den Dateinamen wie folgt erhalten:

Code: Alles auswählen

$Dateipfad = 'files/' . $bild->getFileName();
Also bitte selbst ausprobieren. Ich muß darauf hinweisen das in diesem Fall die Bilder nicht resized werden, wie es u.U. der Fall ist wenn man regulär toHtml() benutzt.
Viel erfolg.

Grüße,

Flo
using: REDAXO|3.2

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

16. Jun 2006, 12:57

Hi,

Code: Alles auswählen

$dateiname = $media->getFileName();
der von Flo genannte Fix, ist jetzt auch im CVS.

Gruß,
Markus

discsniffer
Beiträge: 68
Registriert: 18. Mai 2006, 15:45
Wohnort: Birkenfeld a. d. N. | Birkenau | Weilheim a. d. T. | Stuttgart / Germany
Kontaktdaten: ICQ

16. Jun 2006, 13:48

Vielen Dank Markus! - Flo
using: REDAXO|3.2

benny0903
Beiträge: 17
Registriert: 5. Jun 2006, 22:20

16. Jun 2006, 19:34

Funktioniert einwandfrei!

DANKE.

discsniffer
Beiträge: 68
Registriert: 18. Mai 2006, 15:45
Wohnort: Birkenfeld a. d. N. | Birkenau | Weilheim a. d. T. | Stuttgart / Germany
Kontaktdaten: ICQ

16. Jun 2006, 20:05

Bitte.. :D
using: REDAXO|3.2

Joachim.Dörr
Beiträge: 1403
Registriert: 7. Apr 2006, 01:49
Kontaktdaten: ICQ Website

3. Jul 2006, 14:59

Hi der Code:

Code: Alles auswählen

echo $bild->toHTML(); 
gibt kein valides XHTML aus. dazu fehlt das "alt" atribut.

geht das irgendwie, dass man da die Ausgabe modifizieren kann? wo man zumindest ein pseudo alt einstellen kann.

lg
Joachim

Joachim.Dörr
Beiträge: 1403
Registriert: 7. Apr 2006, 01:49
Kontaktdaten: ICQ Website

3. Jul 2006, 17:04

Weiß keiner weiter?

könnte ne lösung wirklich gut gebrauchen.

Joachim.Dörr
Beiträge: 1403
Registriert: 7. Apr 2006, 01:49
Kontaktdaten: ICQ Website

3. Jul 2006, 17:11

Ok habs selbst gefunden

In der Datei "class.oomedia.inc.php" in der Zeile 547 hab ich diesen Code:

Code: Alles auswählen

return sprintf('<img src="%s"%s />', $path.$file, $additional);
etwa so geänder:

Code: Alles auswählen

return sprintf('<img src="%s"%s alt="" />', $path.$file, $additional);
damit freud sich der Validator schon etwas mehr und sagt jetzt ist es xhtml

lg
Joachim

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

3. Jul 2006, 17:11

Hi,

Ist fürs nächste Release gefixed...

Gruß,
Markus

sawro
Beiträge: 57
Registriert: 24. Feb 2006, 22:46

31. Aug 2006, 09:43

hi zusammen,

in der class.oomedia.inc.php ( ab ca. zeile 523) habe ich das:

Code: Alles auswählen

    // Alternativtext hinzufügen    
    if (!isset($params['alt']))
    {
      if (($desc = $this->getDescription()) != '')
      {
        $params['alt'] = htmlspecialchars($desc);
      }
	  else //falls nichts eingetragen wird
	  {
        $params['alt'] = htmlspecialchars(' ');
	  }
    }
    // Titel hinzufügen    
    if (!isset($params['title']))
    {
      if (($title = $this->getTitle()) != '')
      {
        $params['title'] = htmlspecialchars($title);
      }
    }
    // Breite hinzufügen    
    if (!isset($params['width']))
    {
      if (($width = $this->getWidth()) != '')
      {
        $params['width'] = htmlspecialchars($width);
      }
    }
    // Höhe hinzufügen    
    if (!isset($params['height']))
    {
      if (($height = $this->getHeight()) != '')
      {
        $params['height'] = htmlspecialchars($height);
      }
    }
= die valide ausgabe vom zufallsbild. alt-tag wird gefüllt aus dem beschreibungstext im medienpool. wenn kein beschreibungstext vorhanden ist, wird ein leeres alt-tag ausgegeben. :)

bis denne....

lg
sabine

Zurück zu „Allgemeines [R3]“