Content formatieren
am 01.07.2010 - 20:09 Uhr in
Hallo Leute,
ich habe folgendes Problem. Ich habe einen neuen Inhaltstypen erstellt. Auf einer Seite möchte ich nun, dass ich alle Beiträge dieses Contents untereinander darstellen kann. Dies habe ich auch schon mit einem View geschafft. Nun möchte ich aber noch das Format des Contents ändern.
Der Titel soll in der gleichen Schrift wie der Content und fett formatiert sein, danach soll in der nächsten Zeile der Inhalt folgen. Ich habe mir einmal das Modul "contemplate" angeschaut, aber was ich auch ändere, die Überschrift bzw. der Contenttitel ändert sich nicht. Außerdem stört mich auch noch, dass dieser Titel ein Link ist und zu der Beitragsansicht führt. Wie kann ich dieses Problem lösen. Ich bin im Moment kompletter Anfänger.
Vielen Dank im voraus
Mfg
Mini25
- Anmelden oder Registrieren um Kommentare zu schreiben
Hier wird häufig geraten, mit
am 01.07.2010 - 20:46 Uhr
Hier wird häufig geraten, mit Contemplate keine Änderungen vorzunehmen, weil damit die Grenze zwischen Daten und Theming zerbrochen wird.
Mmmh, zu der Sache mit dem Link benötigt man ein paar Infos, wie die View aufgebaut ist. Hast du als Design "Felder" oder "Node" ausgewählt? Wenn du Felder hast, dann nimm einfach beim Feld für den Node-Titel den Haken bei "Text mit dazugehörendem Node verlinken" (oder so ähnlich) raus. Wenn du als Design "Node" hast, dann siehe im kommenden Text-Abschnitt:
Gehe in deinen Theme-Ordner und suche dir die node.tpl.php --> kopiere diese und benenne diese Kopie in node-inhaltstyp.tpl.php um (statt "Inhaltstyp" musst du dort den Namen deines Inhaltstyps einfügen). Öffne die neue Datei, dort dürftest du irgendwo einen Teil finden, der in etwa so aussieht:
<?php if ($page == 0): ?>
<h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2>
<?php endif; ?>
Wenn du dort dann den ganzen Link-Teil raus nimmst, sieht das ganze noch so aus:
<?php if ($page == 0): ?>
<h2><?php print $title ?></h2>
<?php endif; ?>
Wenn du das speicherst, in deinen Theme-Ordner lädst und die Theme-Registry neu aufbaust (indem du z.B. admin/build/modules aufrufst), dann ist die Verlinkung weg.
Und dort kannst du auch gleich den Inhalt formatieren, nämlich in diesem Bereich:
<div class="content clear-block">
<?php print $content ?>
</div>
Dort kannst du einen Div drumrum bauen, ihn mit einer Klasse versehen und diese dann themen, z.B. so:
<div class="content clear-block">
<?php
print '<div class="meine-klasse">';
print $content;
print '</div>'; ?>
</div>
Dann suchst du dir noch die style.css in deinem Theme, fügst dort deine Klasse ein und legst dafür einen font-type fest, dann wird der ganze Body mit der entsprechenden Schriftart ausgegeben.
Thank you!
am 01.07.2010 - 21:58 Uhr
Vielen Dank für die ausführliche Antwort. Ich werde das sofort ausprobieren.
Mfg
Mini25
Funktioniert leider noch nicht!
am 01.07.2010 - 23:18 Uhr
Hallo Leute,
leider funktioniert das bei mir noch nicht. Die Datei node-inhaltstyp.tpl.php wird irgendwie nicht beachtet. Wie kann ich die Theme-Registry aktualisieren?
Mfg
Mini25
Wie oben schon geschrieben,
am 02.07.2010 - 00:48 Uhr
Wie oben schon geschrieben, entweder admin/build/modules oder admin/build/themes aufrufen oder falls du das Modul Admin Menu installiert hast, damit gibt es im Eintrag ganz links (beim "FavIcon im AdminMenu") einen Eintrag "Alle Caches leeren", damit geht das auch.
Wichtig ist auch, dass die node.tpl.php richtig benannt ist, sonst wird das natürlich nichts.
Beispiel:
Wenn du einen neuen Inhaltstyp anlegst, dann musst du dafür einen Namen angeben (z.B. "Wichtige News"), welcher für die Anzeige dient und einen so genannten "maschinenlesbaren Namen", welcher den Inhaltstyp eindeutig beschreibt, z.B. "wichtige_news".
Somit muss die node.tpl.php, mit der man diesen bestimmten Inhaltstyp anpassen will, node-wichtige_news.tpl.php heißen. Und die Datei muss natürlich auch auf den Server in den Ordner des Themes geladen werden (klingt zwar doof, aber manchmal vergisst man die einfachsten Sachen ^^)
Na endlich
am 05.07.2010 - 20:45 Uhr
Ich habe nun sehr lange herumprobieren müssen, bis ich es geschafft habe. Das theme hat darum nicht funktioniert, weil keine node.tpl.php (Standarddatei) im Templateordner war. Aus sowas muss man erst kommen.
Eine Frage hätte ich noch. In meiner node-wichtige_news.tpl.php steht nun folgendes:
<?php
print $title
?>
<?php
print $content
?>
Leider wird mir zwischen den bereichen ein Abstand angezeigt, wie bekomme ich den weg?
Vielen Dank für eure Mithilfe
Mit freundlichen Grüßen
Mini25
Was genau meinst du mit
am 05.07.2010 - 20:57 Uhr
Was genau meinst du mit Abstand? In der Ausgabe? Wie sieht denn die gesamte node.tpl.php aus? (evtl. mal anhängen)
Da stehen nur die oben
am 05.07.2010 - 21:33 Uhr
Da stehen nur die oben geposteten Zeilen drin.
Code:
<p><h3><?php print $title ?></h3><?php print $content ?></p>
Das Ergebnis sieht dann ca. so aus:
<strong>Das sind neue die ersten NEWS</strong>
---> dieser Abstand zwischen diesen zwei Blöcken sollte weg
blablablablablablabla
Da stehen nur die oben
am 05.07.2010 - 21:33 Uhr
Da stehen nur die oben geposteten Zeilen drin.
Code:
<p><h3><?php print $title ?></h3><?php print $content ?></p>
Das Ergebnis sieht dann ca. so aus:
<strong>Das sind neue die ersten NEWS</strong>
---> dieser Abstand zwischen diesen zwei Blöcken sollte weg
blablablablablablabla
Der Abstand kommt bestimmt
am 05.07.2010 - 22:39 Uhr
Der Abstand kommt bestimmt irgendwo aus dem CSS des Themes. Schau dir mal die style.css deines Themes an, wenn da nämlich sowas drin steht:
h1, h2, h3, h4, h5, h6 {
margin-bottom: 0.3em;
}
Dann kannst du dir ausmalen, woher der Abstand kommt ;-) Und dort kannst du ihn auch gleich entfernen. Muss aber nicht nur an dieser einen Formatierung liegen, vielleicht greifen da noch andere Sachen musst du dir mal anschauen, evtl. mit Firebug.
das mit dem duplizieren der
am 20.07.2010 - 12:50 Uhr
das mit dem duplizieren der node.tpl.php is ne super sache und funktioniert auch bei mir. aber wie muss ich die node.tpl.php umbenennen, wenn diese für einen page view bestimmt ist? konnte das noch nicht knacken.
versteht ihr mein problem? wäre für hilfe sehr dankbar
ich sag nur: CSS
am 20.07.2010 - 13:17 Uhr
ich sag nur: CSS
C.A.W. Webdesign
das hat doch in dem moment
am 20.07.2010 - 13:25 Uhr
das hat doch in dem moment noch nichts mit css zu tun. ich möchte die node.tpl.php ja für einen view duplizieren damit ich darin ne neue css klasse reinmachen kann die ich dann SPÄTER mit css anspreche.
Zitat: wie muss ich die
am 20.07.2010 - 14:18 Uhr
wie muss ich die node.tpl.php umbenennen, wenn diese für einen page view bestimmt ist?
Sorry, aber was ganz genau möchtest du jetzt mit der node.tpl.php machen? Und was genau willst du mit page view?
ich habe einen inhaltstypen
am 20.07.2010 - 14:48 Uhr
ich habe einen inhaltstypen dessen eingaben in einer view auf einer seite angezeigt werden sollen. wenn man den entsprechenden menupunkt anklickt kommt man auf diese seite.
ich möchte NUR diesem view jetzt noch eine weitere css klasse geben, damit ich die seite entsprechend meinen wünschen mit css stylen kann.
ich habe bereits öfter die node.tpl.php dupliziert und entsprechend dem namen meines inhaltstypen umbenannt um den eingaben aus meinem inhaltstypen ein anderes aussehen zu verpassen als auf den anderen seiten meiner webpräsenz. dazu habe ich in meiner node-inhaltstyp.php klassen hinzugefügt und mein drupal hat automatisch für die anzeige der einträge von diesem inhaltstypen diese node-inhaltstyp.php benutzt.
das selbe möchte ich jetzt bei folgender situation machen:
ich habe wieder einen inhaltstyp dessen einträge wie oben schon gesagt mit einem view auf einer seite angezeigt werden sollen. die frage war wie ich meine duplizierte node.tpl.php nun umbenennen muss damit drupal automatisch diese datei für den view läd, so kann ich diesem view ebenfalls weitere klassen hinzufügen kann um ihn zu stylen.
du kannst doch jedem view
am 20.07.2010 - 15:30 Uhr
du kannst doch jedem view klassen zuordnen, warum so umständlich und über verschiedene node.tpl
C.A.W. Webdesign
weil ich einen wrapper um
am 20.07.2010 - 15:45 Uhr
weil ich einen wrapper um diverse contentklassen machen muss. es hat seine gründe ist das so wichtig?
es ist in dem fall nicht umständlich sondern ne sache von ner halben minute und viel übersichtlicher. ich mach das bei neuen contentelementen halt so.
weiß einer wie ich die datei nennen muss damits klappt???
Das wirst du über umbenennung
am 20.07.2010 - 16:37 Uhr
Das wirst du über umbenennung der node.tpl.php nicht erreichen, schließlich sind Nodes und Views zwei Paar Schuhe.
Views kannst du allerdings selbst themen, indem du die Theme-Files von Views verwendest.
Oder ganz anders:
Wenn der Node in einer View angezeigt wird, findet sich ein entsprechender Objekt-Eintrag im Node-Objekt, nämlich in $node->view
Du könntest also innerhalb der node-inhaltstyp.tpl.php so eine Abfrage machen:
<?php
if ($node->view->name == 'name-deiner-view')
{
//hier kommt dein Code rein
}
?>