[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Eigenes Teaser Modul - Hilfe gesucht - 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
nitzer
Beiträge: 229
Registriert: 16. Okt 2006, 22:53
Wohnort: Erkrath
Kontaktdaten: ICQ Website

Eigenes Teaser Modul - Hilfe gesucht

16. Apr 2009, 11:25

Hallo,

ich bastel mir gerade ein Teaser-Modul zusammen, welches soweit auch schonmal funktioniert. Kategorie kann ausgewählt werden und der Text wird auf eine einstellbare Länge gekürzt. Soweit so gut.

An ein Paar stellen komme ich aber trotz Suche nicht ganz weiter. Mir fehlern da immer noch Programmierkenntnisse.

1. Ich kriege die Verlinkung zum jeweiligen Artikel nicht ganz zusammen.
Bisher bekomme ich immer ein komplette Artikelliste als Ausgabe.

An der Stelle hab ich wohl einen Knoten im Kopf.

2. Die Artikel sollen nach CreateDate sortiert werden, also der neueste oben.
Wo/Wie setze ich da an?

3. Die Textformatierungen via Textile werden nicht übernommen. Gibt es dafür eine Lösung?

Hier der Code der Modulausgabe:

Code: Alles auswählen

<div id="accordion">
<?php
if (!function_exists('truncate'))
{
   function truncate($string, $length = 80, $etc = '...', $break_words = false)
   {
      if ($length == 0)
         return '';
      if (strlen($string) > $length)
      {
         $length -= strlen($etc);
         if (!$break_words)
            $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length +1));
         return substr($string, 0, $length).$etc;
      }
      else
         return $string;
   }
}

  $cat = OOCategory::getCategoryById('REX_VALUE[1]');
  $childs = $cat->getArticles( true);
  
  if ( is_array( $childs)) 
  {
    foreach ( $childs as $child) 
    {
      $id = $child->getId();
      if ( $id == 25) continue;
      $article = new article( $id);
	  $name = $child->getName();
	  $date = $child->getCreateDate();
      $content = truncate( strip_tags( $article->getArticle()), 'REX_VALUE[2]'); // Anzahl Zeichen
      $media = $child->getFileMedia();
            
      print( '<h3>'.$name.'</h3>');
      printf( '<div>%s', $content);
      
      	{
      	
### Links ab hier ###
		$articles = $cat->getArticles( true); // Alle Artikel der Kategorie auslesen, die Online sind

		if ( is_array( $articles) && count( $articles) > 0) {
	  	foreach ( $articles as $article) {
    // Den aktuellen Artikel nicht verlinken
    	if ( $article->getId() == REX_ARTICLE_ID) continue;

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

    	print '<a href="'.$article->getUrl($articleId).'">'.$article->getName().'</a><br />';
   
  }
} 

### Links bis hier ####
    	}
      if ( $media != null) {
        print '<p style="clear:both";>';
        printf( '%s', $media->toHTML());
        print '</p>';
      }

      print( '</div>');
    }
  }
?>
</div>
Wäre cool wenn mir da mal jemand einen Schubs geben könnte.

Benutzeravatar
darwin
Beiträge: 1725
Registriert: 2. Jan 2007, 17:10
Wohnort: LA

16. Apr 2009, 12:11

Hi...

zu 1:
Schau Dir das Modul mal durch:
http://www.redaxo.de/165-0-moduldetails ... ule_id=160
da wird in der foreach-Schleife die Article_id des
jeweiligen Artkels herausgeholt und per rex_getUrl($articleId)
verlinkt.

In deinem Scrip versuchts du zwar mit rex_getUrl($articleId)
den Artikel zu verlinken.. jedoch ist $article_id bei dir
nicht vorhanden... so sollte es funktionieren:

Code: Alles auswählen

...
$articleId = $article->getId();

print '<a href="'.$article->getUrl($articleId).'">'.$article->getName().'</a><br />';
...
zu 2:
http://wiki.redaxo.de/index.php?n=R3.So ... lichkeiten

zu 3:
ich nutze TinyMCE...
sry... frage weitergeb :)

grz. Chris

Benutzeravatar
nitzer
Beiträge: 229
Registriert: 16. Okt 2006, 22:53
Wohnort: Erkrath
Kontaktdaten: ICQ Website

hmm

16. Apr 2009, 12:54

hmm - krieg ich nicht ganz auf die kette.

