Fehlermeldung Artikelindex Alphabetisch

Wie verwendet man Module oder Aktion und passt diese an.

Fehlermeldung Artikelindex Alphabetisch

Beitragvon ThomasS » 5. Jul 2008, 14:27

Hallo liebe Forenmitglieder,

ich möchte das schöne und praktische Modul "Modulname: Artikelindex (Alphabetisch)" von Markus Stab in R4, MySQL 5, einbauen.

Es funktioniert auch einwandfrei.
Allerdings erscheint nach dem Abspeichern im Backend:

Code: Alles auswählen
Fatal error: Cannot redeclare recurse() (previously declared in /homepages/37/d159080232/htdocs/redaxo4/redaxo/include/classes/class.rex_article.inc.php(251) : eval()'d code:16) in /homepages/37/d159080232/htdocs/redaxo4/redaxo/include/classes/class.rex_article.inc.php(581) : eval()'d code on line 143


In R3 erscheint dieser Fehler nicht, aber in R4.
Was muss ich denn ändern, damit diese Fehlermeldung nicht mehr erscheint?

Herzlichen Dank
und viele Grüße
Thomas
ThomasS
 
Beiträge: 131
Registriert: 12. Apr 2007, 11:53
Wohnort: Friedberg

Beitragvon Markus.Staab » 5. Jul 2008, 14:34

Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Beitragvon ThomasS » 5. Jul 2008, 15:05

Hi Markus,

es funktioniert, vielen Dank!

Schönen Tag wünscht Dir
Thomas
ThomasS
 
Beiträge: 131
Registriert: 12. Apr 2007, 11:53
Wohnort: Friedberg

Beitragvon ThomasS » 5. Jul 2008, 16:00

Zu früh gefreut!

Zwar war die Fehlermeldung im Backend verschwunden - aber leider war auch das Modul im Frontend verschwunden.

Nachdem ich es den Code jetzt dutzende Mal nach Versuch und Irrtum an verschiedenen Orten eingesetzt habe (wenn ich Programmierer wäre, würde ich das wissen, aber dann wäre ich auf vorgefertigte Module nicht angewiesen :-) möchte ich noch mal nachfragen.

Wo muss ich das einsetzen, und ist der Funktionsname richtig?

Zur besseren Kenntlichkeit habe ich den Code, der um die Funktion herum gebaut werden muss, markiert:

Das soll um die Funktion herum eingebaut werden:
Code: Alles auswählen
// ++++++++++++++++++++++++++++++++++++++++++
if(!function_exists('recurse')) { function recurse() {
// ++++++++++++++++++++++++++++++++++++++++++


Hier kommt die Funktion rein (es scheint 2 zu geben?)


// ++++++++++++++++++++++++++++++++++++++++++
} }
// ++++++++++++++++++++++++++++++++++++++++++



Das ist der Quelltext des A-Z Moduls:



Code: Alles auswählen




<div class="artikel-index">
<?php


// ------------ Funktionen

function recurse( $cat, &$index)
{
   // aktuelle Cat zum Index
   if ( $cat->getId() != REX_CATEGORY_ID) {
      article2Index( $cat, $index);
   }
   
   // alle Artikel zum Index
   $articles = $cat->getArticles();
   if ( is_array( $articles)) {
      foreach( $articles as $article) {
         if ( $article->getId() != REX_ARTICLE_ID) {
            article2Index( $article, $index);
         }
      }
   }
   
   
   
 
   
   // Alle Childs zum Index
   $childs = $cat->getChildren();
   if ( is_array( $childs)) {
      foreach( $childs as $child) {
         recurse( $child, $index);
      }
   }
}



function article2Index( $article, &$index) {
   if ( $article == null)
   {
      return;
   }
   $name = $article->getName();
   $name = strtolower( $name);
   // Ä,Ö,Ü ersetzen, damit im Index nicht zuletzt steht!
   // Das 2. a damit Wörter mit Umlaut immer ganz vorne stehen
   $name = str_replace( array( 'ä', 'ö', 'ü', 'Ä', 'Ö', 'Ü'), array( 'aa', 'ua', 'ua', 'Aa', 'Oa', 'Ua'), $name);
   $name = ucwords( $name);
   $index[$name] = $article;
}




// ------------ Start-Kategorie
$root = oocategory::getCategoryById( REX_CATEGORY_ID);
$index = array();

recurse( $root, $index);



// ------------ Sortierung
ksort( $index);


// ------------ Ausgabe
$firstChar = '';
$first = true;
foreach ( $index as $name => $article) {
   $nextChar = $firstChar != $name{0};
   if ( $nextChar) {
      if ( $first) {
         $first = false;
      } else {
        echo '
              </fieldset>'. "\n";
      }
      $firstChar = $name{0};
      echo '<fieldset>
               <legend>&nbsp;'. $firstChar .'&nbsp;</legend>'. "\n";
   }



   echo '   <a href="'. $article->getUrl() .'" style="margin-left: 5px">'.htmlentities( $article->getName()).'</a><br/>'. "\n";
}
echo '
   </fieldset>';




?>

</div>
ThomasS
 
Beiträge: 131
Registriert: 12. Apr 2007, 11:53
Wohnort: Friedberg

Beitragvon Markus.Staab » 6. Jul 2008, 15:11

Hi,

das ganze musst du natürlich dann auch für jede Funktion machen innerhalb deines Moduls..

Gruß,
Markus
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Modul: Artikelliste (Alphabetisch) für REX v3.0

Beitragvon gseilheimer » 30. Sep 2008, 10:24

Markus.Staab hat geschrieben:Hi,

das ganze musst du natürlich dann auch für jede Funktion machen innerhalb deines Moduls..

Gruß,
Markus


Hallo Markus,

leider war es mir nur bedingt möglich, dem kompletten Verlauf zu folgen?!

Was hat das nachfolgende noch mit dem obigen zu tun & wie kann ich Ihr tolles Modul für REX 4.x tauglich machen...?

<?php

function sortArtName( $articleA, $articleB) {
$nameA = $articleA->getName();
$nameB = $articleB->getName();

if ( $nameA == $nameB) {
return 0;
}

$arr = array( $nameA, $nameB);
sort( $arr, SORT_STRING);

return $arr[0] == $nameA ? -1 : 1;
}


$cat = OOCategory::getCategoryById(REX_CATEGORY_ID);
$articles = $cat->getArticles( true);

usort( $articles, "sortArtName"); // sortieren

if (is_array($articles) && count( $articles) > 0) {
echo '<ul class="article-list">';
foreach ($articles as $article) {
// aktuellen Artikel nicht anzeigen
if( $article->getId() == REX_ARTICLE_ID) continue;

// keine Startartikel anzeigen
if ($article->isStartPage()) continue;

echo '<li><a href="'.$article->getUrl().'">'.$article->getName().'</a></li>';
}
echo '</ul>';
}

?>


Vielen Dank im Voraus für Ihre Hilfe.

Beste Grüße,
Gilbert
Nicht in Problemen, sondern immer in Lösungen denken...
Die nachfolgenden Punkte kosten einfach zu viel:
- Nichts einreden.
- Nichts ausreden.
- Nicht ungefragte Ratschläge geben.
- Nicht ungewollte Beurteilungen geben.
Benutzeravatar
gseilheimer
 
Beiträge: 70
Registriert: 3. Jan 2008, 00:31


Zurück zu Module/Aktionen [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast