Utente: Anonymous

Come fare per

Questa sezione della guida è dedicata a quei piccoli problemi che ho incontrato durante lo sviluppo con Drupal a cui però non avevo trovato , nei vari forum su Drupal , risposta immediata.

Installare Drupal 7

  • scaricare drupal ultima versione da http://drupal.org/project/drupal
  • decomprimere la versione di Drupal e scaricarla nella root del sito
  • copiare da sites/default/default.settings.php in sites/default/settings.php
  • dare i permessi di scrittura (chmod 777) al file setting.php
  • creare un database MuSql
  • lanciare da browser miosito.com/install.php
  • Database: inserire nome/username/password richiesti del db creato
    inserire amche tra le opzioni avanzate il nome del server ad esempio "mysql1065.servage.net"
    Tra le altre cose domandate inserire l'utente amministratore: admin/password
  • Traduzione italiana

  • scaricare la traduzione italiana da http://localize.drupal.org/translate/languages/it e chiamarla it.po
  • mettere il file it.po in drupal/profiles/standard/translations
  • Quando viene installato, drupal chiedere se si vuole installare in inglese (default) o italiano.
  • La prima volta lasciare la lingia inglese
    - dopo l'installazione andare nel menu "modules" e attivare il modulo "locale"
    - da configurazione->language aggiungere la lingua italiana, partirà la traduzione che richiederà diverso tempo.

    Modificare il titolo del sito

    Come amministratore del sito, andando sulla voce di menu amministra->impostazioni compare la pagina con tutte le impostazioni del sito. Su impostazioni generali è possibile definire il titolo del sito, la email e l'icona.

    Icone del linguaggio, installare http://drupal.org/project/languageicons

    Ripristinare la pagina di login scomparsa

    Se è stata disabilitata la visualizzazione del Login , collegarsi con
    www.miosito.it/user oppure www.miosito.it/?q=user,
    per far comparire la pagina di login.

    Sito off-line:non riesco più ad entrare

    Provare in uno di questi modi:

    • Provare a collegarsi con www.miosito.com/user, per far comparire la pagina di login. Se si visualizza entrare come amministratore e riportare il sito on-line.

    • Controllare se nella tabella variable c'è un record con name= 'site_offline': se c'è cancellarlo insieme al record della tabella cache con cid='variables'

    • Se ancora non funziona il controllo del sito offline è fatto in includes/menu.inc funzione _menu_site_is_offline() chiamata dalla funzione menu_execute_active_handler()

    • Verificare 'impostazione della variabile $db_url nel file /sites/defaultl/settings.php

    • Se ancora non funziona il controllo del sito offline è fatto in includes/menu.inc funzione _menu_site_is_offline() chiamata dalla funzione menu_execute_active_handler()

    Eseguire il Logout

    Per eseguire un Log-out non da menu chiamare la pagina http://miosito.com/logout

    Aprire una nuova finestra da menu (target="_blank")

    L'apertura di una nuova finestra viene eseguita impostando l'attributo "target" nel tag href.
    La funzione di default che prepara il tag href e' la funzione theme_menu_item_link() (contenuta in includes/menu.c).
    Dobbiamo quindi creare una delle due seguenti funzioni in modo tale che Drupal le possa chiamare in sostituzione della funzione di default.
    Le due funzioni, da inserire nel file template.php, sono:
    - miotema_menu_item_link($link)
    - phptemplate_menu_item_link($link)
    Se esistono entrambe , Drupal darà la precedenza a miotema_menu_item_link($link).
    Considerando ad esempio la seconda, possiamo fare in modo che l'attributo Target sia presente se il riferimento al link inizia con "http" indicando un percorso esterno al sito. Ecco il codice.
    Per versione 6.x

    <?php
     
    function phptemplate_menu_item_link($link) {

      if (empty(

    $link['localized_options'])) {
       
    $link['localized_options'] = array();
      }
    if(
    strtolower(substr($link['href'],0,4))=="http") {
        
    $link['localized_options']['attributes'] = array('target' => '_blank');
    }

      return

    l($link['title'], $link['href'], $link['localized_options']);
    }
    ?>

    In alternativa possiamo sfruttare l'attributo $link[external]=1 che Drupal fornisce nel caso il link sia esterno. Ecco il codice.

    <?php
     
    function phptemplate_menu_item_link($link) {

      if (empty(

    $link['localized_options'])) {
       
    $link['localized_options'] = array();
      }
    if (
    $link['external']==1) {{
        
    $link['localized_options']['attributes'] = array('target' => '_blank');
    }
      return
    l($link['title'], $link['href'], $link['localized_options']);
    }
    ?>

    Per versione 5.x

    <?php
     
    function theme_menu_item_link($item, $link_item) {
    $attributes = array();
    if (!empty(
    $item['description'])) $attributes['title'] = $item['description'];
    if(
    strtolower(substr($link_item['path'],0,4))=="http") {
        
    $attributes['target'] = "_blank";
    }
    return
    l($item['title'], $link_item['path'], $attributes, isset($item['query']) ? $item['query'] : NULL);
    }
    ?>

    Attenzione , se il tema che si sta utilizzando implementa la funzione miotema_menu_item_link() nel file template.php, inserire la patch anche in questa funzione.

    Il test per abilitare URL semplificati fallisce

    Per sistemi Windows e server Apache fare le seguenti modifiche:
    in httpd.conf

    1. scommentare LoadModule rewrite_module modules/mod_rewrite.so
    2. impostare AllowOverride All in ..
    <Directory "C:/drupal">
        AllowOverride All
        Options None
        Order allow,deny
        Allow from all
    </Directory>

    essendo C:/drupal la documentRoot di Apache

    Ordinare i contenuti nella prima pagina

    Come sono ordinati i contenuti nella rima pagina?
    All'avvio di Drupal viene eseguita la funzione node_page_default() , contenuta in includes/node.module. In questa funzione viene eseguita la seguente query per vedere quali contenuti devono essere inseriti in prima pagina.

    SELECT n.nid, n.sticky, n.created FROM node n
     WHERE n.promote = 1 AND n.status = 1 ORDER BY n.sticky DESC, n.created DESC

    Quindi affinché un contenuto compaia in prima pagina nella tabella NODE si deve avere:
    promote = 1 ; cioè promosso in prima pagina.
    status = 1; cioè pubblicato.
    L'ordinamento è fatto sui due campi: sticky(opzione fisso in cima alla lista ) e created (data creazione) e su entrambi in modo discendente.
    Per il campo sticky più è alto il valore più il commento sarà in cima alla lista.
    Per il campo created , i commenti più recenti saranno visualizzati per primi.

    Quindi, al di là della data di creazione, per portare un commento al primo posto nella pagina, basta assegnarli (direttamente nella tabella NODE) il valore di sticky più alto in assoluto e via via decrescente per i contenuti che devono seguire.
    Per tutti i contenuti che si vogliono visualizzare in base alla loro data di creazione, basta mantenere sticky=0.
    Attenzione:se ad un contenuto si assegna l'opzioe "fisso in cima alla lista" il valore di sticky sarà posto=1 sovrascrivendo eventuali valori da noi impostati direttamente nella tabella NODE.

    Cambiare il proprietario di un contenuto

    Ci sono due modi per modificare il proprietario del nodo.
    1. Il primo consiste nell'entrare nel nodo del contenuto come amministratore e nelle informazioni sull'autore inserire il nome dell'utente a cui dare la proprietà del nodo.

    Attenzione: il nuovo utente potrà ora modificare il contenuto solo se in Controllo accessi ha il permesso amministra filtri nel modulo filter oppure se il formato del contenuto è Filtered HTML. Nel caso non fosse così, permessi non assegnati o formato uguale a PHP code o Full HTML, è necessario o cambiare il permesso o impostare il formato a Filtered HTML.

    2. Il secondo metodo consiste nel modificare il campo uid nella tabella node inserendo il valore uid assegnato all'utente (vedere tabella users). Vale la stessa considerazione fatta precedentemente per il formato. Il valore del formato selezionato è comunque indicato nella tabella node_revisions nel campo format per il/i record con campo nid uguale al valore nid del nodo nella tabella node.
    La tabella node_revisions ha anche il campo uid che per correttezza dovrebbe essere posto uguale al valore in tabella node, ma anche se mantiene il precedente valore non inficia il cambiamento del proprietario.

    Format = 1 Filtered HTML valore di default per tutti gli utenti
    Format = 2 PHP code
    Format = 3 Full HTML

    I fogli di stile non sono caricati

    Compare solamente il contenuto senza sidebar intestazione etc.

    • Controllare che il nome del tema assegnato all'utente sia presente nella tabella system per type="theme"
    • Controllare che file di stile indicato nella tabella system nel campo filename, esista per quel tema e che non sia corrotto

    Usare una vista nel codice PHP

    Drupal 6.x
    Views 2.0
    Supponiamo di avere un modulo che chiama la funzione miomodulo_output () generando un output per il contenuto principale.

    <?php
     
    function   miomodulo_output () {
      
    $output = "Messaggio di prova";
       return
    $output;
    }
    ?>

    Voglio ora inserire dopo il messaggio il risultato di una vista creata mediante l' interfaccia delle viste.
    Il nome della vista è "vista_di_prova" e accetta in ingresso un argomento numerico passato alla funzione miomodulo_output().
    Al codice precedente dobbiamo aggiungere una sola riga:

    <?php
     
    function   miomodulo_output ($arg1) {
      
    $output = "Messaggio di prova<br>";
       
    $output  .= views_embed_view('vista_di_prova', 'page_1',$arg1);
       return
    $output;
    }
    ?>

    Dove page_1 è il nome del display_id da visualizzare definito nell'interfaccia della vista.
    Per approfondimenti
    http://drupal.org/node/48816

    Eliminare la data ed il nome utente da una pagina

    Come amministratore andare alla pagina delle "impostazioni globali" dei temi. (/admin/build/themes/settings/global)
    Per ogni tipo di contenuto presente nella sezione "Mostra le informazioni del contenuto su",
    eliminare il segno di spunta sul tipo di contenuto su cui non si vuole mostrare nome e data.

    Ripristinare la password di amministratore

    Eseguire la query:
    UPDATE users SET pass = MD5( 'NUOVAPASSWORD' ) WHERE uid =1;
    Per saper il nome associato all'amministratore:
    SELECT name FROM users WHERE uid =1;
    Ulteriori informazioni possono essere lette direttamente dalla tabella users degli utenti.

    Conoscere la directory di ...

    global $theme_path

    Cosa come
    directorydel sito global $base_url
    directory di un modulo $path = drupal_get_path('module', 'nomemodulo');
    directory di un tema $path = drupal_get_path(theme', 'nometema');
    directory di un engine $path = drupal_get_path(theme_engine', 'nomeengine');
    directory tema corrente global $theme_path

    Utenti: Sapere se un utente appartiene a un ruolo

    Per verificare se l'utente corrente appartiene ad uno dei ruoli definiti nella tabella ROLE
    definire la seguente funzione:

    <?php
    /**
    * @param $role   Il nome del ruolo da verificare
    * @param $user  Oggetto utente
    * @return  TRUE se l'utente appartiene al ruolo richiesto , FALSE altrimenti
    */
    function user_has_role($role, $user = NULL) {
      if (
    $user == NULL) {
        global
    $user;
      }
      if (
    is_array($user->roles) && in_array($role, array_values($user->roles))) {
        return
    TRUE;
      }
      return
    FALSE;
    }
    ?>