Neues Modul: vpNewsticker

Dodger77
Beiträge: 3625
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Neues Modul: vpNewsticker

Beitrag von Dodger77 » Mi 9. Feb 2005, 20:02

Bei dem vpNewsticker handelt es sich um einen einfachen JavaScript-Newsticker (bzw. Newsscroller). Es wird dabei wie in einer Artikelliste eine Kategorie nach allen Artikeln durchsucht und dann nach und nach dargestellt.
Die Installation von vpNewsticker ist ganz einfach: lediglich ein neues Modul anlegen und den Code hier in den Outputbereich einfügen:

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : vpNewsticker v1.2
* Author : Ingo van Peeren (ingo@van-peeren.de)
* Copyright : Ingo van Peeren (ingo@van-peeren.de)
* Created : 15-01-2005
* Modified : 07-04-2005
************************************************/

// in welcher Kategorie befinden sich die News
$cat = 41;
$startartikel = false; // möglich sind:
                       // true  (Startartikel wird mit angezeigt)
                       // false (Startartikel wird nicht mit angezeigt)

// welche Sprache und welcher Mandant sollen genutzt werden
$sprache = $lang;    // hier kann auch eine bestimmte Sprache als Zahl angegeben werden
$mandant = $client;  // hier kann auch ein bestimmter Mandant als Zahl angegeben werden

// nach wie vielen Millisekunden soll eine neue Nachricht erscheinen
$delay = 4000;

// Titel, Sortierung usw.
$titel = "headline"; // möglich sind:
                     // headline (entspricht HTMLHEAD1)
                     // title    (entspricht Artikeltitel)
$sortby = "created"; // möglich sind:
                     // titel        (entspricht dem zuvor ausgewählten Titelfeld)
                     // created      (entspricht Erstellungsdatum)
                     // lastmodified (entspricht Datum der letzten Änderung)
$sortorder = "desc"; // möglich sind:
                     // asc     (aufsteigend)
                     // desc    (absteigend)

// Texte
$newstitle = "News";
$noscripttext1 = "klicken Sie bitte";
$noscripttext2 = "hier";
$noscripttext3 = "!";

/* ab hier nichts mehr modifizieren */

// Funktionen
function ticker_feld () {
global $cat, $startartikel, $sprache, $mandant, $titel, $sortby, $sortorder;

  if (($sortby == "created") || ($sortby == "lastmodified")) {
    // Artikellisten Optionen einstellen
    $articleListOptions = array("idcat" => $cat,            // Idcat (Muss angegeben werden)
                                "lang"  => $sprache,        // Sprach id (optional), standard ist die aktive Sprache
                                "client"=> $mandant,        // Mandant id (optional), standard ist der aktive Mandant
                                "start" => $startartikel,   // Startartikel
                                "order" => $sortby,         // Feldname nach dem sortier wird, siehe tabelle 'con_art_lang'
                                "direction" => $sortorder); // Ab- oder Aufsteigende sortierung ('asc', oder 'desc')
    // Artikellisten Objekt erzeugen
    $articleList = new ArticleCollection($articleListOptions);
    $i = 0;
    while ($article = $articleList->nextArticle()) {
        if ($titel == "headline") $tickerfeld[]['titel'] = $article->getContent('htmlhead', 1);
        else  $tickerfeld[$i]['titel'] = $article->get("title");
        $tickerfeld[$i]['idart'] = $article->get("idart");
        $i++;
    }
  }
  else {
    // Artikellisten Optionen einstellen
    $articleListOptions = array("idcat" => $cat,            // Idcat (Muss angegeben werden)
                                "lang"  => $sprache,        // Sprach id (optional), standard ist die aktive Sprache
                                "client"=> $mandant,        // Mandant id (optional), standard ist der aktive Mandant
                                "start" => $startartikel,   // Startartikel
                                "order" => "idartlang",     // Feldname nach dem sortier wird, siehe tabelle 'con_art_lang'
                                "direction" => "asc");      // Ab- oder Aufsteigende sortierung ('asc', oder 'desc')
    // Artikellisten Objekt erzeugen
    $articleList = new ArticleCollection($articleListOptions);
    $i = 0;
    while ($article = $articleList->nextArticle()) {
        if ($titel == "headline") $htitel = $article->getContent('htmlhead', 1);
        else $htitel = $article->get("title");
        $tickerfeld[$i]['titel'] = $htitel;
        $tickerfeld[$i]['idart'] = $article->get("idart");
        $sort_value = trim(strip_tags(html_entity_decode(urldecode($htitel))));
        $sortiert[$i] = strtr($sort_value, "ÄÖÜäöüß", "AOUaous");
        $i++;
    }
    if ($sortorder == "asc") array_multisort($sortiert, SORT_ASC, $tickerfeld);
    else array_multisort($sortiert, SORT_DESC, $tickerfeld);
  }
  return $tickerfeld;
}
// Funktionen Ende


