Appunti

Appunti di web design, PHP, CSS, Drupal e altro.

Collassare dei contenuti in Drupal

tags: javascript   Drupal  
drupal tags: content   blocks  
Per mostrare e nascondere dei contenuti in Drupal è possibile sfruttare la libreria di javascripts presenti nel core e ottenere lo stesso effetto che si ha di default nei collapsible fields delle varie forms. E' sufficiente invocare lo script collapse.js all'inizio del corpo del nodo che si sta creando: <script type="text/javascript" src="/misc/collapse.js"></script>

Come nascondere i Tabs inutilizzati

tags: Drupal  
drupal tags: search   tabs  

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') {

Drupal: inserire una vista -views- in una pagina o blocco con PHP

tags: Drupal   php snippets  
drupal tags: views  

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);
?>

Drupal: inserire il contenuto di un nodo in un blocco (o in un altro nodo)

tags: Drupal   php snippets   moduli  
drupal tags: blocks   contents  

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:

Personalizzare la pagina 'Create content' di Drupal

tags: Drupal  
drupal tags: user interaction  

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:

  1. Creare un file di template per la pagina 'Create content' aggiungendo al nostro tema un file page-node-add.tpl.php

Drupal: tradurre i singoli campi di CCK

tags: Drupal  
drupal tags: translations   CCK   Locale  

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:

Drupal: nascondere il messaggio di log nelle form dei nodi

tags: Drupal   php snippets  
drupal tags: user interaction   phptemplate  

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 ;)

Pulire la cache del Browser

tags: cache   browsers  

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.

Come aggiungere una destinazione ad un URL in Drupal

tags: Drupal   php snippets  
drupal tags: navigation   user interaction  

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

Mostrare i termini di un unico vocabolario (in un nodo)

tags: Drupal   php snippets  
drupal tags: categories   content types  

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.

Twitter
Add to Technorati Favorites

Featured:

Archivio

Marzo 2010
DomLunMarMerGioVenSab
123456
78910111213
14151617181920
21222324252627
28293031
PureDivs Conversione Temi Drupal