[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
[erledigt]Eigenes Modul: Findet jemand den Fehler? - 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/
Include
Beiträge: 107
Registriert: 30. Mär 2007, 21:22

[erledigt]Eigenes Modul: Findet jemand den Fehler?

7. Aug 2010, 23:34

Hallo Alle,
ich bin gerade dabei mir ein eigenes Modul zusammenzubauen.

Das Ziel des Moduls ist eine reihe aus Bildern des Medienpools auszugeben die jeweils mit unterschiedlichen Seiten verlinkt werden. Ich möchte das ganze nicht einfach darüber lösen das ich Bilder einsetze und diese verlinke sondern es soll automatisch passieren. Dazu habe ich über die Metainfos ein neues Attribut "med_linkto" erstellt. Darin wird die id zu einer bestimmten Seite gespeichert.

Eingabe:

Code: Alles auswählen

Bilder auswählen:
<br />REX_MEDIALIST_BUTTON[1]
<br />
Ausgabe:

Code: Alles auswählen

<?php 
 // Bilddateien aus Medialist
 $rxmodule['imagelist'] = explode(',', trim("REX_MEDIALIST[1]"));

echo '<div id="imagewall"><p><!-- IMAGE WALL -->';
echo "\r\n";

foreach ($rxmodule['imagelist'] as $rxmodule['file'])
 {

$rxmodule['media'] = OOMedia::getMediaByName($rxmodule['file']);
 if ($rxmodule['media'])
 {

$rxmodule['mediatitle'] = $rxmodule['media']->getValue('title');
$rxmodule['medialink'] = $rxmodule['media']->getValue('med_linkto'); 

 if (trim($rxmodule['mediatitle']=='') or !$rxmodule['mediatitle'])
 {
 $rxmodule['mediatitle'] = $rxmodule['file'];
 $rxmodule['medialink'] = $rxmodule['link'];
  }

 echo '<a href="'.$rxmodule['link'].'"><img src="'. 'files/' . $rxmodule['file'].'" class="image"  title="' .$rxmodule['file']. '"  /></a>';
echo "\r\n";

		}
	}
 echo '</p></div><!-- /IMAGE WALL -->';

?>
Der Code ist jetzt noch nicht aufgeräumt und evtl etwas unelegant. Findet jemand den Fehler oder hat einen Tipp wie man es besser machen kann? Vielleicht bin ich ja völlig auf dem Holzweg¿

1000 Dank schon mal!
Zuletzt geändert von Include am 1. Sep 2010, 20:15, insgesamt 1-mal geändert.

zehbaeh
Beiträge: 556
Registriert: 17. Okt 2006, 11:52
Wohnort: Solingen

8. Aug 2010, 09:51

"Den" Fehler findet man eher selten bis gar nicht.

PS: Die EVA kann und sollte auch deine Freundin werden.)

Include
Beiträge: 107
Registriert: 30. Mär 2007, 21:22

8. Aug 2010, 13:58

zehbaeh hat geschrieben:"Den" Fehler findet man eher selten bis gar nicht.

PS: Die EVA kann und sollte auch deine Freundin werden.)
da ich selbst kein entwickler bin fehlen mir in der tat bestimmt einige basics. hilfe zur selbsthilfe ist auch generell ein guter ansatz. nur ist es ja auch oft so das man als profi schnell sieht wo der hase im pfeffer liegt. da ist dann eine konkrete hilfestellung auch viel wert.

wenn ich als designer von einem entwickler in einem anderen forum gefragt werde wie man in photoshop dieses oder jenes problem lösen kann, dann poste ich auch keine links zur allgemeinen photoshop-hilfe oder zu amazon sondern bemühe mich schnell einen lösungsweg vorzuschlagen. wenn ich keine lust oder zeit habe, dann lasse ich es einfach.
(das nur am rande)

trotzdem vielen dank für deinen versuch mit dem beitrag zu helfen.

zehbaeh
Beiträge: 556
Registriert: 17. Okt 2006, 11:52
Wohnort: Solingen

8. Aug 2010, 14:31

Bei der Programmierung ist zum Beheben eines Fehlers eine möglichst genaue Beschreibung des aufgetretenen Fehlers in der Regel unverzichtbar.
PHP liefert zu aufgetretenen Fehler i.d.R hinreichend genaue Angaben.
Ich kann in deinem Post keine Fehlerbeschreibung entdecken.

Benutzeravatar
jdlx
Beiträge: 2615
Registriert: 29. Sep 2005, 10:50
Wohnort: Hamburg
Kontaktdaten: Website