?>
<div style="display: inline;" class="ticker">
<script type="text/javascript">
<!--
document.write('<a href="front_content.php?idcat=<?php echo $cat; ?>"><?php echo $newstitle; ?><\/a>: ')
//-->
</script>
  <noscript>
    <div style="display: inline;" class="ticker">
      <?php echo $newstitle; ?>: <?php echo $noscripttext1; ?>
      <a class="newsticker" href="front_content.php?idcat=<?php echo $cat; ?>"><?php echo $noscripttext2; ?></a>
      <?php echo $noscripttext3; ?>
    </div>
  </noscript>
</div>
<div style="display: inline;" class="ticker">
<script type="text/javascript">
<!--
  var tickercontents=new Array()
  <?php
    $tickerfeld = ticker_feld();
    $i = 0;
    foreach ($tickerfeld as $ticker) {
        $link = "front_content.php?idcat=$cat&idart=" . $ticker['idart'] ;
        $titel = trim(strip_tags($ticker['titel']));
        echo "tickercontents[$i]='<a class=\"newsticker\" href=\"$link\">".urldecode($titel)."<\/a>'\n";
        $i++;
    }
  ?>
  var tickdelay=<?php echo $delay; ?>

  ////Do not edit pass this line////////////////

  var currentmessage=0

  function changetickercontent(){
    if (document.layers){
      document.tickernsmain.document.tickernssub.document.write(tickercontents[currentmessage])
      document.tickernsmain.document.tickernssub.document.close()
    }
    else
      crosstick.innerHTML=tickercontents[currentmessage]

    if (currentmessage==tickercontents.length-1) currentmessage=0
      else currentmessage++
      setTimeout("changetickercontent()",tickdelay)
  }

  function start_ticking(){
    if (document.layers)
      document.tickernsmain.visibility="show"
    else
      crosstick=document.getElementById? document.getElementById("tickerie") : document.all.tickerie
    changetickercontent()
  }

  if (document.all||document.getElementById)
    document.write('<div id="tickerie" style="display: inline;"><\/div>')
  window.onload=start_ticking
//-->
</script>
</div>
Konfigurierbar sind:
  • Kategorie, die ausgelesen werden soll
  • Mandant (falls notwendig)
  • Sprache (falls notwendig)
  • ob Artikeltitel oder die 1. Headline als Linktitel dienen soll
  • Sortierung nach Erstellungsdatum, Datum der letzten änderung oder nach Linktitel
  • Sortierung auf- oder absteigend
  • Texte
Durchgeführt werden muss die Konfiguration im Modulcode (Output) selbst bis "/* ab hier nichts mehr mofizieren */". Die einzelnen Punkte werden jeweils durch Kommentare erläutert.

Das Aussehen des Tickers kann per CSS formatiert werden (die Klasse "ticker" für die Texte, die Klasse "newsticker" für die Links).

Die stets aktuelle Version als TXT- und XML-Download (für die 4.5.x-Versionen) und eine Demonstration findet ihr hier:

www.contenido-tutorials.de/front_content.php?idcat=7


Gruß

Ingo
Zuletzt geändert von Dodger77 am Di 3. Apr 2007, 18:37, insgesamt 4-mal geändert.

Dodger77
Beiträge: 3625
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 » Fr 1. Apr 2005, 14:23

Ab Version 1.1 sind nun auch Client und Sprache konfigurierbar, so dass z.B. clientübergreifend News ausgegeben werden können.

acquire
Beiträge: 194
Registriert: So 13. Jun 2004, 13:24
Kontaktdaten:

Beitrag von acquire » Fr 1. Apr 2005, 22:59