kannst du mir mal die stelle zeigen wo das reinmuß?

Benutzeravatar
darwin
Beiträge: 1725
Registriert: 2. Jan 2007, 17:10
Wohnort: LA

16. Apr 2009, 12:58

Hi ...
... was wo rein muß? das mit der articleId oder
die Sortierfunktion?

grz. Chris

Benutzeravatar
darwin
Beiträge: 1725
Registriert: 2. Jan 2007, 17:10
Wohnort: LA

16. Apr 2009, 13:24

*ungetestet* ...

Code: Alles auswählen

<?php

if (!function_exists('truncate')) {
	function truncate($string, $length = 80, $etc = '...', $break_words = false) {
		
		if ($length == 0) return '';
		
		if (strlen($string) > $length) {
			$length -= strlen($etc);
			
			if (!$break_words) {
				$string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length +1));
				return substr($string, 0, $length).$etc;
			} else {
				return $string;
			}
			
		}
		
	}
}


// Sortierfunktion by Prio
// siehe http://wiki3.redaxo.de?n=R3.Sortiermöglichkeiten
if (!function_exists('sortArticlesByPrio')) {
	function sortArticlesByPrio( $artA, $artB) {
		$prioA = $artA->getPriority();
		$prioB = $artB->getPriority();
		
		if ( $prioA == $prioB) {
			return 0;
		}
		return $prioA > $prioB ? -1 : 1;
	}
}

// Sortierfunktion by CreateDate
// siehe http://wiki3.redaxo.de?n=R3.Sortiermöglichkeiten
if(!function_exists('sortArticlesByCreateDate')) {
	function sortArticlesByCreateDate( $artA, $artB) {
		$createA = $artA->getCreateDate();
		$createB = $artB->getCreateDate();
		
		if ( $createA == $createB) {
			return 0;
		}
		return $createA > $createB ? -1 : 1;
	}
}

// Sortierfunktion by UpdateDate
// siehe http://wiki3.redaxo.de?n=R3.Sortiermöglichkeiten
if(!function_exists('sortArticlesByUpdateDate')) {
	function sortArticlesByUpdateDate( $artA, $artB) {
		$updateA = $artA->getUpdateDate();
		$updateB = $artB->getUpdateDate();
		
		if ( $updateA == $updateB) {
			return 0;
		}
		return $updateA > $updateB ? -1 : 1;
	}
}

// Sortierfunktion by Name
// siehe http://wiki3.redaxo.de?n=R3.Sortiermöglichkeiten
if(!function_exists('sortArticlesByName')) {
	function sortArticlesByName( $artA, $artB) {
		$nameA = $artA->getName();
		$nameB = $artB->getName();
		
		if ( $nameA == $nameB) {
			return 0;
		}
		$names = array($nameA,$nameB);
		sort( $names, SORT_STRING);
		return $names[0] == $nameA ? -1 : 1;
	}
}



$catId = 'REX_VALUE[1]';
$lettersPerArticle = 'REX_VALUE[2]';
$sorting_order = 'CreateDate';
$out = '';
$mediaOut = '';


$cat = OOCategory::getCategoryById($catId);
$articles = $cat->getArticles(true); // Alle Artikel der Kategorie auslesen, die Online sind

if (is_array($articles)) {

	usort($articles, 'sortArticlesBy'.$sorting_order);
	
	foreach ($articles as $article) {
	
		$articleId = $article->getId();
	
		// Startartikel ausblenden
		if ($article->isStartPage()) continue;
		
		// Den aktuellen Artikel nicht verlinken
		if ($articleId == REX_ARTICLE_ID) continue;
		
		// ???
		// if ($articleId == 25) continue;
		// 
		
		$art = new article($articleId);
		$name = $art->getName(); // Artikel Name
		$date = $art->getCreateDate(); // Erstellungs Datum
		$media = $art->getFileMedia(); // Artikel Bild
		
		if ($media != null) {
			$mediaOut .= '<p style="clear:both";>';
			$mediaOut .= printf( '%s', $media->toHTML());
			$mediaOut .= print '</p>';
		}
		
		$content = truncate(strip_tags($article->getArticle()), $lettersPerArticle); // Anzahl Zeichen
		
		// Ausgabe $out fuellen
		$out .= '<div id="accordion">';
		$out .= '<h3>'.$name.'</h3>';
		$out .= printf('<div>%s', $content);
		$out .= '<a href="'.$article->getUrl($articleId).'">'.$article->getName().'</a><br />';
		$out .= '</div>';
		
		// Ausgabe
		print $out;
	}
}
?>
grz. Chris

