Tu sei qui

Drupal

GianlucaBove.it

...just another technical blog...

Drupal - automatizzare cron

E' possibile automatizzare l'esecuzione del cron di Drupal dall'esterno, aggiungendo questa riga al crontab:

0,10,20,30,40,50 * * * *     wget http://www.miosito.it?cron_key=12345678 > /dev/null 2>&1

Dove "12345678" sarà la cron_key che si può leggere, ad esempio, nel Resoconto di stato.
E' necessario che sia installato il wget nell'host su cui gira il cron.
In questo esempio il cron verrà eseguito ogni 10 minuti.

Tags: 

Import / Export di database per Drupal basato su Oracle.

Esportare / Importare un database di Drupal in formato Oracle è possibile.
In questo articolo spieghiamo come.

In questa guida si presume che l'ambiente sia Linux con oracle enterprise 11g.

Innanzitutto va utilizzato il comando expdp per esportare il dump dello schema.

expdp dumpfile=drupal.dmp logfile=drupal.log schemas=drupal

Alla domanda di username si può specificare: / as sysdba
Verrà creato un file con estensione .dmp nella cartella logs di oracle (nel mio caso: /u01/app/oracle/product/11.2.0/orcl/rdbms/log/)

Ora abbiamo preparato il nostro dump e siamo pronti per creare il nuovo schema in cui importare il db.

Innanzitutto va creato il tablespace, colleghiamoci con / as sysdba per effettuare questa operazione:

CREATE tablespace drupal_data logging datafile 'drupal_data.dbf' SIZE 200m autoextend ON NEXT 50m maxsize 3072m extent management LOCAL;

Successivamente creiamo l'utenza e forniamo le grant all'utente:
GRANT CONNECT,resource TO drupal IDENTIFIED BY drupal;
ALTER USER drupal DEFAULT tablespace drupal_data;
GRANT EXECUTE ON dbms_crypto TO drupal;
 
GRANT SELECT ON v_$sql_plan TO drupal;
GRANT SELECT ON v_$sqlarea TO drupal;
 
GRANT CREATE synonym TO drupal;
 
GRANT CONNECT TO drupal;
GRANT resource TO drupal;
GRANT CREATE synonym TO drupal;
GRANT CREATE any TRIGGER TO drupal;
GRANT CREATE indextype TO drupal;
GRANT CREATE PROCEDURE TO drupal;
GRANT CREATE public synonym TO drupal;
GRANT CREATE TRIGGER TO drupal;
GRANT CREATE TYPE TO drupal;
GRANT unlimited tablespace TO drupal;
GRANT CREATE SEQUENCE TO drupal;
GRANT CREATE TABLE TO drupal;
 
GRANT SELECT ON dual TO public WITH GRANT OPTION;
GRANT EXECUTE ON dbms_random TO drupal;
GRANT EXECUTE ON dbms_output TO drupal;

Colleghiamoci ora con l'utenza appena creata (nell'esempio drupal):

Ed eseguiamo i seguenti comandi:

CREATE synonym all_constraints FOR sys.all_constraints;
CREATE synonym all_cons_columns FOR sys.all_cons_columns;
CREATE synonym all_sequences FOR sys.all_sequences;
CREATE synonym all_source FOR sys.all_source;
CREATE synonym all_users FOR sys.all_users;

Bene, siamo pronti per fare l'import, ma prima dobbiamo posizionare il file .dmp in un posto accessibile, per comodità /tmp:

- Copiare il file drupal.dmp dentro /tmp del server oracle.

- Eseguire come SYSDBA:

 
CREATE directory dir_tmp AS '/tmp';
GRANT READ,WRITE ON directory dir_tmp TO public;

Ora possiamo eseguire l'import con questa sintassi:
impdp dumpfile=drupal.dmp logfile=drupal.log directory=DIR_TMP TRANSFORM=oid:n

Colleghiamoci ora con l'utenza appena creata (nell'esempio drupal) ed eseguiamo l'ultimo step:

EXEC create_linguistic_indexes('MYINDEXTABLESPACENAME')

