[RISOLTO] Problema nello stile del blocco "Lingua"

22 contenuti / 0 new
Ultimo contenuto
[RISOLTO] Problema nello stile del blocco "Lingua"

Ciao a tutti, ho un sito multilingua dove ho attivato il blocco per vedere le varie lingue con le bandiere.

Si tratta di un blocco che contiene come da default i vari <li> dentro un unico <ul>

Nella visualizzazione però, è evidente che lo stile non coincide con gli altri elenchi puntati del sito ed infatti manca prima del <ul> il codice: <div class="item-list">

Come faccio quindi a metterlo dentro questo blocco della lingua?

Grazie a tutti.

Ho provato a studiarmi il modulo i18n ma non ho trovato nessun <ul>...</ul> da correggere.

mmh non saprei dove mettere le mani...

Perché ti serve proprio quello come selettore? Puoi usare l'ID del blocco.

Beh quel selettore corregge automaticamente i path della lingua in base alla pagina in cui ti trovi... Direi che di meglio non possa esistere... Il problema è che con firebug mi sono accorto che manca un semplice <div class="item-list">

Guardalo qui: http://www.mybenefit.it/mybenefit/ in alto a sx

ok, proviamo a fare cosi: nel modulo dei blocchi inserisco un bel if in php per aggiungere come output quel div, però che condizionde devo mettere nell'if?

Continuo a non capire. Un selettore CSS non può cambiare i path del codice. Anche potesse farlo, puoi comunque creare un altro selettore e fargli fare le stesse cose.

ok posso creare un altro selettore, vero, ci avevo anche provato, però non capisco dove devo mettere quello che manca. Credevo di poter correggere quel <div> mancante in qualche modo... Cioè alla fine son 10 caratteri da aggiungere... solo che non trovo dove :)

Probabilmente in una funzione di theming da inserire in template.php.

Scusa ma credo di non aver capito... Puoi spiegarmi meglio? Mi accontento anche di un link, grazie.

Ci sono varie funzioni di theming interessate alla creazione di menu basati su liste. Vado a memoria, comunque puoi provare a digitare "theme_" nel campo di ricerca della API di Drupal. theme_menu_links, theme_menu_items. Tutte queste funzioni sono modificabili in template.php (cerca "override theme functions"). Possibile che ce ne sia una anche nel modulo che crea i link per la traduzione. Se la trovi, la puoi modificare copiandola in template.php, rinominandola e aggiungendo il codice di cui hai bisogno.

Comunque nel modulo i18n ho trovato:
- theme_i18n_node_select_translation in i18n.pages.inc

/**
* Theme select translation form
* @ingroup themeable
*/
function theme_i18n_node_select_translation($elements) {
  $output = '';
  if (isset($elements['nid'])) {
    $rows = array();
    foreach (element_children($elements['nid']) as $lang) {
      $rows[] = array(
        drupal_render($elements['language'][$lang]),
        drupal_render($elements['node'][$lang]),
      );
    }
    $output .= theme('table', array(), $rows);
    $output .= drupal_render($elements);
  }
  return $output;
}

e in i18ntaxonomy.pages.inc

/**
* Render a taxonomy term page HTML output.
*
* @param $tids
*   An array of term ids.
* @param $result
*   A pager_query() result, such as that performed by taxonomy_select_nodes().
*
* @ingroup themeable
*/
function theme_i18ntaxonomy_term_page($tids, $result) {
  drupal_add_css(drupal_get_path('module', 'taxonomy') .'/taxonomy.css');
  $output = '';
  // Only display the description if we have a single term, to avoid clutter and confusion.
  if (count($tids) == 1) {
    $term = taxonomy_get_term($tids[0]);
    if (i18ntaxonomy_vocabulary($term->vid) == I18N_TAXONOMY_LOCALIZE) {
      $description = i18nstrings("taxonomy:term:$term->tid:description", $term->description);
    }
    else {
      $description = $term->description;
    }
    // Check that a description is set.
    if (!empty($description)) {
      $output .= '<div class="taxonomy-term-description">';
      $output .= filter_xss_admin($description);
      $output .= '</div>';
    }
  }
  $output .= taxonomy_render_nodes($result);
  return $output;
}

