[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Replace via Javascript funzt nicht...oder geht auch PHP? - 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/
Benutzeravatar
elricco
Beiträge: 197
Registriert: 22. Jun 2007, 00:48
Wohnort: Bochum
Kontaktdaten: Website

Replace via Javascript funzt nicht...oder geht auch PHP?

7. Okt 2007, 12:27

Halli Hallo,

ich hab mal wieder ein kleines Problem.
Ich versuche ein Bild in einem <div id="model"> in einer Tabelle via JavaScript zu schreiben. Hier mein Ausgabe-Script:
(REX_VALUE[1] = Name des Bilds / REX_VALUE[2] = Link / REX_VALUE[3] = Link Ja/Nein)

Code: Alles auswählen

<?php
if (REX_VALUE[1] != '') {
$modelpic = '<img src="'.$REX['HTDOCS_PATH'].'files/REX_VALUE[1].gif" style="border: opx none; width: 363px; height: 25px;" usemap="#Map"/>';
}
else {
$modelpic = '<img src="'.$REX['HTDOCS_PATH'].'files/one_piece.gif" style="border: opx none; width: 363px; height: 25px;" />';
}

if (REX_VALUE[3] == 1) {
$model = $modelpic.'<map name="Map">
  <area shape="rect" coords="26,8,94,21" href="http://REX_VALUE[2]">
</map>';
}
else {
$model = $modelpic;
}

?>

<script language="Javascript">
function WriteLayer(ID,parentID,sText) {
 if (document.layers) {
   var oLayer;
   if(parentID){
     oLayer = eval('document.' + parentID + '.document.' + ID + '.document');
   }else{
     oLayer = document.layers[ID].document;
   }
   oLayer.open();
   oLayer.write(sText);
   oLayer.close();
 }
 else if (parseInt(navigator.appVersion)>=5&&navigator.appName=="Netscape") {
   document.getElementById(ID).innerHTML = sText;
 }
 else if (document.all) document.all[ID].innerHTML = sText;
}
WriteLayer(model,website,'<? echo $model ?>')
</script>


Aber damit hab ich gar keine Probleme, das PHP-Script macht auch alles so wie es soll. (Hatte es so probiert, das ich es im Template per <?echo $model ?> ausgebe, funzte aber auch net).
Also dachte ich, ich versuche ein Replace per JavaScript, allerdings sagt mir mein Firebug
model is not defined
Was mache ich bitte falsch, das DIV ist doch da und definiert... ???

Danke für eure Antworten schonmal.
Zuletzt geändert von elricco am 8. Okt 2007, 18:19, insgesamt 3-mal geändert.

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

7. Okt 2007, 12:42

Hi,

innerhalb deines Moduls ist nirgends ein Div?

Gruß,
Markus

Benutzeravatar
elricco
Beiträge: 197
Registriert: 22. Jun 2007, 00:48
Wohnort: Bochum
Kontaktdaten: Website

7. Okt 2007, 13:00

Hi Markus

Nein, innerhalb meines Moduls kommt kein DIV vor, aber innerhalb meines Templates ja.

Code: Alles auswählen

<?php
$config = 1;        // 1 wenn auch der Zurück-Button erscheinen soll
$startpage = 1;     // 1 wenn der Startartikel auch eingebunden werden soll


$cat = OOCategory::getCategoryById($this->getValue("category_id"));   // hier die ID der Kategorie
$articles = $cat->getArticles(); // Alle Artikel der Kategorie auslesen, die Online sind

// Sortierfunktion
if(!function_exists("sortArticlesByPrior")){
function sortArticlesByPrior( $artA, $artB) {

   $createA = $artA->_id;
   $createB = $artB->_id;
   if ( $createA == $createB) {
      return 0;
   }

   return $createA < $createB ? -1 : 1;
}
}

usort( $articles, "sortArticlesByPrior");

if ( is_array( $articles) && count($articles) > 0) {
  foreach ( $articles as $key => $article) {

    // Beim aktuellen Artikel den Key ausgeben
                  if ($article->getId() == REX_ARTICLE_ID) $artkey = $key;
/* echo $key."\n";
echo $article."\n"; */

}

$lang = $REX['CUR_CLANG'];
$count = 0;

if($artkey-1 >= $count && $config == 1)
$back = '<a href="'.$REX['HTDOCS_PATH'].'index.php?article_id=' . $articles[$artkey-1]->getId() .'&clang='.$lang.'"><img src="'.$REX['HTDOCS_PATH'].'files/back.gif" style="width: 18px; height: 25px; border: 0px none;" alt="Zurück zu '. $articles[$artkey-1]->getName() . '" /></a> ';
else
$back = '<img src="'.$REX['HTDOCS_PATH'].'files/one_piece.gif" style="width: 18px; height: 25px; border: 0px none;" alt="" />';
if(count($articles) > $artkey+1)
$next = '<a href="'.$REX['HTDOCS_PATH'].'index.php?article_id=' . $articles[$artkey+1]->getId() .'&clang='.$lang.'"><img src="'.$REX['HTDOCS_PATH'].'files/next.gif" style="width: 18px; height: 25px; border: 0px none;" alt="Weiter zu '. $articles[$artkey+1]->getName() . '" /></a>';
else
$next = '<img src="'.$REX['HTDOCS_PATH'].'files/one_piece.gif" style="width: 18px; height: 25px; border: 0px none;" alt="" />';

}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><? print $REX['SERVERNAME'].' | '.$this->getValue("name"); ?></title>
<meta name="keywords" content="<?php print $meta_suchbegriffe; ?>" />
<meta name="description" content="<?php print $meta_beschreibung; ?>" />
<script type="text/javascript" src="<? echo $REX['HTDOCS_PATH'] ?>js/blendimages.js"></script>
<link rel="stylesheet" type="text/css" href="<? echo $REX['HTDOCS_PATH'] ?>files/ms.css" media="screen" />
<link rel="shortcut icon" type="image/x-icon" href="<? echo $REX['HTDOCS_PATH'] ?>files/favicon.ico" />
</head>
<body>
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
 <tr>
  <td align="center" valign="middle">
    <table width="794" height="540" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
	 <td>
	  <div id="website">
           <table width="100%" border="0" cellspacing="0" cellpadding="0">
            <tr>
             <td height="515">
              <?php
		print $this->getArticle();
		?>
             </td>
            </tr>
            <tr>
             <td width="794" height="25" align="left" valing="top" bgcolor="#D1D3D5">
              <table
 style="text-align: left; width: 794px; background-color: rgb(209, 211, 213);"
 border="0" cellpadding="0" cellspacing="0">
  <tbody>
    <tr>
      <td style="vertical-align: top; text-align: left; width: 363px;">
       <div id="model"></div>
      </td>
      <td style="vertical-align: top; text-align: left; width: 37px;"><div
 class="latex"><a href="./index.php?article_id=2&clang=0">Latex</a></div></td>
      <td style="vertical-align: top; text-align: left; width: 19px;"><img
 style="border: 0px solid ; width: 19px; height: 25px;"
 alt="" src="files/one_piece.gif"></td>
      <td style="vertical-align: top; text-align: left; width: 18px;">
      <?
      echo $back;
      ?>
      </td>
      <td style="vertical-align: top; text-align: left; width: 49px;"><a
 href="./index.php?article_id=3&clang=0"><img
 style="border: 0px solid ; width: 49px; height: 25px;"
 alt="Fashion" src="files/fashion_on.gif"></a></td>
      <td style="vertical-align: top; text-align: left; width: 18px;">
      <?
      echo $next;
      ?>
      </td>
      <td style="vertical-align: top; text-align: left; width: 6px;"><img
 style="border: 0px solid ; width: 6px; height: 25px;"
 alt="" src="files/one_piece.gif"></td>
      <td style="vertical-align: top; text-align: left; width: 18px;"><img
 style="border: 0px solid ; width: 18px; height: 25px;"
 alt="" src="files/one_piece.gif"></td>
      <td style="vertical-align: top; text-align: left; width: 50px;"><div
 class="passion"><a href="./index.php?article_id=39&clang=0">Passion</a></div></td>
      <td style="vertical-align: top; text-align: left; width: 18px;"><img
 style="border: 0px solid ; width: 18px; height: 25px;"
 alt="" src="files/one_piece.gif"></td>
      <td style="vertical-align: top; text-align: left; width: 13px;"><img
 style="border: 0px solid ; width: 13px; height: 25px;"
 alt="" src="files/one_piece.gif"></td>
      <td style="vertical-align: top; text-align: left; width: 70px;"><div class="accessoires"><a
 href="./index.php?article_id=50&clang=0">Accessoires</a></div></td>
      <td style="vertical-align: top; text-align: left; width: 18px;"><img
 style="border: 0px solid ; width: 18px; height: 25px;"
 alt="" src="files/one_piece.gif"></td>
      <td style="vertical-align: top; text-align: left; width: 28px;"><img
 style="border: 0px solid ; width: 28px; height: 25px;"
 alt="" src="files/one_piece.gif"></td>
      <td style="vertical-align: top; text-align: left; width: 50px;"><div class="contact"><a
 href="./index.php?article_id=72&clang=0">Contact</a></div></td>
      <td style="vertical-align: top; text-align: left; width: 19px;"><img
 style="border: 0px solid ; width: 19px; height: 25px;"
 alt="" src="files/one_piece.gif"></td>
    </tr>
  </tbody>
</table>
             </td>
           </tr>
          </table>
          </div>
	 </td>
	</tr>
   </table>
  </td>
 </tr>
</table>

</body>
</html>
Der Anfang des Templates sollte dir evtl. bekannt vorkommen ^^
Wie gesagt, statt dem DIV, hatte ich es mit nem PHP-Echo probiert, aber dass das nicht klappt, kann ich noch verstehen. Wegen verschiedene PHP-Scripte, kann die Variable net weitergegeben werden, ist das denn bei dem JavaScript nu genauso?

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

7. Okt 2007, 13:14

Hi,

dann ist dir auf jeden Fall klar, dass dein Javascript auch nur im Frontend funktionieren kann?

Gruß,
Markus

Benutzeravatar
elricco
Beiträge: 197
Registriert: 22. Jun 2007, 00:48
Wohnort: Bochum
Kontaktdaten: Website

7. Okt 2007, 18:04

Hi,

jopp, dass ich im Backend keine Rückmeldung bekomme ist mir bewusst,
aber ich kann ja über "Anzeigen" oder beim durchblättern der Seite feststellen ob das funzt. Tut es aber leider nicht, davor ist auch noch ein JS eingebaut zum einblenden von Bildern und des funktionuckelt einwandfrei.

Benutzeravatar
elricco
Beiträge: 197
Registriert: 22. Jun 2007, 00:48
Wohnort: Bochum
Kontaktdaten: Website

8. Okt 2007, 18:17

So, jetzt mal n anderer Weg...

Kann ich denn nicht eine PHP-Variable aus einem Modul in das Template übergeben?

Ich hab das JS jetzt schon aus dem Modul rausgenommen und einfach nur den PHP-Teil übrig gelassen. Kann ich denn jetzt die Variable $model nicht an das Template weitergeben?

Benutzeravatar
elricco
Beiträge: 197
Registriert: 22. Jun 2007, 00:48
Wohnort: Bochum
Kontaktdaten: Website

8. Okt 2007, 23:26

Und jetzt hab ich es mal mit dem 'str_replace' von diesem Modul probiert:

http://www.redaxo.de/165-Moduldetails.h ... ule_id=117

Meine AUsgabe sieht nun also so aus:

Code: Alles auswählen

<?php
if (REX_VALUE[1] != '') {
$modelpic = '<img src="'.$REX['HTDOCS_PATH'].'files/REX_VALUE[1].gif" style="border: 0px none; width: 363px; height: 25px;" usemap="#Map"/>';
}
else {
$modelpic = '<img src="'.$REX['HTDOCS_PATH'].'files/one_piece.gif" style="border: 0px none; width: 363px; height: 25px;" />';
}

if (REX_VALUE[3] == 1) {
$model = $modelpic.'<map name="Map">
  <area shape="rect" coords="26,8,94,21" href="http://REX_VALUE[2]">
</map>';
}
else {
$model = $modelpic;
}

if($model != '' && !$REX['REDAXO'])
{
 rex_register_extension('OUTPUT_FILTER', 'rex_insert');

     if (!function_exists(rex_insert))
     {
          function rex_insert($params)
            {
            $content = $params['subject'];
            $styles = '';

            $styles = $model;


            return str_replace('<div id="model"></div>', '<div id="model">'.$styles.'</div>', $content);

            }
      }
}

?>
Funktioniert aber auch nicht, Hiiiiiiiiiiilfe... bittedankeschööön!

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

8. Okt 2007, 23:38

Hi,

Code: Alles auswählen

das geht aktuell nur mit einer globalen variablen

<?php
if (REX_VALUE[1] != '') {
$modelpic = '<img src="'.$REX['HTDOCS_PATH'].'files/REX_VALUE[1].gif" style="border: 0px none; width: 363px; height: 25px;" usemap="#Map"/>';
}
else {
$modelpic = '<img src="'.$REX['HTDOCS_PATH'].'files/one_piece.gif" style="border: 0px none; width: 363px; height: 25px;" />';
}

if (REX_VALUE[3] == 1) {
$model = $modelpic.'<map name="Map">
  <area shape="rect" coords="26,8,94,21" href="http://REX_VALUE[2]">
</map>';
}
else {
$model = $modelpic;
}

if($model != '' && !$REX['REDAXO'])
{
 $REX['MYMODULE']['MODEL'] = $model;

 rex_register_extension('OUTPUT_FILTER', 'rex_mdl_insert');

     if (!function_exists('rex_mdl_insert'))
     {
          function rex_mdl_insert($params)
            {
global $REX;
            $content = $params['subject'];


            return str_replace('<div id="model"></div>', '<div id="model">'.$REX['MYMODULE']['MODEL'].'</div>', $content);

            }
      }
}

?>
Gruß,
Markus

Benutzeravatar
elricco
Beiträge: 197
Registriert: 22. Jun 2007, 00:48
Wohnort: Bochum
Kontaktdaten: Website

9. Okt 2007, 00:27

DAAANKE Markus! Das war genau das was ich gebraucht hab. Endlich funzt alles. Ich schau mal, dass ich demnächst mal was für deinen Wunschzettel tue.

Gruß, Timmy

Zurück zu „Allgemeines [R3]“