Html/Css ändern, aber wo?
am 22.04.2008 - 20:28 Uhr in
Hallo, ich bin Anfänger und glaube nicht, dass ich das mit den Themes richtig verstanden habe. Mein allgemeines Problem versuche ich mit einem speziellem Problem zu erklären und hoffe das mir jemand hilft:
Ich möchte eine CSS Eigenschaft neu zuweisen. Über das Devel module/die API Website habe ich auch nach langer Suche die Stelle gefunden (in der menu.inc). Dort möchte ich die Klasse "menu" austauschen.
<?php
function theme_menu_tree($tree) {
return '<ul class="menu">'. $tree .'</ul>';
}
?>Das funktioniert dann auch, jedoch möchte ich das nur für mein eigenes Theme verändern, nicht für alle andern, weil ich für die Verwaltungsseiten ein anderes Theme benutze.
Ich habe schon versucht den menu.inc in meinen Theme Ordner zu kopieren und nur dort zu ändern, aber da ist er nicht richtig verlinkt und ich weis nicht, wie ich ihm mein Theme zuweise.
Meine Frage: wo findet man das CSS und das HTML-Markup und wo ändert man es?
Ich entwickle das ganze lokal und mein Theme Ordner ist nichts anderes als der Garland_Theme Ordner den ich kopiert habe und nach und nach anpasse.
Vielen Dank uns Gruß
- Anmelden oder Registrieren um Kommentare zu schreiben