Re: Eigenes Modul: Findet jemand den Fehler? (Thema Metainfo

8. Aug 2010, 14:41

Include hat geschrieben:Findet jemand den Fehler ..
Wenn du error_reporting anknipst bekommst du deine(n) Fehler angezeigt.. pack das in den Kopf deiner Modulausgabe:

Code: Alles auswählen

@ ini_set('error_reporting', E_ALL);
@ ini_set('display_errors', On);
hth,
Jan
vg, Jan

Include
Beiträge: 107
Registriert: 30. Mär 2007, 21:22

8. Aug 2010, 20:11

zehbaeh hat geschrieben:Bei der Programmierung ist zum Beheben eines Fehlers eine möglichst genaue Beschreibung des aufgetretenen Fehlers in der Regel unverzichtbar.
PHP liefert zu aufgetretenen Fehler i.d.R hinreichend genaue Angaben.
Ich kann in deinem Post keine Fehlerbeschreibung entdecken.
ach so, sag das doch gleich!

Include
Beiträge: 107
Registriert: 30. Mär 2007, 21:22

8. Aug 2010, 20:25

@jeandeluxe

vielen dank für den tipp!!
das ergab folgende fehlermeldung:
Notice: Undefined index: link in /Users/~meineplatte/Sites/redaxo4_3_1/redaxo/include/classes/class.rex_article.inc.php(133) : eval()'d code on line 119

Tja, so wirklich schlauer bin ich jetzt auch nicht.
Es funktioniert ja auch alles bis auf das auslesen meines Attributs "med_linkto" aus den metainfos für das zusammenbauen der url.

wenn ich den wert in den metainfos direkt auslese dann kommt es auch korrekt an. nur eben nicht wenn ich es über dieses array versuche in dem die namen der bilddateien aus der medialist kommen.

also hiermit habe ich es versucht. und es geht.

Code: Alles auswählen

$linkto = '';
$media = OOMedia::getMediaByFileName("34119_435949627847_672972847_5771702_1733839_n.jpg");
Prüfen ob das Medium überhaupt existiert
if($media)
{
$linkto = $media->getValue("med_linkto"); 
}
echo '<a href="'.rex_getUrl($linkto).'">'.$linkto.'</a><br />';

Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

8. Aug 2010, 20:56

Code: Alles auswählen

$rxmodule['medialink'] = $rxmodule['link'];
  }

 echo '<a href="'.$rxmodule['link'].'"><img src="'. 'files/' .  ...
In deiner if-Abfrage verwendest $rxmodule['link']. Wo kommt das denn her? Ich sehe nirgends, dass das definiert wird.
Im Link unten steht das noch einmal so drin. Im Link selbst sollte doch wohl eher $rxmodule['medialink'] drin stehen.
Ebenso im Link anstelle von title="' .$rxmodule['file']. '" sollte stehen title="' .$rxmodule['mediatitle']. '"
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

Include
Beiträge: 107
Registriert: 30. Mär 2007, 21:22

8. Aug 2010, 22:05

In deiner if-Abfrage verwendest $rxmodule['link']. Wo kommt das denn her? Ich sehe nirgends, dass das definiert wird.
äh, wie ist es denn richtig?
Im Link unten steht das noch einmal so drin. Im Link selbst sollte doch wohl eher $rxmodule['medialink'] drin stehen.
Ebenso im Link anstelle von title="' .$rxmodule['file']. '" sollte stehen title="' .$rxmodule['mediatitle']. '"
das unten bei title file drin steht liegt nur daran das ich beim testen schnell über den tooltip überprüfen wollte welcher dateiname das ist ohne in den ausgegebenen sourcecode zu sehen.

Benutzeravatar
jdlx
Beiträge: 2615
Registriert: 29. Sep 2005, 10:50
Wohnort: Hamburg
Kontaktdaten: Website

8. Aug 2010, 23:09

Include hat geschrieben:
In deiner if-Abfrage verwendest $rxmodule['link']. Wo kommt das denn her? Ich sehe nirgends, dass das definiert wird.
äh, wie ist es denn richtig?
Bedeutet diese Frage das du überhaupt nicht weißt was du in deinem Code tust?
Sven hat dich auch einen logischen Fehler hingewiesen.. das hat noch nichtmal direkt was mit PHP zu tun.

lg,
j.
vg, Jan

Benutzeravatar
Cheffchen
Beiträge: 1809
Registriert: 3. Mär 2009, 13:51
Wohnort: Berlin
Kontaktdaten: Website

9. Aug 2010, 10:58

@ALL

ich springe mal mit auf.
Als erstes kann mir mal jemand an dem simplem Modul mal das EVA-Prinzip erklären?
Wenn ich das richtig verstanden habe, keine Ausgabe zwischen PHP Verarbeitung, OK. macht man jetzt die Ausgabe in eine Variable ($WALL .= "...."; ) und macht zum schluss bloss ein echo $WALL oder wie, weil ich daran jetzt kein vorteil sehen.

Hier mal mit den Änderungen von Koala und funzt soweit :O)

Code: Alles auswählen

<?php 
 // Bilddateien aus Medialist 
 $rxmodule['imagelist'] = explode(',', trim("REX_MEDIALIST[1]")); 