Ora non resta che adeguare il settings.php per far puntare il nostro drupal alla nostra istanza e siamo pronti.

Se riscontrate problemi o avete domande commentate qui sotto, cercherò di rispondere.

Drupal - introduzione agli hooks

Drupal non è solo un CMS (Content Management System) già utilizzabile out-of-the-box senza scrivere codice, ma si può tranquillamente considerare un vero e proprio framework, in quanto mette a disposizione dello sviluppatore la sua libreria di funzioni orientate al Content Management consentendo lo sviluppo di vere e proprie Web Applications.

E’ un framework completamente modulare le cui funzionalità sono organizzate, appunto, in moduli che possono essere abilitati e disabilitati dalla sua interfaccia di amministrazione.

I moduli estendono le funzionalità di Drupal secondo il design pattern “inversion of control” in cui le funzionalità modulari vengono invocate dal framework.

Drupal chiama queste invocazioni di funzionalità “hooks” (ganci).

Gli “hooks” possono essere visti come “eventi” che vengono scatenati in situazioni particolari a cui i nostri moduli possono agganciarsi per eseguire pezzi di codice personalizzato.

Tipicamente, quindi, i nostri moduli saranno composti da una serie di hooks.

Per far agganciare il nostro modulo a un hook basta definire una funzione con la seguente naming convention:
_

Ad esempio, se nel nostro modulo chiamato “fareinformatica” volessimo agganciarci alla login dell’utente per reindirizzarlo in un’altra pagina, andremo ad implementare l’hook “user_login” in questo modo:

/**
* Implements hook_user_login
*/
function fareinformatica_user_login(&$edit, $account) {
// reindirizza l'utente verso una pagina chiamata "pagina_di_benvenuto"
  drupal_goto("pagina_di_benvenuto"); 
}

Tags: 

DRUSH: tutorial installazione su MAC OS X

Drush è un'interfaccia shell che consente di effettuare da riga comando delle operazioni amministrative sui nostri portali Drupal come svuotare la cache, installare moduli, effettuare backup, etc.

Approfondiremo meglio questo interessante strumento, drush, in un articolo futuro, in questo articolo descriveremo la procedura di installazione su un ambiente MAC che utilizza MAMP (o MAMP PRO).

Innanzitutto bisogna scaricare il pacchetto dal github ufficiale, cliccando "Download ZIP" da questo link: https://github.com/drush-ops/drush

Apriamo il Terminale e verifichiamo che esista la cartella /usr/local/lib, se non esiste creiamola con sudo mkdir /usr/local/lib e posizioniamoci dentro.

Scompattiamo e spostiamo il pacchetto drush appena scaricato mv ~/Downloads/drush-master/ .

Rinominiamo la cartella mv drush-master/ drush

Diamo i permessi di esecuzione all'eseguibile sudo chmod u+x /usr/local/lib/drush/drush

Installiamo composer:

curl -sS https://getcomposer.org/installer | php
 
php composer.phar
 
sudo php composer.phar install

E creiamo un link simbolico per poter accedere al comando da qualsiasi directory:
sudo ln -s /usr/local/lib/drush/drush /usr/bin/drush

Infine creiamo un link a mysql.sock dove si aspetta di trovarla drush:

sudo mkdir /var/mysql
 
sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock

Fatto!

Per verificare che tutto sia andato bene posizionatevi sulla document root di un vostro sito ed eseguite il comando:

drush status

Alla prossima!

Come cambiare il tema di Drupal 7 in base all'url

Per cambiare il tema in funzione dell'url abbiamo diverse possibilità. La più conveniente è quella di utilizzare l'hook "custom_theme", come nell'esempio seguente:

function mymodule_custom_theme() {
  if (arg(0) == 'bacheca') {
    return 'tema_bacheca';
  }
}

In questo esempio tutte le url la cui radice è /bacheca (quindi anche l'eventuale /bacheca/xxx) vengono renderizzate utilizzando il tema "tema_bacheca".


Sostituire "mymodule" col nome del vostro modulo, "bacheca" con la radice che si vuole visualizzare col tema personalizzato e "tema_bacheca" con il nome del tema da utilizzare per tali url.