Nett, aber irgendwie scheint der dennoch nicht richtig zu funktionieren: Bei dir wird nur unter News der erste Artikel angezeigt wird. Das ist bei mir beim IE und Firebird so.

Dodger77
Beiträge: 3625
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 » Sa 2. Apr 2005, 09:43

acquire hat geschrieben:Nett, aber irgendwie scheint der dennoch nicht richtig zu funktionieren: Bei dir wird nur unter News der erste Artikel angezeigt wird. Das ist bei mir beim IE und Firebird so.
Danke sehr für die Rückmeldung. Habs gerade nochmal getestet. Bei aktiviertem Javascript klappt das Ganze unter Win XP im:
  • Firefox 1.0+
  • Internet Explorer 6 &
  • Opera 7.51
Der Wechsel dauert in der Demo ein paar Sekunden.

acquire
Beiträge: 194
Registriert: So 13. Jun 2004, 13:24
Kontaktdaten:

Beitrag von acquire » Sa 2. Apr 2005, 10:11

Hm... jetzt klappt es auch bei mir. Lag vielleicht daran, das mein PC etwas ausgelastet war...

Ohne mir den Quellcode genau angesehen zu haben ( bitte um Nachsicht, saß die ganze Nacht an einem Problem): Hast du eine Möglichkeit eingebaut, in der man entscheiden kann, womit angefangen wird? Also zuerst mit dem zuerst erstelltem Artikel usw. der Rubrik und zuerst mit dem neuesten?
Bei dir ist es ja der älteste, aber bei einem Newsticker ist der neuere ja wichtiger. Jedenfalls, wenn an die alten nicht immer rausschmeißt. Da sammelt sich dann sehr viel zusammen.

Dodger77
Beiträge: 3625
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 » Mi 6. Apr 2005, 12:14

acquire hat geschrieben:Hm... jetzt klappt es auch bei mir. Lag vielleicht daran, das mein PC etwas ausgelastet war...

Ohne mir den Quellcode genau angesehen zu haben ( bitte um Nachsicht, saß die ganze Nacht an einem Problem): Hast du eine Möglichkeit eingebaut, in der man entscheiden kann, womit angefangen wird? Also zuerst mit dem zuerst erstelltem Artikel usw. der Rubrik und zuerst mit dem neuesten?
Bei dir ist es ja der älteste, aber bei einem Newsticker ist der neuere ja wichtiger. Jedenfalls, wenn an die alten nicht immer rausschmeißt. Da sammelt sich dann sehr viel zusammen.
Danke für die Anregung! Ich werde (wenn ich die nächsten Tage etwas Zeit finde) das Modul so gestalten, dass eine Sortierung sowohl auf- als auch absteigend und nach verschiedenen Feldern (z.B. Datum, Titel, Headline) erfolgen kann. Bei Titel und Headline muss ich dabei noch eine vernünftige Brücksichtigung von Umlauten implementieren, aber das habe ich wohl schon in einem anderen Modul umgesetzt, sollte also nicht so schwierig sein.

Dodger77
Beiträge: 3625
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 » Do 7. Apr 2005, 15:00

Habe ein wenig Zeit gefunden und nun einiges mehr einstellbar gemacht. Der erste Post ist schon geändert. Außerdem dürfte nun auch die (X)HTML-Validierung keine Fehler mehr rausschmeißen.


Gruß

Ingo

olorenz
Beiträge: 13
Registriert: So 11. Jul 2004, 22:03
Kontaktdaten:

Beitrag von olorenz » Mo 18. Jul 2005, 17:16

Hallo !

erstmal danke fürs modul, gefällt mir auf deiner demoseite sehr gut. Ich habe bei mir dieses Modul auch angelegt, mache aber wohl einen entscheidenden Fehler.
Was ich alles gemacht habe:
in der hauptnavi gibt es eine kat "aktuelles". dort sollen fortlaufend die artikel gelistet werden. nachdem ich das modul angelegt habe, habe ich noch ein entsprechendes template angelegt, um einem block das modul zuzuweisen. dieses template habe ich dann einer kat zugewiesen, ebenfalls dem startartikel. weitere artikel das standardtemplate, aber angezeigt wird nix.

wo ist da bloß mein denkfehler, hab da grad so'n brett vorm kopf.
kann mir das bitte jemand entfernen ? wenn weitere infos benötigt werden, werden diese nachgereicht.