Benutzeravatar
nitzer
Beiträge: 229
Registriert: 16. Okt 2006, 22:53
Wohnort: Erkrath
Kontaktdaten: ICQ Website

16. Apr 2009, 14:02

ich teste grad - ist aber irgendwo noch ein fehler drin...

Benutzeravatar
nitzer
Beiträge: 229
Registriert: 16. Okt 2006, 22:53
Wohnort: Erkrath
Kontaktdaten: ICQ Website

so geht's

16. Apr 2009, 15:52

so geht's. Bleibt aber noch das problem Textile und die Sortierung funzt noch nicht…

Code: Alles auswählen

<div id="accordion">
<?php


if (!function_exists('truncate'))
{
   function truncate($string, $length = 80, $etc = '...', $break_words = false)
   {
      if ($length == 0)
         return '';
      if (strlen($string) > $length)
      {
         $length -= strlen($etc);
         if (!$break_words)
            $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length +1));
         return substr($string, 0, $length).$etc;
      }
      else
         return $string;
   }
}

// Sortierfunktion by Prio 
// siehe http://wiki3.redaxo.de?n=R3.Sortiermöglichkeiten 
if (!function_exists('sortArticlesByPrio')) { 
   function sortArticlesByPrio( $artA, $artB) { 
      $prioA = $artA->getPriority(); 
      $prioB = $artB->getPriority(); 
       
      if ( $prioA == $prioB) { 
         return 0; 
      } 
      return $prioA > $prioB ? -1 : 1; 
   } 
} 

// Sortierfunktion by CreateDate 
// siehe http://wiki3.redaxo.de?n=R3.Sortiermöglichkeiten 
if(!function_exists('sortArticlesByCreateDate')) { 
   function sortArticlesByCreateDate( $artA, $artB) { 
      $createA = $artA->getCreateDate(); 
      $createB = $artB->getCreateDate(); 
       
      if ( $createA == $createB) { 
         return 0; 
      } 
      return $createA > $createB ? -1 : 1; 
   } 
} 

// Sortierfunktion by UpdateDate 
// siehe http://wiki3.redaxo.de?n=R3.Sortiermöglichkeiten 
if(!function_exists('sortArticlesByUpdateDate')) { 
   function sortArticlesByUpdateDate( $artA, $artB) { 
      $updateA = $artA->getUpdateDate(); 
      $updateB = $artB->getUpdateDate(); 
       
      if ( $updateA == $updateB) { 
         return 0; 
      } 
      return $updateA > $updateB ? -1 : 1; 
   } 
} 

// Sortierfunktion by Name 
// siehe http://wiki3.redaxo.de?n=R3.Sortiermöglichkeiten 
if(!function_exists('sortArticlesByName')) { 
   function sortArticlesByName( $artA, $artB) { 
      $nameA = $artA->getName(); 
      $nameB = $artB->getName(); 
       
      if ( $nameA == $nameB) { 
         return 0; 
      } 
      $names = array($nameA,$nameB); 
      sort( $names, SORT_STRING); 
      return $names[0] == $nameA ? -1 : 1; 
   } 
}


$catId = 'REX_VALUE[1]'; 
$lettersPerArticle = 'REX_VALUE[2]'; 
$sorting_order = 'CreateDate'; 
$mediaOut = ''; 

  $cat = OOCategory::getCategoryById($catId);
  $childs = $cat->getArticles( true);
  
  if ( is_array( $childs)) {
   if('REX_VALUE[5]') {
      usort($childs, 'sortArticlesBy'.$sorting_order);
   }

    foreach ( $childs as $child) {

      $id = $child->getId();

      // Startartikel ausblenden 
      if ( $id == REX_VALUE[1]) continue;
      
	  // Den aktuellen Artikel nicht verlinken 
      if ($id == REX_ARTICLE_ID) continue; 

      $article = new article( $id); 
	  $name = $child->getName(); 		// Artikel Name
	  $date = $child->getCreateDate();  // Erstellungs Datum
      $media = $child->getFileMedia();  // Artikel Bild

      $content = truncate( strip_tags( $article->getArticle()), 'REX_VALUE[2]'); // Anzahl Zeichen

      // Ausgabe $out fuellen 
      print '<h3>'.$name.'</h3>'; 
      printf('<div>%s', $content); 
      if ($media != null) { 
         $mediaOut .= '<p>'; 
         $mediaOut .= printf( '%s', $media->toHTML()); 
         $mediaOut .= print '</p>'; 
      }

      print '<a href="'.$child->getUrl().'">'.$child->getName().'</a><br />'; 
      print '</div>'; 

    }
  }
