[gelöst] language switch Block themen
Eingetragen von deelite (468)
am 14.01.2013 - 14:52 Uhr in
am 14.01.2013 - 14:52 Uhr in
Hallo,
kann mir jemand einen Tipp geben, wie ich den ULs und LIs, welche der language switch block generiert, eigene CSS-Klassen mitgeben kann?
Vielen Dank schon mal fürs Lesen!
- Anmelden oder Registrieren um Kommentare zu schreiben
Der Block hat doch eine
am 14.01.2013 - 15:21 Uhr
Der Block hat doch eine eindeutige ID. Von da kannst Du Dich im Zweifel weiterhangeln. Hast Du Dir denn den Inhalt schon genauer angesehen z.B. mit Firebug?
Beste Grüße
Werner
Ja. Da gibt es eine Liste. ul
am 14.01.2013 - 15:27 Uhr
Ja. Da gibt es eine Liste. ul und li müsste ich jeweils eine weitere Klasse verpassen können. Und bestenfalls die systemseitigen entfernen.
Wenn es da doch schon Klassen
am 14.01.2013 - 16:08 Uhr
Wenn es da doch schon Klassen gibt und eine ID im Block steht reicht das doch
#blockID .klasse ul {
. . . . . . . .
}
#blockID .klasse ul li {
. . . . . . . . .
}
Damit hast Du doch alles notwendige für Dein CSS.
Beste Grüße
Werner
Grundsätzlich ja. Da ich
am 14.01.2013 - 16:12 Uhr
Grundsätzlich ja.
Da ich jedoch ein CSS-Framework einsetze, benötige ich eigene Klassen für diese Elemente.
Wenn es denn unbedingt
am 14.01.2013 - 16:34 Uhr
Wenn es denn unbedingt unnötig aufwendig sein soll, sieh doch mal, ob es für den Language_Switcher_Block im entsprechenden Modul eine Theming-Funktion oder eine Template-Datei gibt. Dann kannst Du die Theming-Funktion in der template.php in Deinem Theme überschreiben und mit eigenen Code die Ausgabe des Blockes erzeugen. Dann hast Du alles in der Hand. Wenn es eine Template-Datei ist, mußt Du sehen, wie Du das dann umschreiben kannst nachdem Du die Datei in Dein eigenes Theme kopiert hast.
Ich sehe nach wie vor nicht die Notwendigkeit, wenn das mit wenigen CSS-Statements zu regeln ist.
Beste Grüße
Werner
Hm, genau da hängt es dann
am 14.01.2013 - 16:52 Uhr
Hm, genau da hängt es dann bei mir.
Ich denke, ich habe die Funktion gefunden:
<?php
function hs02_locale_block_view($type) {
if (drupal_multilingual()) {
$path = drupal_is_front_page() ? '<front>' : $_GET['q'];
$links = language_negotiation_get_switch_links($type, $path);
if (isset($links->links)) {
drupal_add_css(drupal_get_path('module', 'locale') . '/locale.css');
$class = "language-switcher-{$links->provider}";
$variables = array('links' => $links->links, 'attributes' => array('class' => array($class)));
$block['content'] = theme('links__locale_block', $variables);
$block['subject'] = t('Languages');
return $block;
}
}
}
?>
Allerdings weiß ich aufgrund fehlender PHP-Kenntnisse nicht, wie ich die so aufdröseln kann, dass ich die resultierenden ul- und li-tags direkt ansprechen kann.
"hs02" ist in diesem Fall bereits mein Theme.
P.S. Ja, es muss in diesem Fall wirklich über diesen Weg laufen.
Das ist keine Theme Funktion
am 14.01.2013 - 17:23 Uhr
Das ist keine Theme Funktion und kann deshalb nicht so überschrieben werden. Die Theme-Funktion findest Du hier
<?php
$block['content'] = theme('links__locale_block', $variables);
?>
Das deutet auf eine Theme-Funktion (theme_links__locale_block) oder eine Template-Datei hin. Auf die Schnelle habe ich die aber jetzt nicht gefunden. Aber wenn Du dazu noch nicht in PHP fit bist, laß es und bleibe bei CSS!
Beste Grüße
Werner
OK, da ich diesen Weg gehen
am 14.01.2013 - 17:32 Uhr
OK, da ich diesen Weg gehen MUSS, muss ich da wohl durch.
Ich werde berichten.
Die entsprechende Funktion
am 14.01.2013 - 19:36 Uhr
Die entsprechende Funktion wirst Du nicht finden, da es sich bei einem doppelten Unterstrich lediglich eine "Suggestion" handelt. D.h. man kann/muss eine entsprechende Funktion erst anlegen, die dann aufgerufen wird.
In Deinem Fall müsstest Du folgende Funktion in die template.php einfügen.
Ums möglich einfach zu machen, habe ich Dir die Stellen markiert, wo Du Deine Klassen direkt reinschreiben kannst - ist ja einigermaßen lesbar wo das Mark up reinmuss.
Die Funktion könnte man noch deutlich vereinfachen, aber so geht's schon denke ich...
function hs02_links__locale_block($variables) {
$links = $variables['links'];
$attributes = $variables['attributes'];
$heading = $variables['heading'];
global $language_url;
$output = '';
if (count($links) > 0) {
$output = '';
// Treat the heading first if it is present to prepend it to the
// list of links.
if (!empty($heading)) {
if (is_string($heading)) {
// Prepare the array that will be used when the passed heading
// is a string.
$heading = array(
'text' => $heading,
// Set the default level of the heading.
'level' => 'h2',
);
}
$output .= '<' . $heading['level'];
if (!empty($heading['class'])) {
$output .= drupal_attributes(array('class' => $heading['class']));
}
$output .= '>' . check_plain($heading['text']) . '</' . $heading['level'] . '>';
}
$output .= '<ul' . drupal_attributes($attributes) . '>'; // HIER KÖNNTEST DU eine Klasse für die ul direkt eingeben
$num_links = count($links);
$i = 1;
foreach ($links as $key => $link) {
$class = array($key);
// Add first, last and active classes to the list of links to help out themers.
if ($i == 1) {
$class[] = 'first';
}
if ($i == $num_links) {
$class[] = 'last';
}
if (isset($link['href']) && ($link['href'] == $_GET['q'] || ($link['href'] == '<front>' && drupal_is_front_page()))
&& (empty($link['language']) || $link['language']->language == $language_url->language)) {
$class[] = 'active';
}
$output .= '<li' . drupal_attributes(array('class' => $class)) . '>'; // HIER KÖNNTEST DU eine Klasse für die li direkt eingeben
if (isset($link['href'])) {
// Pass in $link as $options, they share the same keys.
$output .= l($link['title'], $link['href'], $link);
}
elseif (!empty($link['title'])) {
// Some links are actually not links, but we wrap these in <span> for adding title and class attributes.
if (empty($link['html'])) {
$link['title'] = check_plain($link['title']);
}
$span_attributes = '';
if (isset($link['attributes'])) {
$span_attributes = drupal_attributes($link['attributes']);
}
$output .= '<span' . $span_attributes . '>' . $link['title'] . '</span>';
}
$i++;
$output .= "</li>\n";
}
$output .= '</ul>';
}
return $output;
}
Tausend Dank für die Mühe!
am 14.01.2013 - 19:52 Uhr
Tausend Dank für die Mühe! Das funktioniert wunderbar!