bitte :) heike

Dodger77
Beiträge: 3625
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 » Mo 18. Jul 2005, 21:59

Hallo Heike,
olorenz hat geschrieben:erstmal danke fürs modul, gefällt mir auf deiner demoseite sehr gut. Ich habe bei mir dieses Modul auch angelegt, mache aber wohl einen entscheidenden Fehler.
Was ich alles gemacht habe:
in der hauptnavi gibt es eine kat "aktuelles". dort sollen fortlaufend die artikel gelistet werden. nachdem ich das modul angelegt habe, habe ich noch ein entsprechendes template angelegt, um einem block das modul zuzuweisen. dieses template habe ich dann einer kat zugewiesen, ebenfalls dem startartikel. weitere artikel das standardtemplate, aber angezeigt wird nix.
die Einstellungen im Modul (siehe oben im Code bis "/* ab hier nichts mehr modifizieren */ ") hast du soweit gemacht?


Gruß

Ingo
Zuletzt geändert von Dodger77 am Di 19. Jul 2005, 07:30, insgesamt 1-mal geändert.

olorenz
Beiträge: 13
Registriert: So 11. Jul 2004, 22:03
Kontaktdaten:

Beitrag von olorenz » Di 19. Jul 2005, 21:21

Hi,
danke für deine prompte reaktion.
ja, das modul habe ich konfiguriert wie folgt:

// in welcher Kategorie befinden sich die News
$cat = 46;
$startartikel = false; // möglich sind:
// true (Startartikel wird mit angezeigt)
// false (Startartikel wird nicht mit angezeigt)

// welche Sprache und welcher Mandant sollen genutzt werden
$sprache = $lang; // hier kann auch eine bestimmte Sprache als Zahl angegeben werden
$mandant = $client; // hier kann auch ein bestimmter Mandant als Zahl angegeben werden

// nach wie vielen Millisekunden soll eine neue Nachricht erscheinen
$delay = 4000;

// Titel, Sortierung usw.
$titel = "title"; // möglich sind:
// headline (entspricht HTMLHEAD1)
// title (entspricht Artikeltitel)
$sortby = "lastmodified"; // möglich sind:
// titel (entspricht dem zuvor ausgewählten Titelfeld)
// created (entspricht Erstellungsdatum)
// lastmodified (entspricht Datum der letzten Änderung)
$sortorder = "desc"; // möglich sind:
// asc (aufsteigend)
// desc (absteigend)

// Texte
$newstitle = "";
$noscripttext1 = "klicken Sie bitte";
$noscripttext2 = "hier";
$noscripttext3 = "!";

/* ab hier nichts mehr mofizieren */

Habe auch noch ein bißchen weiter probiert an den artikeln, aber alles was angezeigt wird, ist der titel der nachricht / artikels. gleichzeitig ist aber auch die navi auf der linken seite weg. könnte es was damit zu tun haben, dass ich für die navi das modul vpnavigation benutze ? ich wollte den newsticker eig. genauso einbinden wie auf deiner demoseite, so daß am newstitel, untertitel und text lesen kann.

schon mal danke und grüße, heike

Dodger77
Beiträge: 3625
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 » Di 19. Jul 2005, 22:35

olorenz hat geschrieben:Habe auch noch ein bißchen weiter probiert an den artikeln, aber alles was angezeigt wird, ist der titel der nachricht / artikels. gleichzeitig ist aber auch die navi auf der linken seite weg. könnte es was damit zu tun haben, dass ich für die navi das modul vpnavigation benutze ? ich wollte den newsticker eig. genauso einbinden wie auf deiner demoseite, so daß am newstitel, untertitel und text lesen kann.

schon mal danke und grüße, heike
Hmm, einen Zusammenhang mit vpNavigation sehe ich jetzt nicht direkt. Aber ich kann ja evtl. mal einen Blick auf das Projekt werfen, wenn du magst. Kurz die Zugangsdaten per PM und ich schau mal rein.


Gruß

Ingo

JochBec
Beiträge: 54
Registriert: Sa 18. Dez 2004, 15:11
Kontaktdaten:

Artikelanzahl begrenzen

Beitrag von JochBec » Do 1. Feb 2007, 13:18

Moin ;)