?>
</div>

Benutzeravatar
nitzer
Beiträge: 229
Registriert: 16. Okt 2006, 22:53
Wohnort: Erkrath
Kontaktdaten: ICQ Website

16. Apr 2009, 16:09

Korrigiere: Sortierung geht :-)

Benutzeravatar
nitzer
Beiträge: 229
Registriert: 16. Okt 2006, 22:53
Wohnort: Erkrath
Kontaktdaten: ICQ Website

16. Apr 2009, 17:57

Achso, nur zur Info. Das DIV id#accordion habe ich außen rumgelegt, weil die Inhalte dort eingefügt werden müssen. Es darf nur einmal vorkommen.

Rauskommen soll dann am Ende folgendes:


http://jqueryui.com/demos/accordion/#default

acanzo
Beiträge: 126
Registriert: 26. Jul 2006, 19:53
Wohnort: Wurzen
Kontaktdaten: ICQ Website

16. Apr 2009, 18:01

hallo,
versuchs mal beim linkbau nur mit $article->getUrl().

grüße
falko

Benutzeravatar
ralf.schlott
Beiträge: 625
Registriert: 5. Dez 2007, 21:22
Wohnort: Hamburch
Kontaktdaten: Website

16. Apr 2009, 23:10

Wenn du nen ordentlichen Teaser hinbekommst, fänd ich klasse. Ich habe ja auch welche veröffentlicht, aber die bestehen nur aus den folgenden Kategorien und Artikeln. Den Text zu kürzen ist bestimmt eine Herausforderung, der du anscheinend schon auf der Spur bist.
Ausserdem muss man ja etwaige Überschriften mit einplanen oder eben automatisch weglassen.

Auf jeden Fall würde ich mich über eine Veröffentlichung freuen.

Gruss
Ralf

Benutzeravatar
nitzer
Beiträge: 229
Registriert: 16. Okt 2006, 22:53
Wohnort: Erkrath
Kontaktdaten: ICQ Website

hey

17. Apr 2009, 09:40

Hallo,

soweit funktioniert das ganze schonmal. Leider werden noch keine Formatierungen mitgenommen, egal ob man die Texte mit Tiny oder Textile in die Artikel schreibt.
Ich schau mir mal an wie das bei den anderen Teaser-Modulen gamacht ist.

Benutzeravatar
ralf.schlott
Beiträge: 625
Registriert: 5. Dez 2007, 21:22
Wohnort: Hamburch
Kontaktdaten: Website

17. Apr 2009, 09:53

Du meinst jetzt, es funktioniert, nur mit dem CSS hast du zu kämpfen? Oder was meinst du mit Formatierung?

acanzo
Beiträge: 126
Registriert: 26. Jul 2006, 19:53
Wohnort: Wurzen
Kontaktdaten: ICQ Website

17. Apr 2009, 09:56

@rsi
das kürzen und filtern des teaser-textes ist in der regel kein problem, nur etwas schreibarbeit.
wies gemacht wird sieht man z.b. hier:

http://www.redaxo.de/165-0-moduldetails ... ule_id=233

@nitzer

kontrolliere doch mal die db, ob die formatierungen auch geschrieben werden

grüße falko

Benutzeravatar
nitzer
Beiträge: 229
Registriert: 16. Okt 2006, 22:53
Wohnort: Erkrath
Kontaktdaten: ICQ Website

17. Apr 2009, 10:29

Interessanterweise geht das bei den Artikel wie gewohnt - alles passt.
Nur in dem Teaser kommt nichts an HTML-Tags an.

Ich habe mal testweise auch das MultiList-Modul ausprobiert, da hab ich den gleichen Effekt. Es werden nur die reinen Text-Inhalte ausgespuckt.

acanzo
Beiträge: 126
Registriert: 26. Jul 2006, 19:53
Wohnort: Wurzen
Kontaktdaten: ICQ Website

