Appunti di web design, PHP, CSS, Drupal e altro.
<script type="text/javascript" src="/misc/collapse.js"></script>
Capita di dover nascondere o eliminare alcuni Tabs di navigazione che Drupal o qualche suo modulo offrono di default.
Per farlo in modo pulito senza mettere mano al codice possiamo sfruttare phptemplate e inserire in seguente codice nel file template.php del nostro tema (o crearne uno appositamente in caso non sia già disponibile):
<?php
/**
* Override or insert PHPTemplate variables into the templates.
*/
function _phptemplate_variables($hook, $vars) {
if ($hook == 'page') {
Nell'Handbook di Drupal.org viene spiegato come inserire una vista (Modulo Views) in una pagina di template di Drupal (page.tpl.php, node.tpl.php), in un nodo o in un blocco abilitato a ricevere contenuti PHP. Il codice suggerito è il seguente:
<?php
//load the view by name
$view = views_get_view('sample_view');
//output the view
print views_build_view('embed', $view);
?>Abbiamo già visto come inserire un blocco all'interno di un nodo, ma come possiamo fare il contrario, ovvero andare ad inserire il contenuto di un nodo in un blocco o in un secondo nodo?
Se intendiamo utilizzare di frequente questa possibilità e vogliamo una soluzione automatica e facile, esiste un modulo che fa proprio questo. Si chiama Node As Block e questa è la descrizione che ne da il suo autore:
Purtroppo la funzione utilizzata da Drupal per generare la pagina 'Create content' non è una funzione di theming, e pertanto non può essere sovrascritta nel template.tpl.php.
Come poter quindi personalizzare o modificare ciò che viene mostrato in questa pagina?
Una soluzione veloce è la seguente:
Out of the box le funzionalità di localizzazione e traduzione di Drupal si limitano a tradurre solamente i titoli di ciascun campo (field) custom creato con il Content Construction Kit (CCK). Purtroppo nessun modulo di traduzione (Localizer, i18n) offre ancora supporto diretto per la traduzione dei field di cck, quindi dobbiamo arrangiarci.
Affinchè una stringa possa essere tradotta da Drupal, questa deve essere inserita in una funzione PHP di tipo t(), cosa che dovremo fare manualmente.
Supponiamo che la lista dei valori consentiti per il campo cck in questione siano i seguenti:
Se anche voi non siete proprio dei fan della funzionalità dei Messaggi di Log di Drupal (quella che aggiunge un campo "Log Message" a ciascuna node form per intenderci), ecco un breve snippet php da aggiungere al file template.php del vostro tema per far si che la textarea del Messaggio di Log non appaia più:
/**
* Override node form
*/
function phptemplate_node_form($form) {
// Remove 'Log message' text area
$form['log']['#access'] = FALSE;
return drupal_render($form);
}Fatene buon uso ;)
Ogni web browser salva nella propria cache immagini, fogli stile, file flash, javascript e altri elementi delle pagine che visualizza per poterle caricare più velocemente in futuro. Quando si lavora al tema grafico di un sito, i cambiamenti potrebbero non apparire al refresh della pagina. Questo perchè il browser sta mostrando ancora la versione "cachata" della pagina. Per ovviare a questo problema è necessario pulire la cache del browser e ricaricare la pagina.
Avete mai avuto bisogno di reindirizzare i vostri visitatori ad una certa pagina non appena questi hanno completato un certo task (ad esempio dopo che sono stati invitati a registrarsi sul sito)?
Farlo é semplice:
basta tradurre il link nel vostro file PHPTemplate corrispondente al content-type in uso (es: node.tpl.php) da:
http://www.miosito.com/user/register
In Drupal mi capita di frequente di voler mostrare i termini ($terms) di un nodo divisi per singolo vocabolario ($vid). Questo può essere utile qualora si vogliano separare o organizzare i propri termini, non mostrarne alcuni, o comunque evitare che vengano presentati tutti assieme su un'unica riga.