eigentlich ist es wirklich
am 22.04.2008 - 20:51 Uhr
eigentlich ist es wirklich sehr einfach
<?phpfunction garland_menu_tree($tree) {
return '<ul class="menu extra">'. $tree .'</ul>';
}
?>
in die template.php deines Themes schreiben
garland entsprechend anpassen
fertig das ganze
vom Prinzip funktioniert das folgendermaßen:
Drupal schaut nach
1. themename_$themefunction()
2. phptemplate_$themefunction()
3. theme_$themefunction()
--------------
Mein Blog: www.freeblogger.org: May the source be with you
Deutscher IRC-Channel: irc.freenode.net #drupal.de je mehr desto besser
... Jabber-me: dwehner@im.calug.de Warum Jabb
hmm...momentan funktioniert
am 22.04.2008 - 22:11 Uhr
hmm...momentan funktioniert es bei mir irgendwie nicht
function feindlertheme_menu_tree($tree) {return '<ul class="column">'. $tree .'</ul>';
}
in template.php
"feindlertheme" ist mein theme. Wenn ich es in der menu.inc ändere funzt es, was mache ich falsch?
DONT HACK
am 22.04.2008 - 22:42 Uhr
DONT HACK DRUPAL!!!!!!
<?phpfunction feindler_menu_tree($tree) {
return '<ul class="column">'. $tree .'</ul>';
}
?>
Das sollte funktionieren
--------------
Mein Blog: www.freeblogger.org: May the source be with you
Deutscher IRC-Channel: irc.freenode.net #drupal.de je mehr desto besser
... Jabber-me: dwehner@im.calug.de Warum Jabb
Vielen Dank, da es immer
am 23.04.2008 - 12:14 Uhr
Vielen Dank,
da es immer noch nicht funktioniert, und mein hauptproblem eigentlich ein anderes ist, mal anders gefragt:
Wo finde ich den HTML Code und die CSS Klassen?
Nur ein Teil von dem ausgegebenen Code befindet sich in meinem Theme Ordner.
in node.tpl.php, page.tpl.php, block.tpl.php,....mein HTML und in der Style.css mein CSS.
Der zusätzliche Code/Klassen sieht in etwa so aus:
....<span id="thmr_65" class="thmr_call">...und befindet sich nicht in meinen .tpl.php files und in keiner der im Quelltext angegeben Styles die ich im Browser abgerufen habe.
Gruß
Es steht dir frei diese in
am 23.04.2008 - 12:31 Uhr
Es steht dir frei diese in deinem eigenen Stylesheet zu definieren. Damit überschreibst du auch ggf. durch das jeweilige Modul selbst eingefügte Sytles.
--
"Look, Ma, I'm dead!"
Cell, Stephen King
Also ich kann für das
am 23.04.2008 - 12:50 Uhr
Also ich kann für das Themen von Drupal, und diversen Modulen und damit auch meist ihrer eigenen CSS-Definitionen nur den Web-Developer empfehlen, den es als PlugIn z.B. für den Firefox gibt. Damit ist es möglich sich CSS-Angaben der derzeitigen Seite im Detail anzeigen zu lassen. (zB. über rechts klick - > web developer -> css -> css style information)
Damit entgeht dir keine CSS-Angabe, und du musst dich nicht tod suchen. Das Ganze bekommst du hier: Link (läuft auch mit dem FF3)
Vllt hilft es dir ja. :)
Grüße vom,
Genesis
Speziell für diesen Zweck
am 23.04.2008 - 13:10 Uhr
Speziell für diesen Zweck finde ich Firebug wesentlich einfach zu bedienen. Ist ne Sache von 3 schnellen Klicks, ohne mich durch Mneüs zu pfriemeln oder noch eine Tastenkombi zu lernen. WebDeveloper habe ich installiert, benutze ich aber praktisch gar nicht.
--
"Look, Ma, I'm dead!"
Cell, Stephen King
Okay, ich denke das ist
am 23.04.2008 - 13:30 Uhr
Okay, ich denke das ist wieder so ne Glaubenssache. ;) Der eine kommt damit besser klar, der andere damit, wichtig ist aber das beide genau bei so etwas gut helfen können, was nun besser geht muss wahrscheinlich am ende jeder selbst raus finden. :)
template
am 23.04.2008 - 15:26 Uhr
Um noch mal auf das Problem zurückzukommen:
Nehmen wir mal folgende Ordnerstruktur an:
+ drupal+ sites
+ all
+ themes
+ feidler
- template.php
- node.tpl.php
- page.tpl.php
- ...
Dann musst Du in dieser template.php den Code
<?phpfunction feidler_menu_item($mid, $children = '', $leaf = TRUE) {
return '<li class="'. ($leaf ? 'leaf' : ($children ? 'expanded' : 'collapsed')) .'"><span id="thmr_65" class="thmr_call">'. menu_item_link($mid) . $children ."</span></li>\n";
}
?>
einfügen. Alternativ funktioniert auch
<?phpfunction phptemplate_menu_item($mid, $children = '', $leaf = TRUE) {
return '<li class="'. ($leaf ? 'leaf' : ($children ? 'expanded' : 'collapsed')) .'"><span id="thmr_65" class="thmr_call">'. menu_item_link($mid) . $children ."</span></li>\n";
}
?>
Damit änderst Du den generierten Code für jedes (!) Menüelement. Über $mid kannst Du herausbekommen, in welchem Menü das Element angezeigt wird und das evtl. noch über ein if/then/else steuern.
Falls schon eine Funktion namens 'feindler_menu_tree' vorhanden ist, entferne diese vorher.
hth,
Stefan
ich muss hier noch mal
am 26.05.2008 - 10:18 Uhr
ich muss hier noch mal nachhaken
das mit theme_functions überschreiben funktioniert bei mir noch nicht. Nur wenn ich es direkt im Kern ändere, was ich ja nicht, soll klappt es.
das steht in der Datei form.inc:
<?phpfunction theme_form($element) {
// Anonymous div to satisfy XHTML compliance.
$action = $element['#action'] ? 'action="'. check_url($element['#action']) .'" ' : '';
return '<form '. $action .' accept-charset="UTF-8" method="'. $element['#method'] .'" id="'. $element['#id'] .'"'. drupal_attributes($element['#attributes']) .">\n<div>". $element['#children'] ."\n</div></form>\n";
}
?>
das habe ich in die template.php geschrieben also einfach nur dem ganzen eine CSS Klasse hinzugefügt:
<?phpfunction garland_form($element) {
// Anonymous div to satisfy XHTML compliance.
$action = $element['#action'] ? 'action="'. check_url($element['#action']) .'" ' : '';
return '<form '. $action .' class="form" accept-charset="UTF-8" method="'. $element['#method'] .'" id="'. $element['#id'] .'"'. drupal_attributes($element['#attributes']) .">\n<div>". $element['#children'] ."\n</div></form>\n";
}
?>
Warum wird es nicht überschrieben?
packst du die <php> tags mit
am 26.05.2008 - 12:41 Uhr
packst du die
<php>tags mit rein? könnte sein die brauchst du nicht wenn du schon eine bestehende template.php hast, in die du den code einfügst. denn da sind die am anfang und ende des dokuments schon drin...Ne, die habe ich nur wegen
am 26.05.2008 - 12:55 Uhr
Ne, die habe ich nur wegen der Code-Ansicht reingemacht
könnte es sein, dass es
am 26.05.2008 - 14:03 Uhr
könnte es sein, dass es phptemplate_form sein muss, statt garland_form?
form
am 27.05.2008 - 10:46 Uhr
Lass Dir mal
<?php$element['#attributes']
?>
garland_form sollte sonst so funktionieren.
der Thread ist zwar nun ein
am 01.06.2008 - 14:06 Uhr
der Thread ist zwar nun ein paar tage alt, aber mich würde schon interessieren, wie Du das mit der if-Abfrage machen würdest ????
-------------------
gruss
drupalino
... gerade wegen dieser
am 01.06.2008 - 18:14 Uhr
... gerade wegen dieser unübersichtlichen Hackerei würde ich niemals ein eigenes Drupal Theme erstellen wollen, egal welche Vorteile mir Drupal bietet. Am schlimmsten ist Typo3, das in Teilen noch von DokuWiki getoppt wird. Dort wird html und css tatsächlich in php eingebunden. Das ist für mich Absurdistan. Wenn ich bei Drupal 10 Minuten für irgend etwas benötige, liegt der Arbeitsaufwand bei textpattern unter 2 Minuten. Bei Movable Type sind es ein paar Sekunden mehr.