Gli altri non mi sembrano rilevanti... credo...

nel modulo locale c'è il codice che stampa le bandierine (D6 - riga 570 + o - ...)

<?php
                    $path
= drupal_is_front_page() ? '<front>' : $_GET['q'];
                   
$languages = language_list('enabled');
                   
$links = array();
                    foreach (
$languages[1] as $language) {
                     
$links[$language->language] = array(
                       
'href'       => $path,
                       
'title'      => $language->native,
                       
'language'   => $language,
                       
'attributes' => array('class' => 'flag-link'),
                      );
                    }
                   
drupal_alter('translation_link', $links, $path);
                    print
theme('links', $links, array());
?>

puoi inserirlo in page.tpl.php dove vuoi in un DIV e assegnargli una classe CSS custom per farci quello che vuoi (mettere le bandierine inline, togliere i "bullet" tanto per fare un paio di esempi...) perchè limitarsi ad usare il "blocco lingua" quando si può ottenere una cosa + custom?

in ogni caso puoi sempre creare un blocco dove vai ad inserire questo codice...

kipper wrote:
nel modulo locale c'è il codice che stampa le bandierine (D6 - riga 570 + o - ...)
in ogni caso puoi sempre creare un blocco dove vai ad inserire questo codice...

Veramente? copio, incollo, sostituisco il blocco e il gioco è fatto?? Non è che mi si pianta il sito quando metto il codice? ;)

Cioè ad ogni pagina trovo in automatico la sua traduzione con questo codice?

si, prova... nel template te lo posso confermare... nel blocco (Filtro PHP abilitato...) non l'ho testato ma non dovrebbe cambiare nulla...

Ok funziona esattamente come il modulo originale, ma almeno lo posso editare nei blocchi e mi piace di più.

Ora sostanzialmente devo lavorare su questo array('class' => 'flag-link') per aggiungere sto <div class="item-list"> prima di <ul> e </div> dopo </ul> ?

Credo mi manchino ancora dei passaggi, comunque grazie, davvero utile!

ma scusa... cosa vuoi ottenere con questo >>> <div class="item-list"> prima di <ul> e </div> dopo </ul> che non l'ho ancora capito???

ahah scusa non ho ancora messo il link del problema:
http://www.mybenefit.it/mybenefit/?q=it
guarda in alto a sx nel blocco LINGUA e capirai da solo...
Grazie

io metterei il blocco in un DIV e farei sparire i "bullet"

<div id="container_bandierine">
<div id="bandierine">
codice php che stampa le bandierine...
</div>
</div>

CSS

#bandierine ul li {
...
}
ul li {
background: none;
}

in page.tpl.php funziona... se nel blocco da problemi usa lo style in questo modo:
<div style="ul li {background: none;}"><div> insomma, giocatela un poco... anche con il DIV contenitore per quanto riguarda la larghezza che sia uguale agli altri blocchi...

tieni presente che io questi codici li inserisco in un file CSS custom altrimenti i "bullet" vengono tolti dappertutto...

Grazie a te mi sono accorto che è diventata una cavolta fotonica!!!

<?php
echo "<div class="item-list">";
$path = drupal_is_front_page() ? '<front>' : $_GET['q'];
$languages = language_list('enabled');
$links = array();
foreach (
$languages[1] as $language) {
 
$links[$language->language] = array(
   
'href'       => $path,
   
'title'      => $language->native,
   
'language'   => $language,
   
'attributes' => array('class' => 'flag-link'),
  );
}
drupal_alter('translation_link', $links, $path);
print
theme('links', $links, array());
echo
"</div>";
?>

Ti offro un caffè elettronico per ringraziarti...

;) grazie ancora!

grazie per il caffè... starò sveglio fino a domani!!!

Scusatemi ma tutto questo perchè non funziona su danland in drupal 7 ? con drupal 6 funziona tranquillamente ma ora con la versione 7 non più, metto il codice è non esce nulla, potete aiutarmi? grazie mille..