zufällige Node eines Inhaltstypen ausgeben

am 08.10.2007 - 19:15 Uhr in
Hi Leute!
Ich würde mir gerne einen Inhaltstyp bauen und von diesem auf der Hauptseite immer eine zufälliges Node ausgeben lassen. Gibt es da eventuell ein passendes Modul?
Danke!
- Anmelden oder Registrieren um Kommentare zu schreiben
ich habe heute etwas
am 08.10.2007 - 19:46 Uhr
ich habe heute etwas ähnliches gemacht, und zwar hab ich einen inhaltstyp "slogan" erstellt und dann so angelegt, dass in einem bestimmten bereich der seite immer ein zufälliger node dieses inhaltstyps aufgerufen wird (mit views). das würde bei dir funktionieren, wenn der von dir gewünschte zufällige node z.b. immer ganz oben auf der startseite angezeigt werden sollte (könntest dann über dem "content" in deiner template.php eine neue region erstellen). naja, es würde auch funktionieren, wenn es links/rechts/unten oder wie auch immer hin soll.
ist das ungefähr, das was dir vorschwebt? wenn ja kann ich gerne noch ausführlicher erklären ;-)
Grüße
Anja
http://www.twitter.com/aschiwi
Drupal-Initiative e.V.
bin ganz ohr...
am 09.10.2007 - 10:56 Uhr
bin ganz ohr...
so, dann will ich mal
am 09.10.2007 - 18:18 Uhr
so, dann will ich mal loslegen *ärmelhochkrempel*
ich weiß nicht, wie weit du fortgeschritten bist, deswegen etwas ausführlicher als vielleicht nötig:
Voraussetzungen
Modul Views muss installiert und aktiviert sein.
Vorgehensweise
- (deinen neuen Inhaltstyp hast du ja schon erstellt)
- navigiere zu admin>views (heißt evtl. nach stand deiner Übersetzungsdatei auch "Ansichten")
- hier kriegst du eine Ansicht aller bestehenden Views. Wir erstellen aber mit einem Klick auf "neu" einen neuen View
- Namen des Views eingeben
- Ich persönlich habe bei "Seite" kein Kreuz bei "Seite bereitstellen" gemacht, sondern:
- nur unter "Block" ein Kreuz bei "Block bereitstellen" und Ansichtstyp auf Listenansicht gesetzt
- nodes pro block = 1
- wenn du brauchst, ein Häkchen bei "mehr Verweis" setzen
- dann gehts rein in Felder, dort gibst du an, was im Block ausgegeben wird. Möglich sind bei dir z.B. node:title und node: textkörper oder andere Felder, die du ggf. mit cck hinzugefügt hast. Praktisch finde ich auch einen Bearbeiten-Link (node: Bearbeiten Verweis).
- "Argumente" bleibt leer
- und nun kommt das Wichtigste: unter "Filter" fügst du einen neuen Filter hinzu - Node: Typ. Den wählst du aus und klickst auf hinzufügen. Danach stellst du ein "ist eines von" und wählst deinen Inhaltstyp aus der Liste.
- "Hervorgehobene Filter" bleibt leer
- "Sortierkriterium" = Zufall
- Speichern
Jetzt haben wir schon mal mit dem View einen Block erstellt. Ich würde nun so vorgehen, dass man eine neue Region im Template erstellt und dann unter "Blöcke" den eben erstellten Block in dieser neuen Region anzeigt. Um die neue Region zu erstellen, hast du hoffentlich ein phptemplate Theme (sonst muss jemand anders weiterhelfen). Wenn das der Fall ist dann öffne folgende Dateien des bei dir aktiven Themes:
- page.tpl.php
- template.php
In der Datei template.php erstellst du die neue Region. Kann sein, dort sind schon Regionen aufgeführt, also z. B. so:
function pushbutton_regions() {
return array(
'left' => t('left sidebar'),
'right' => t('right sidebar'),
'header' => t('header'),
'footer' => t('footer'),
'slogan' => t('Slogan') /* <--- meine neue Region */
);
}
"Slogan" ist die von mir erstellte neue Region. Da ich Regionen sehr gerne habe, habe ich natürlich noch 5 andere, die ich hier der Übersicht halber lieber entfernt habe. Wenn du also den Code oben entdeckst, machst du einfach hinter dem letzten ein Komma und schreibst die nächste Zeile genauso, nur mit dem Namen für deine neue Region (sollte ein Wort ohne Leerzeichen sein). Das Wort in ('Klammern') erscheint in der Liste der möglichen Regionen auf der "Blöcke" Seite, kann also Leerzeichen enthalten.
Jetzt musst du noch in die page.tpl.php Datei und die Stelle suchen, wo dein Content ausgegeben wird, meistens steht da ziemlich viel php Code wie
<?php print $content; ?>
und<?php print $tabs ?>
und so. Ich denke, du willst deinen zufälligen Node über dem restlichen Inhalt ausgeben, also schreib den folgenden Code über den ganzen anderen Kram:(statt "slogan" den Namen für deine eben erstellte Region eingeben):
<?php if ($slogan): ?><?php print $slogan ?><?php endif; ?>
Nun beide Dateien wieder auf den Server laden, zur Seite "Blöcke" navigieren, den Block (heißt so wie der View, den du erstellt hast) in die richtige Region stellen, speichern und gucken. Wenn nichts kommt, hast du vielleicht noch kein Node von deinem Inhaltstyp :-) Sollte der zufällige Node nur auf der Startseite angezeigt werden sollen, kannst du den Block noch konfigurieren und einstellen "nur auf den aufgelisteten Seiten anzeigen" und dort als Seite angeben.
Und wenn's geklappt hat, kannst du ja nochmal schreiben. Ich gebe mit dieser Version nur eine kleine Zeile (zufälligen Spruch) aus, aber ich denke es wird bei dir auch so klappen.
Grüße
Anja
http://www.twitter.com/aschiwi
Drupal-Initiative e.V.
in der tat hätte es nicht
am 09.10.2007 - 19:04 Uhr
in der tat hätte es nicht so ausführlich sein müssen.
trotzdem vielen dank, denn es hilft ja nicht nur mir, sondern vielen anderen auch.
die view zu erstellen ist ja noch ganz easy, aber in meiner template.php werden die regionen schienbar ganz anders definiert (ich benutze ein angepasstes garland-theme).
das verwirrt mich etwas.
an welcher stelle wird denn die pushbutton_regions()-Funktion aufgerufen?
pushbutton ist der name
am 09.10.2007 - 19:12 Uhr
pushbutton ist der name meines themes. laut dieser Diskussion funktioniert für Garland:
function Garland_regions() {
return array(
'content_top' => t('content top'),
'content_bottom' => t('content bottom'),
'left' => t('left sidebar'),
'right' => t('right sidebar'),
'content' => t('content'),
'header' => t('header'),
'footer' => t('footer')
);
}
kann sein, das steht da noch gar nicht, wird ja in der template.php nur überschrieben. ich denke mal, dass im code oben alle standard-regionen von garland angegeben sind und du dann nur wie in meiner erklärung eine neue region hinzufügen musst.
oder meintest du, dass genau das nicht funktioniert?
grüße
anja
http://www.twitter.com/aschiwi
Drupal-Initiative e.V.
vielen dank für deine
am 09.10.2007 - 19:28 Uhr
vielen dank für deine hilfe!
für alle anderen, hier erfährt man alles wichtige: http://drupal.org/node/29139