echo '<div id="imagewall"><p><!-- IMAGE WALL -->'; 
echo "\r\n"; 

foreach ($rxmodule['imagelist'] as $rxmodule['file']) 
 { 

$rxmodule['media'] = OOMedia::getMediaByName($rxmodule['file']); 
 if ($rxmodule['media']) 
 { 

$rxmodule['mediatitle'] = $rxmodule['media']->getValue('title'); 
$rxmodule['medialink'] = $rxmodule['media']->getValue('med_linkto'); 

 if (trim($rxmodule['mediatitle']=='') or !$rxmodule['mediatitle']) 
 { 
 $rxmodule['mediatitle'] = $rxmodule['file']; //kein Titel = Dateiname
 $rxmodule['medialink'] = $rxmodule['link']; //???
  } 

 echo '<a href="'.$rxmodule['medialink'].'"><img src="'. 'files/' . $rxmodule['file'].'" class="image"  title="' .$rxmodule['mediatitle']. '"  /></a>'; 
echo "\r\n"; 

      } 
   } 
 echo '</p></div><!-- /IMAGE WALL -->'; 

?>
Cheffchen

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

9. Aug 2010, 11:42

Cheffchen hat geschrieben:Als erstes kann mir mal jemand an dem simplem Modul mal das EVA-Prinzip erklären?
Ich kann dir ein Problem zeigen, bei dem eine Ausgabe im PHP-Code hinderlich ist.

Gegeben sei ein Array mit Zahlen. Du möchtest die Summe dieser Zahlen und die Zahlen selbst in einer Liste ausgeben.

Folgender Code:

Code: Alles auswählen

echo '<ul>';
$sum = 0;
foreach(range(1,10) as $zahl)
{
  echo '<li>'.$zahl.'</li>';
  $sum += $zahl;
}
echo '</ul>';
Wie bekommst du jetzt die Summe an den Anfang der Liste? Das erreichst du nur, in dem du die Ausgabe zwischenspeicherst und vorher noch die Summe an den Anfang stellst:

Code: Alles auswählen

$liste = '<ul>';
$sum = 0;
foreach(range(1,10) as $zahl)
{
  $liste .= '<li>'.$zahl.'</li>';
  $sum += $zahl;
}
$liste .= '</ul>';

echo '<h1>Summe: '.$sum.'</h1>'.$liste;
Ich kann nur empfehlen, alle Module nach diesem Prinzip zu schreiben. Dann hast du später mal keine Probleme, wenn du eine ähnliche Aufgabenstellung hast und das Modul erweitern musst.

Dazu noch ein Tipp: Für Module, die ich für Webdesigner mache, biete ich meistens kleine Templates an:

Code: Alles auswählen

$ausgabe_template = <<<EOTPL
<dl class="person">
  <dt class="vorname">{FIRSTNAME}</dt>
  <dt class="nachname">{LASTNAME}</dt>
  <dt class="tel">{TELEFON}</dt>
</dl>
EOTPL;
Diese Templates stehen am Anfang des Moduls und werden später geparst und mit Werten befüllt.
Wenn der betroffene Webdesigner dann keine Definitionslisten mag oder ein paar Klassen ändern möchte, muss er nicht in den Tiefen des Moduls rumwühlen, sondern kann das Minitemplate einfach verändern. Solange die Ersetzungsnamen bestehen bleiben, kommt der Moduloutput dann auch richtig an.
Das hat übrigens auch für dich Vorteile, wenn du später selbst mal den Ausgabecode ändern willst/musst.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Include
Beiträge: 107
Registriert: 30. Mär 2007, 21:22

9. Aug 2010, 16:20

hallo alle,
ich hatte heute morgen auf die aktuellen posts geantwortet aber unbeabsichtigt nur auf vorschau statt absenden geklickt. ist mir eben zufällig aufgefallen als ich den tab geöffnet hatte. inzwischen ist wieder einiges geschrieben worden was mich sehr freut!
heute werde ich leider nicht dazu kommen das thema für mich noch mal anzugehen. also nicht das ihr denkt ich hab mich verdrückt.
vielen dank für die beiträge!!

Include
Beiträge: 107
Registriert: 30. Mär 2007, 21:22

9. Aug 2010, 16:50

so jetzt hab ich mich doch noch mal schnell hingesetzt.
wenn man jetzt den code von cheffchen verwendet und unten die ausgabe der liste so erweitert, dann klappts auch mit dem entsprechenden link.

Code: Alles auswählen

echo '<a href="'.rex_getUrl($rxmodule['medialink']).'" class=" "><img src="'. 'files/' . $rxmodule['file'].'" class="image"  title="' .$rxmodule['mediatitle']. '"  /></a>'; 
super! das ist genau das was ich im ersten schritt wollte.

Zurück zu „Allgemeines [R4]“