17. Apr 2009, 10:37

das ist nicht komisch, solange man strip_tags verwendet ;-)

strip_tags
(PHP 3 >= 3.0.8, PHP 4, PHP 5)

strip_tags -- Entfernt HTML- und PHP-Tags aus einem String

Benutzeravatar
nitzer
Beiträge: 229
Registriert: 16. Okt 2006, 22:53
Wohnort: Erkrath
Kontaktdaten: ICQ Website

17. Apr 2009, 10:41

Datenbank wird richtig gefüllt:

Code: Alles auswählen

<b>Hallo Welt</b>
Problem erkannt. Da muß ich mal nachforschen, wie ich die Textkürzung am besten machen kann. Ohne strip_tags funzt das natürlich.

Benutzeravatar
nitzer
Beiträge: 229
Registriert: 16. Okt 2006, 22:53
Wohnort: Erkrath
Kontaktdaten: ICQ Website

:-)

17. Apr 2009, 12:04

Cooooool. :D

strip_tags rausgenommen und noch ein fehlendes </div> eingefügt.

Jetzt passt alles wie es soll!

Code: Alles auswählen

<div id="accordion">
<?php


if (!function_exists('truncate'))
{
   function truncate($string, $length = 80, $etc = '...', $break_words = false)
   {
      if ($length == 0)
         return '';
      if (strlen($string) > $length)
      {
         $length -= strlen($etc);
         if (!$break_words)
            $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length +1));
         return substr($string, 0, $length).$etc;
      }
      else
         return $string;
   }
}




// Sortierfunktion by Prio 
// siehe http://wiki3.redaxo.de?n=R3.Sortiermöglichkeiten 
if (!function_exists('sortArticlesByPrio')) { 
   function sortArticlesByPrio( $artA, $artB) { 
      $prioA = $artA->getPriority(); 
      $prioB = $artB->getPriority(); 
       
      if ( $prioA == $prioB) { 
         return 0; 
      } 
      return $prioA > $prioB ? -1 : 1; 
   } 
} 

// Sortierfunktion by CreateDate 
// siehe http://wiki3.redaxo.de?n=R3.Sortiermöglichkeiten 
if(!function_exists('sortArticlesByCreateDate')) { 
   function sortArticlesByCreateDate( $artA, $artB) { 
      $createA = $artA->getCreateDate(); 
      $createB = $artB->getCreateDate(); 
       
      if ( $createA == $createB) { 
         return 0; 
      } 
      return $createA > $createB ? -1 : 1; 
   } 
} 

// Sortierfunktion by UpdateDate 
// siehe http://wiki3.redaxo.de?n=R3.Sortiermöglichkeiten 
if(!function_exists('sortArticlesByUpdateDate')) { 
   function sortArticlesByUpdateDate( $artA, $artB) { 
      $updateA = $artA->getUpdateDate(); 
      $updateB = $artB->getUpdateDate(); 
       
      if ( $updateA == $updateB) { 
         return 0; 
      } 
      return $updateA > $updateB ? -1 : 1; 
   } 
} 

// Sortierfunktion by Name 
// siehe http://wiki3.redaxo.de?n=R3.Sortiermöglichkeiten 
if(!function_exists('sortArticlesByName')) { 
   function sortArticlesByName( $artA, $artB) { 
      $nameA = $artA->getName(); 
      $nameB = $artB->getName(); 
       
      if ( $nameA == $nameB) { 
         return 0; 
      } 
      $names = array($nameA,$nameB); 
      sort( $names, SORT_STRING); 
      return $names[0] == $nameA ? -1 : 1; 
   } 
}