ist sicher nur eine kleine Änderung... aber wie stelle ich ein, daß nur 1o Artikel ausgeworfen werden?

habe es so eingestellt, daß er die Artikel nach Erstellungsdatum sortiert. Wie bringe ich ihm bei, daß er nur die neusten 10 nehmen soll?

Dodger77
Beiträge: 3625
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Artikelanzahl begrenzen

Beitrag von Dodger77 » Do 1. Feb 2007, 13:27

JochBec hat geschrieben:ist sicher nur eine kleine Änderung... aber wie stelle ich ein, daß nur 1o Artikel ausgeworfen werden?
Jeweils im Array $articleListOptions ein:

Code: Alles auswählen

"limit" => 10
ergänzen.

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Fading-Effekt für Newsticker

Beitrag von derSteffen » Di 2. Okt 2007, 19:18

Hallo,

ich habe vor den Newsticker zu verwenden und ihn mit Fading-Effekten zu hinterlegen (basierend auf scriptaculous). Ich bin auch schon ein ganzes Stückchen weiter allerdings stehe ich jetzt vor einem Problem und bitte, dank meiner Unwissenheit, um Hilfe.

Im Output des Moduls findet sich sowas hier (ist hier schon angepasst).

Code: Alles auswählen

<?php
    $tickerfeld = ticker_feld();
    $i = 0;
    foreach ($tickerfeld as $ticker) {
        $link = "front_content.php?idcat=$cat&idart=" . $ticker['idart'] ;
        $titel = trim(strip_tags($ticker['titel']));
        echo "<div id=\"slideshow$i\"  style=\"display: none\"><a class=\"newsticker\" href=\"$link\">".urldecode($titel)."</a></div>\n";
        $i++;
    }
  ?>
So! In diesem Output befindet sich style=\"display: none\". Allerdings möchte ich das style=\"display: none\" nicht im ersten generierten Div vorkommt, im div id="slideshow0" soll nämlich keine Style Angabe erscheinen, jedoch in allen folgenden Divs.

Kann mich da bitte jemand unterstützen - bin kein PHP-Programmierer und das schlimmste ich habe dann noch eine Frage ;-)

Übrigens wird der Fadingeffekt in Firefox, IE und Opera funktioniern Installiert in der Contenido-Version 4.6.15 MR.
Zuletzt geändert von derSteffen am Mi 3. Okt 2007, 13:27, insgesamt 1-mal geändert.

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Fading-Effekt für Newsticker

Beitrag von derSteffen » Mi 3. Okt 2007, 12:14

So mein besagtes Problem habe ich nun lösen können.

Wie folgt:

Code: Alles auswählen

<?php
    $tickerfeld = ticker_feld();
    $i = 0;
    foreach ($tickerfeld as $ticker) {
	if ($i == 0) {
	$link = "front_content.php?idcat=$cat&idart=" . $ticker['idart'] ;
        $titel = trim(strip_tags($ticker['titel']));
        echo "<div id=\"slideshow0\"><a class=\"newsticker\" href=\"$link\">".urldecode($titel)."</a></div>\n";
        $i++;
	} else {
	$link = "front_content.php?idcat=$cat&idart=" . $ticker['idart'] ;
        $titel = trim(strip_tags($ticker['titel']));
        echo "<div id=\"slideshow$i\"  style=\"display: none\"><a class=\"newsticker\" href=\"$link\">".urldecode($titel)."</a></div>\n";
        $i++;
	}
}
?>
So und nun wie angekündigt die nächste Frage!
Ich muss nun herausfinden wieviel Nachrichten sich in der Kategorie befinden und diese Anzahl muss als Zahl ausgegebn werden.

Diese Zahl muss dann nämlich hier automatisch eingetragen werden:

Code: Alles auswählen


<script type="text/javascript">
<!--
  start_slideshow(0, 2, 2000);
    
    function start_slideshow(start_frame, end_frame, delay) {
        setTimeout(switch_slides(start_frame,start_frame,end_frame, delay), delay);
    }
                            
   .................

</script>

start_slideshow(0, 2, 2000) Die erste Zahl ist dann die ID des ersten generierten Divs, also $i=0 und die zweite Zahl muss dann die letzte generierte DIV ID sein, also benötigt man die Anzahl der Nachrichten, sprich Divs.

Danke schon mal!

Gesperrt