[gelöst] Teile eines Conten Types als Block und andere als Page darstellen?
am 17.03.2011 - 09:20 Uhr in
Hallo
Mein Problem: Ich möchte bestimmte Felder von einem Content Type auf einer Seite und andere davon in einem Blog darstellen.
Konkret: Ich will viele Seiten mit Inhalt erstellen, die aber noch eine Box (als Block) mit einem für die Seite spezifischen externen Link haben.
Also dachte ich mir erstelle ich einen neuen Content Typ (seite_mit_link) und adde zu der standart Page ein CCK Linkfeld (field_mein_link).
Dann bastel ich mir den Block und lese mit folgendem PHP code das Feld für den Link aus.
<?php
if(arg(0)=='node'){
$node = node_load(array('nid'=> arg(1)));
if($node->type == 'seite_mit_link'){
echo content_view_field(content_fields("field_mein_link"), $node, FALSE, FALSE);
}
}
?>
Super Funktioniert, bis auf das es mir noch die Beschriftung des Linkfeldes anzeigt, die ich nicht haben will, aber dies zu entfernen ist wahrscheinlich einfach.
nun zum eigentlichen Problem:
Ich will den Link nur in dem Block und nicht auf der Page haben. Da dachte ich mir kein Problem dann setzte ich das Linkfeld für die Page einfach auf hide.
Ergebnis der Link verschwindet nicht nur in der Page, sondern auch im Block :(
(diesen Fehler erstmal zu finden war schon nervig genug...)
Hat wer eine Lösungsidee oder eine Möglichkeit wie ich das einfacher machen kann?
Grüße
derHai
- Anmelden oder Registrieren um Kommentare zu schreiben
Mhhh... wieso bastelst du dir
am 17.03.2011 - 10:24 Uhr
Mhhh... wieso bastelst du dir das denn selbst?
Nehme dafür doch views. Dort kannst du als Argument (Standardargument zur Verfügung stellen->Beitrags ID aus der URL) einstellen und schon kannst du beliebige Felder in deinem View des aktuell angezeigten nodes anzeigen.
Der Inhalt (Link) sollte unabhängig der Sichtbarkeitseinstellungen des Nodes angezeigt werden
Computerboard da wird dir geholfen
Also ich würde das über eine
am 17.03.2011 - 10:32 Uhr
Also ich würde das über eine View lösen. Erstelle eine View (/admin/build/views) mit deinen gewünschten Inhalten. In deinem Fall also nur field_mein_link. Dort kannst du auch angeben, ob es eine Beschriftung geben soll und wie diese heißen soll. Für diese View erstellst du eine neue Anzeige Block. Das ganze speichern. Somit hast du nun einen Block erstellt, der nur den Link (also das CCK-Feld field_mein_link) deines Inhaltstypen seite_mit_link enthält.
Den Block kannst du jetzt an in der Blockkonfiguration genau dort anzeigen lassen, wo du willst.
Ich will den Link nur in dem Block und nicht auf der Page haben. Da dachte ich mir kein Problem dann setzte ich das Linkfeld für die Page einfach auf hide.
Ergebnis der Link verschwindet nicht nur in der Page, sondern auch im Block :(
Das liegt in der Regel einfach nur an fehlerhaften CSS-Anweisungen. Du hast nicht eindeutig genug klar gemacht, dass die Anweisung display:none; nur für die Page gelten soll. Ich denke mal du hast einfach irgendwas in der Art geschrieben:
#field_mein_link {
display:none;
}
Damit schaltest du alle Instanzen von #field_mein_link aus. Auch in den Blöcken! Entweder du findest eine eindeutige Bezeichnung, die nur für die Page gilt oder du schaltest es erstmal komplett aus, um es dann für bestimmte Bereiche wieder einzuschalten.
Hoffe das hilft dir weiter,
Boris
danke!
am 17.03.2011 - 11:10 Uhr
Danke euch, das löst mein Problem.
Zuerst wollte ich auch mit Views arbeiten, nur wusste ich nicht wie ich über die Argumente die aktuelle Seite bekomme...
Arbeite noch nicht so lange mit Drupal, deshalb kam ich auf so komische Ideen ;-)
Brauchte hinterher nur noch den Block mit folgenden einfachen php Schnippsel Sichtbar machen.
<?php
if(arg(0)=='node'){
$node = node_load(array('nid'=> arg(1)));
return $node->type=='seite_mit_link';
}
?>