$catId = 'REX_VALUE[1]'; 
$lettersPerArticle = 'REX_VALUE[2]'; 
$sorting_order = 'CreateDate'; 
$mediaOut = ''; 

  $cat = OOCategory::getCategoryById($catId);
  $childs = $cat->getArticles( true);
  
  if ( is_array( $childs)) {
   if('REX_VALUE[5]') {
      usort($childs, 'sortArticlesBy'.$sorting_order);
   }

    foreach ( $childs as $child) {

      $id = $child->getId();

      // Startartikel ausblenden 
      if ( $id == REX_VALUE[1]) continue;
      
	  // Den aktuellen Artikel nicht verlinken 
      if ($id == REX_ARTICLE_ID) continue; 

      $article = new article( $id); 
	  $name = $child->getName(); 		// Artikel Name
	  $date = $child->getCreateDate();  // Erstellungs Datum
      $media = $child->getFileMedia();  // Artikel Bild

//    $content = truncate( strip_tags( $article->getArticle()), 'REX_VALUE[2]'); // Anzahl Zeichen
      $content = truncate( $article->getArticle(), 'REX_VALUE[2]'); // Anzahl Zeichen



      // Ausgabe $out fuellen 
      print '<h3>'.$name.'</h3>'; 
      printf ('<div>%s', $content);
      if ($media != null) { 
         $mediaOut .= '<p>'; 
         $mediaOut .= printf( '%s', $media->toHTML()); 
         $mediaOut .= print '</p>'; 
      }

      print '<a href="'.$child->getUrl().'">...mehr</a><br />'; 
      print '</div></div>'; 

    }
  }
?>
</div>

Benutzeravatar
ralf.schlott
Beiträge: 625
Registriert: 5. Dez 2007, 21:22
Wohnort: Hamburch
Kontaktdaten: Website

17. Apr 2009, 12:37

Cool, freut mich.
Lässt du uns dann dran teilhaben und zeigst noch das Eingabefeld und evtl einen kleinen Hinweis, was man noch benötigt?

Wär echt nett, da ich mir genau so etwas vorgenommen hatte, allerdings in anderer Form.

Gruss
Ralf

Benutzeravatar
nitzer
Beiträge: 229
Registriert: 16. Okt 2006, 22:53
Wohnort: Erkrath
Kontaktdaten: ICQ Website

17. Apr 2009, 13:20

Klar!
Es sind aber noch ein Paar Kleinigkeiten dran. Da ja jetzt im Text die HTML-Tags mitgezählt werden stimmt das mit der Kürzung noch nicht so ganz. Da muß ich nochmal dran feilen. Also betrachte ich das noch als eine frühe Beta-Version :-)

Ein Großteil davon ist natürlich aus anderen Modulen zusammengetragen,
das würde ich auch gerne noch Kommentieren, damit die anderen Programmierer noch Ihren Credit bekommen!

Die Eingabe ist auch noch nicht schön:

Code: Alles auswählen

<?php
//Funktionen

function PrintCategorieOptions($cat = null) {
   $selectCats = null;
   if ( is_int( $cat)) {
      $selectCats = array( OOCategory::getCategoryById( $cat));
   } else {
      $selectCats = OOCategory::getRootCategories();
   }

   foreach ( $selectCats as $selectCat) {
      add_cat_option( $selectCat);
   }
}


function add_cat_option( &$cat, $groupName = '') {
   if( empty( $cat)) {
      return;
   }

   print_link($cat->getName(), $cat->getId(), $groupName);

   if ( $cat->getChildren()) {
      $childs = $cat->getChildren();
      
      foreach ( $childs as $child) {
         if ($child->getChildren()) {
            add_cat_option( $child, $groupName."&nbsp;&nbsp;");
         } else {
            add_cat_option( $child, $groupName."&nbsp;&nbsp;");
         }
      }
   }
}

function print_link($catName, $catId, $groupName) {
   global $selectedCat;
   if ( "REX_VALUE[1]" == $catId) {
      // selected
      echo "<option value=\"" . $catId . "\" selected>" . $groupName.$catName . "</option>\n";
   } else {
      echo "<option value=\"" . $catId . "\">" . $groupName.$catName . "</option>\n";
   }
}



?>
<table><tr>
   <td>Kategorie:</td>
   <td><select name="VALUE[1]">
   <?php PrintCategorieOptions(); ?>

   </select></td>
</tr>
<tr>
   <td>Textlänge:</td>
   <td><input type="text" size="50" name="VALUE[2]" value="REX_VALUE[2]" />

   </select></td>
</tr>

