Ciao,
sto utilizando il tema danland che mi permette di gestire al meglio il mio sito, ora con la creazione del sito si pone il problema delle lingue e la visualizzazione delle bandierine (maledette bandierine :-( ) vorrei poter inserire le bandierine il alto a dx ma il tema non me lo permette.
Ora ho due soluzioni possibili:
1 aggiungere direttamente una regione modificando il tema originario e fare in modo di posizionare sopra la regione la mia regione così da gestire le icone come desidero
2 modificare il file tpl.php in modo da inserire direttamente nel file i riferimenti per la visualizzazione delle bandierine e cambio della lingua.
Premetto che nel primo caso sarei in grado di effettuare le modifiche inserendo la nuova regione il secondo caso invece non so proprio da dove si inizi.
Grazie per i vostri aiuti.
Tz
non ho capito: il tema non ha una regione dove vuoi posizionare le bandiere oppure non riesci a posizionarle in una regione?
nel secondo caso esiste un modulo apposta:
http://drupal.org/project/languageicons
ed eventualmente anche http://drupal.org/project/lang_dropdown
entrambi forniscono un blocco
Certified to Rock
Ciao Bohz,
ti allego una immagine che alle volte vale più di mille parole. Non riesco a posizionarle dove vorrei perché il tema non gestisce la possibilità di inserire dei blocchi nel header, per capirci nella gestione blocchi non c'è la regione header. Quindi immagino debba lavorare da codice o chiedervi se mi date una mano perché non ne ho proprio idea o decidere di posizionare le "bandierine" da un'altra parte.
Ti mando qui un'immagine.
Tz
per inserire una regione vedi qui:
http://www.drupalitalia.org/node/7349
per una spiegazione più approfondita:
http://drupal.org/node/171224
Certified to Rock
Grazie!
Per l'inserimento della regione non ci sono problemi solo come vedi dall'immagine non volevo costruire una cosa piramidale non è molto gradevole alla vista, così vorrei capire come inserire proprio il codice e immagino la/le variabile/i associate per far funzionare il tutto. appena ho un attimo cerco di capirci qualcosa. È possibile fare ciò che ho in mente, anche se sono quasi a digiuno di codice?
Grazie
Tz
vedi qui: http://drupal.org/node/313814
per far comparire anche il link/icona del linguaggio corrente credo sia sufficiente omettere l'ultima parte, ovvero
leggi bene i commenti al codice che spiegano tutto
Certified to Rock
eccomi...
non ci sono riuscito...
ho inserito nel modulo locale in locale.module
// this is copy&paste from locale_block in locale.module
$languages = language_list('enabled');
$links = array();
foreach ($languages[1] as $language) {
if ($language->language != $current) {
$links[$language->language] = array(
'href' => $_GET['q'],
'title' => $language->native,
'language' => $language,
'attributes' => array('class' => 'language-link'),
);
}
}
// this adds the real paths, i.e. if we are on a german page,
// the british flag will point to en/english_alias instead of
// en/node_with_german_content
translation_translation_link_alter($links, $_GET['q']);
// This one adds extended languages, i.e. those that are not enabled.
// Disable if you want only flags for enabled languages.
i18n_translation_link_alter($links, $_GET['q']);
// now add or replace text links by flags, according to your i18n settings.
if (function_exists('languageicons_translation_link_alter'))
languageicons_translation_link_alter($links, $_GET['q']);
// Or do your own stuff, e.g. set the flags and no lang names,
// no matter what the i18n icon settings say.
//if ($icon = theme('languageicons_icon', $language, NULL)) {
// $links[$language->language]['title'] = theme('languageicons_place', $link['title'], $icon);
// $links[$language->language]['html'] = TRUE;
//}
// remove the current language again. We cannot do that
// earlier because i18n_translation_link_alter would add it
// again, thinking it was an extendeg language because it
// was not yet contained in $links. If you don't use
// i18n_translation_link_alter, you can also make a case distinction
// in the foreach loop
ma se lo inserisco non si carica più il sito...nel modulo è presente anche // Language switcher block
devo lasciarlo?
in più nelle prove precedenti ho seguito i commenti ma non ne sono venuto fuori.
Hai modo e tempo di spiegarmi i vari passi?
grazie
tz
ma no!
quel codice va nel template o in un blocco
anzi, meglio, in template.php (funzione preprocess_page) e poi inserito nel template con una variabile
Certified to Rock
nada...mi spiace ma non so farlo.
prova ad incollare quel codice (senza le tag php) all'interno di una div in page.tpl.php
Certified to Rock
fatto e caricato ho inserito il codice nel file file page.tpl.php
<div id="search-box">
<?php print $search_box;
$languages = language_list('enabled');
$links = array();
foreach ($languages[1] as $language) {
if ($language->language != $current) {
$links[$language->language] = array(
'href' => $_GET['q'],
'title' => $language->native,
'language' => $language,
'attributes' => array('class' => 'language-link'),
);
}
}
// this adds the real paths, i.e. if we are on a german page,
// the british flag will point to en/english_alias instead of
// en/node_with_german_content
translation_translation_link_alter($links, $_GET['q']);
// This one adds extended languages, i.e. those that are not enabled.
// Disable if you want only flags for enabled languages.
i18n_translation_link_alter($links, $_GET['q']);
// now add or replace text links by flags, according to your i18n settings.
if (function_exists('languageicons_translation_link_alter'))
languageicons_translation_link_alter($links, $_GET['q']);
// Or do your own stuff, e.g. set the flags and no lang names,
// no matter what the i18n icon settings say.
//if ($icon = theme('languageicons_icon', $language, NULL)) {
// $links[$language->language]['title'] = theme('languageicons_place', $link['title'], $icon);
// $links[$language->language]['html'] = TRUE;
//}
// remove the current language again. We cannot do that
// earlier because i18n_translation_link_alter would add it
// again, thinking it was an extendeg language because it
// was not yet contained in $links. If you don't use
// i18n_translation_link_alter, you can also make a case distinction
// in the foreach loop
?> </div><!-- /search-box -->
credo ovviamente che non si veda nulla perché sarà necessario fare ulteriori modifiche
conviene creare una regione.
in danland.info:
(...)
regions[footer] = Footer
regions[language] = Language icons<--- inserisci questo
features[] = logo
(...)
in page.tpl.php:
(...)
</div><!-- /header-middle -->
<?php if ($language): ?> <--- inserisci questo
<div id="language"> <--- inserisci questo
<?php print $language; ?> <--- inserisci questo
</div> <--- inserisci questo
<?php endif; ?> <--- inserisci questo
<div id="search-box">
(...)
poi:
- abilita il modulo PHP input (core-optional)
- crea un blocco ed incollaci il codice suggerito in http://drupal.org/node/313814
- posiziona il blocco nella regione "language"
(ovviamente puoi chiamare la regione come ti pare...)
EDIT: correzioni
Certified to Rock
ciao Bohz,
ho creato nel file info la regione e poi nel file tal ho inserito il codice
<?php if ($languages): ?>
<div id="language">
<?php print $languages; ?>
</div>
<?php endif; ?>
in questo modo sono riuscito a visualizzare nei blocchi la regione creata.
Successivamente ho creato un nuovo blocco e con php filter abilitato ho incollato il codice, facendo attenzione a selezionare il tipo di contenuto corretto, dopo aver salvato il messaggio di errore è il seguente:
The string block:1:body for textgroup blocks is not allowed for translation because of its input format.
Eseguito il cron il messaggio scompare e così pure la possibilità di visualizzare le bandierine nella nuova regione
controllando con firebug non ho trovato la regione.
Ciao buona giornata!
Tz
oddio..non so che dire
non è che hai dimenticato di inserire il blocco nella nuova regione?
Certified to Rock
ciao,
ho fatto delle prove ieri e anche stamane la cosa é strana il blocco dal listato dei blocchi è presente. Ho assegnato il nuovo blocco alla regione così come mi avevi detto e come peraltro ho fatto molte volte, ma non sortisce effetto. Ora l'errore generato è il seguente:
recoverable fatal error: Object of class stdClass could not be converted to string in /var/www/vhosts/mio.com/subdomains/kotorproject/httpdocs/themes/danland/page.tpl.php on line 56.
che corrisponde alla riga in cui si fa riferimento a
language_list
Grazie per la pazienza.
Tz
sto usando lo stesso codice (che posto qua sotto), nello stesso modo (codice nel blocco) e mi funziona.
alcune note:
- nei blocchi bisogna MANTENERE le tag php (quindi TUTTO il code qui sotto)
- hai provato con un altro blocco nella regione $language?
Certified to Rock
State attenti. $language esiste già in page.tpl.php (ed è un oggetto). Cambia il nome del region 'flags'?
Più imparo, più dubito.
ok adesso provo cambiando nome della regione in flags e vediamo cosa ne esce.
Grazie!
Tz
scusate non ho capito...il problema non è la regione ma la variabile, quindi cosa devo fare...
sì ho provato con un altro blocco nella regione e non si vede,
il problema risiede sempre nella riga 56 con il nome della variabile.
ah si si! scusa, $language è proprio il nome sbagliato.
cambialo
grazie John
Certified to Rock
Come ha scritto Carlo, ma cambiando la regione in language_icons:
Più imparo, più dubito.
ok non ho più l'errore ma,
The string block:1:body for textgroup blocks is not allowed for translation because of its input format.
continua a esserci ho fckeditor e anche se seleziono Switch to plain text editor e copio il codice il problema rimane e persiste il problema che qualunque blocco inserito non è visibile.
ho provato anche ad aumentare header perché, magari il blocco non era visibile ma nulla...
quell messaggio di avviso è legato alle impostazioni delle stringhe di traduzione che non hanno abilitato il formato di input PHP come traducibile. se devi tradurre qualcosa in quel blocco (ne dubito) puoi abilitarlo a:
/admin/settings/language/configure/strings
per il resto:
- se il blocco che abbiamo faticosamente creato si vede in altre regioni ma non in quella nuova e se nessun blocco si vede nella regione nuova direi che:
- o il problema è legato al il tema danland (cambia tema per provare)
- o hai fatto qualche errore/svista nella creazione della regione
- o c'è un problema di CSS che non permette la visualizzazione dei blocchi nella nuova regione (controlla il codice sorgente della pagina)
...oppure non so!
Certified to Rock
ciao dopo vari tentativi ora funziona!
Grazie di cuore.
ora come lo imposto in orizzontale... non basta
#block-block-1 {
display: inline;
}
anche ul e li devono essere impostati?
tz
ho modificato inserendo
#block-block-1 li {
display: inline;
}
vedo effettivamente le bandierine in orizzontale in base all'esistenza o meno della traduzione è possibile vedere una o più bandierine
per togliere il "pallino" dalla visualizzazione delle bandierine come posso fare?
ho visto che con firebug il codice fa riferimento a:
li.leaf {
background:url("images/menu-leaf.gif") no-repeat scroll 1px 0.35em transparent;
#block-block-1 li.leaf {
display: none;
}
inserendo un codice di questo tipo non sortisco nessun effetto cosa devo modificare?
Grazie
Tz
list-style-type:none;
Certified to Rock
Ciao ho provato a inserire il codice
#block-block-1 li.leaf {
list-style-type:none;
}
Ma i pallini rimangono ancora non vorrei che altre a fare il cron debba aspettare per vedere le modifiche così come per la visualizzazione della regione...
Grazie
Tz
Forse sei troppo specifico, prova:
#block-block-1 li {
list-style-type: none;
}
Più imparo, più dubito.
ho provato con
#block-block-1 li {
display: inline;
list-style-type: none;
}
poiché se lascio solo
#block-block-1 li {
list-style-type: none;
}
perdo anche la formattazione in linea...
ma non succede nulla ho svuotato la cache e fatto girare cron ma non succede ancora nulla
Oops...
#block-block-1 ul {
list-style-type: none;
}
#block-block-1 li {
display: inline;
}
Non dovrebbe essere necessario svuotare il cache o fare girare cron - basta un F5 o Ctrl + R della pagina nel browser.
Più imparo, più dubito.
nada de nada né con il semplice ctrl r né con il cron...
Ho dato un occhiata al demo di quel tema: http://www.danetsoft.com/demo/ ed è un pò ottuso. Non usa un list-style-type bensi un immagine, quindi dovrebbe essere sufficiente solo:
#block-block-1 li {
background-image: none;
display: inline;
}
N.B. Il codice che hai messo in page.tpl.php devi anche mettere in page-front.tpl.php (se non l'hai già fatto).
Più imparo, più dubito.
facendo così non ho la possibilità di vedere la bandiera. Dovrei forse inserire nuovamente:
#block-block-1 li.leaf {
background-image: none;
display: inline;
}
?
nemmeno in questo caso funziona...
Senza vedere la pagina sarà dura arrivarci. Puoi copiare qui o in pastebin il codice HTML che sta in quella regione? (Il contenuto generato da
<div id="language-icons">
<?php print $language_icons; ?>
</div>
per intenderci)
Più imparo, più dubito.
ti posso tranquillamente scrivere la pagina non è un problema...
http: project . miosito. com (basta togliere gli spazi...) eh eh
come vedrai è il sito di un progetto che prevede la partecipazione anche di altre nazioni. Quello di cui dubito è se la strada intrapresa sia corretta. forse la creazione di un blocco come proposto giustamente da bohz non ha senso. Potrei usare direttamente il modulo base icons. Scusa se non mi sono fatto "vivo" ma oggi non sono mai rimasto a casa...
PS abbiamo un cane anche noi, ma il rapporto cane padrone é molte volte invertito :-)
{non ho mai usato pastebin}
Ciao e grazie per l'aiuto.
Tz
Grazie - sono andato sul sito, e con Firebug ho aggiunto background-image: none al selector che ha tolto il circietto davanti:
#block-block-1 li {
background-image: none;
display: inline;
}
Il nome del div è language-icons non $language-icons
<div id="language-icons">
CI sono altri miglioramenti che si può fare, ma non ho tempo ora.
Puoi usare uno delle funzione theme di languageicons (se questo è il modulo che stai usando) invece del blocco.
Più imparo, più dubito.
vedi se va così
#block-block-1 ul {
float:right;
list-style-type:none;
overflow:hidden;
padding:5px;
#block-block-1 ul li {
background:none transparent;
}
Certified to Rock
ciao,
se seguo le indicazioni di bohz, riesco ad avere la bandiera a dx ma tutti i blocchi automaticamente si spostano al limite dello schermo sulla sinistra.
Se inserisco il codice di jhl.verona il tutto funziona senza problemi, quindi ho inserito float right e la bandiera si è spostata a dx.
Grazie di cuore per avermi aiutato a capire come risolvere questa situazione. Per le migliorie o per dei suggerimenti sono sempre pronto ad ascoltare e migliorare, grazie.
Tz