Tu sei qui

Drupal 7

GianlucaBove.it

...just another technical blog...

Ridimensionamento immagini in Drupal 7

In Drupal 7 è possibile creare dei preset per le immagini che vengono messi in cache e ne rendono efficiente e comodo l'utilizzo.

Per definirli, tipicamente nell'hook_install, procedere come segue:

function miomodulo_install() {
  $style = image_style_save(array('name' => 'scala80x80'));
  $effect = array(
    'name' => 'image_scale',
    'data' => array(
      'width' => 80,
      'height' => 80,
      'upscale' => FALSE,
    ),
    'isid' => $style['isid'],
  );
  image_effect_save($effect);
}

Per utilizzarlo, ad esempio all'interno di un tag img, è sufficiente questo codice (in questo esempio si renderizza l'immagine dell'avatar del'utente):

<img src="<?php print image_style_url('scala80x80', $user->picture->uri); ?>">

Per pulizia, si consiglia di mettere nell'hook_uninstall la rimozione dello stesso, come segue:

function miomodulo_uninstall() {
  image_style_delete(image_style_load('scala80x80'));
}

Creare un utenza Drupal da codice

A volte è necessario creare un utente direttamente da codice ed autenticarsi automaticamente.


Ancora una volta ci viene in aiuto il framework di Drupal con le sue API.

// controlla che siano stati passati i dati in POST e che la username sia univoca
if (isset($_POST['username']) && isset($_POST['password'])) {
  if (!user_load_by_mail($_POST['username'])) {
   $account = new stdClass;
   $account->name = $_POST['username'];
   $account->pass = $_POST['password'];
   $account->mail = $_POST['username']; // in questo esempio la mail coincide con la username
   $account->status = TRUE;
   $account->language = "it";
   $account->init = $_POST['username'];
   $account->roles = array(
       DRUPAL_AUTHENTICATED_RID => TRUE,
      // Eventuale ruolo personalizzato' => TRUE,
    );
    // esempio di popolamento campo custom
    $account->field_tipologia["it"][0]['value'] = "TipoA";
    user_save($account);
   }
   user_authenticate($_POST['username'], $_POST['password']);
 }

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.