<tr>
   <td>Sortieren nach:</td>
   <td><select  name="VALUE[5]">
   <option value="" <?php if("REX_VALUE[5]" == "") echo  'selected'; ?>>id</option>
   <option value="name" <?php if("REX_VALUE[5]" == "name") echo  'selected'; ?>>name</option>
   <option value="createdate" <?php if("REX_VALUE[5]" == "createdate") echo  'selected'; ?>>createdate</option>
   <option value="updatedate" <?php if("REX_VALUE[5]" == "updatedate") echo  'selected'; ?>>updatedate</option>
   <option value="online_from" <?php if("REX_VALUE[5]" == "online_from") echo  'selected'; ?>>online_from</option>
   <option value="online_to" <?php if("REX_VALUE[5]" == "online_to") echo  'selected'; ?>>online_to</option>
   <option value="prior" <?php if("REX_VALUE[5]" == "prior") echo  'selected'; ?>>Artikel-Prior</option>
   </select>
   <select  name="VALUE[6]">
   <option value="0" <?php if("REX_VALUE[6]" == "0") echo  'selected'; ?>>aufsteigend</option>
   <option value="1" <?php if("REX_VALUE[6]" == "1") echo  'selected'; ?>>absteigend</option>
   </select></td>
</tr>
</table>
Im Head des Templates hab ich folgendes eingefügt:

Code: Alles auswählen

	<!-- Accordion News Box -->
	<script type="text/javascript" src="<?php echo $REX['HTDOCS_PATH'] ?>js/jquery-1.3.2.js"></script>
	<script type="text/javascript" src="<?php echo $REX['HTDOCS_PATH'] ?>js/ui.core.js"></script>
	<script type="text/javascript" src="<?php echo $REX['HTDOCS_PATH'] ?>js/ui.accordion.js"></script>
	
<!-- Accordion News Box -->
<script type="text/javascript">
	$(function() {
		$("#accordion").accordion({
			autoHeight: false
		});
	});
	</script>
Die Javascripts und Beschreibung gibt es hier:
http://jqueryui.com/demos/accordion/

So, ich werd' dann mal versuchen den ganzen Code aufzuräumen und ein schönes Paket daraus zu schnüren.

Benutzeravatar
ralf.schlott
Beiträge: 625
Registriert: 5. Dez 2007, 21:22
Wohnort: Hamburch
Kontaktdaten: Website

17. Apr 2009, 14:17

Das finde ich wahnsinnig nett von dir.
Ich werde das mal ausprobieren - bestimmt auch die Beta.
Bei anderen Modulen werkelt man ja auch oft rum, was da am besten passt. Deswegen finde ich eine frühe Version oft nicht schlecht.

Ich hoffe mein Dank reicht dir erstmal :D

Gruss
Ralf

Benutzeravatar
nitzer
Beiträge: 229
Registriert: 16. Okt 2006, 22:53
Wohnort: Erkrath
Kontaktdaten: ICQ Website

17. Apr 2009, 14:47

Super, bin da für Kritik und Tipps immer offen. Man lernt ja noch...

Also, Rückmeldung erwünscht!

Grüße

und schönes Wochenende

Benutzeravatar
ralf.schlott
Beiträge: 625
Registriert: 5. Dez 2007, 21:22
Wohnort: Hamburch
Kontaktdaten: Website

17. Apr 2009, 14:54

Also ich hab es mal eingebaut - ja Scripte ebenfalls - bisher hab ich nur das Ergebnis, dass die ein

Code: Alles auswählen

<div id="accordion"></div>  
eingebaut wird.
Muss ich nochmal schauen... Aber ich gebe gerne mein Feedback!

Achso, hast du ne Seite wo man sich das in Aktion ansehen kann?

RS

Benutzeravatar
nitzer
Beiträge: 229
Registriert: 16. Okt 2006, 22:53
Wohnort: Erkrath
Kontaktdaten: ICQ Website

17. Apr 2009, 15:56

hallo,

das ist alles noch lokal in meiner Testumgebung.
Hast Du mehrere Artikel in der entsprechenden Kategorie angelegt?

Startartikel werden nicht aufgelistet!
CSS fehlt eventuell noch?!

Benutzeravatar
ralf.schlott
Beiträge: 625
Registriert: 5. Dez 2007, 21:22
Wohnort: Hamburch
Kontaktdaten: Website

17. Apr 2009, 16:12

nitzer hat geschrieben:hallo,

das ist alles noch lokal in meiner Testumgebung.
Hast Du mehrere Artikel in der entsprechenden Kategorie angelegt?

Startartikel werden nicht aufgelistet!
CSS fehlt eventuell noch?!
Siehste, falsch probiert. Nicht weit genug gedacht. Natürlich artikel anlegen. Da muss man dann wohl ne Anleitung anlegen :D

Zurück zu „Allgemeines [R4]“