Drupal

Logo Drupal

Tous mes trucs et astuces pour utiliser Drupal

Etiquettes: 

Débloquer un site hors-ligne

Quand un site Drupal est mis hors-ligne, plus personne ne peut y accéder.
Cette option est pratique pour des opérations de maintenance et/ou de mises à jour.
Le seul inconvénient, ne pas quitter sa session avant d'avoir remis le site en ligne sous peine de ne plus pouvoir y accéder.
Si par malheur cela se produit, pas de panique, une solution simple existe afin de remettre son site en ligne.

Pour débloquer son site, il suffit de s'y connecter en y ajoutant /user ou /?q=user à la fin de l'adresse.

http://monSite.fr/user (si les URLs simplifiées sont activées)
ou
http://monSite.fr/?q=user (si les URLs simplifiées ne sont pas activées)

Seul l'administrateur est autorisé à se connecter.

Etiquettes: 

Installer la barre de progression PECL pour Drupal (sous Linux)

1 - Installer le paquet php5-dev.

$ sudo apt-get install php5-dev

2 - Se placer dans le répertoire /tmp.

$ cd /tmp/

3 - Vérifier à l'adresse http://pecl.php.net/package/uploadprogress la dernière version disponible puis télécharger l'archive souhaitée.

$ wget http://pecl.php.net/get/uploadprogress-1.0.3.1.tgz

4 - Extraire l'archive téléchargée.

$ tar xzvf uploadprogress-1.0.3.1.tgz

5 - Se placer dans le répertoire uploadprogress-x.x.x

$ cd uploadprogress-1.0.3.1/

6 - Compiler les sources et installer le programme

$ phpize
$ ./configure
$ make
$ sudo make install

7 - Rajoutez "extension=uploadprogress.so" au fichier php.ini.

8 - Redémarrer apache.

$ /etc/init.d/apache2 restart
 

Etiquettes: 

MAJ des modules Drupal sur un hébergement OVH

Si Drupal est installé sur un hébergement OVH, les mises à jour de modules via l'interface de mise à jour de Drupal ne fonctionne plus.

Obligation de télécharger le module à mettre à jour et de l'uploader sur le serveur via le FTP.

Pour retrouver un comportement standard, il suffit de modifier un tout petit fichier situé à la racine du serveur FTP.

Il s'agit du fichier .ovhconfig

Dans ce fichier, il suffit de modifier la ligne qui contient

container.image=legacy

par

container.image=stable

Tout devrait rentrer dans l'ordre

Mise à jour Drupal 7.24 & 6.29

Suite à la mise à jour de Drupal en version 7.24 & 6.29, il est indipensable d'ajouter ou de modifier le fichier .htaccess présent dans le répertoire sites/default/files.

C'est une question de sécurité.
Cela empêchera toute exécution de scripts malicieux.

$ cat sites/default/files/.htaccess
# Turn off all options we don't need.
Options None
Options +FollowSymLinks
 
# Set the catch-all handler to prevent scripts from being executed.
SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
<Files *>
  # Override the handler again if we're run later in the evaluation list.
  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
</Files>
 
# If we know how to do it safely, disable the PHP engine entirely.
<IfModule mod_php5.c>
  php_flag engine off
</IfModule>

Si le fichier .htaccess n'existe pas, le créer.

Il faut également protéger le répertoire temporaire de Drupal avec ce même fichier .htaccess.
Pour connaitre le répertoire temporaire de Drupal, il suffit d'aller dans "Configuration --> Média --> Système de fichiers".
En règle générale, sur un serveur Linux, il s'agit du répertoire /tmp.

Pour le protéger, rien de plus simple, il suffit d'effectuer une copie du fichier sites/default/files/.htaccess dans le répertoire /tmp.

Sur un serveur Linux, le répertoire /tmp est vider à chaque redémarrage.
Il faut donc penser à recopier le fichier .htaccess après chaque redémarrage.
Sinon, une petite tâche cron et le problème est réglé :

$ crontab -l
# m h  dom mon dow   command
@reboot cp -a /var/www/public_html/sites/default/files/.htaccess /tmp/

Penser à modifier le chemin d'accès au fichier .htaccess.

Pour finir, supprimer le fichier CHANGELOG.txt. Cela évitera à n'importe qui de connaitre la version actuellement installée.

Mon module Drupal : Test de connexion

Si mon module Drupal "Test de connexion" vous intéresse, vous pouvez le télécharger en cliquant sur les liens ci-dessous correspondant à votre version de Drupal.

Disponible pour la version 6.x de Drupal :

http://www.isbeta.fr/6ac7a

MD5SUM : 25c575cc262272e6a2a7dc656196c25b  test_connexion.tar.gz

Disponible pour la version 7.x de Drupal :

http://www.isbeta.fr/91e09

MD5SUM : 9b7a14d2e38c1111f2cc841df365f839  test_connexion-7.x-1.0.tar.gz

Etiquettes: 

Récupérer (extraire) les données d'un noeud

Dans Drupal 7, il est tout à fait possible d'extraire n'importe quelles données d'un noeud (Page, Article etc etc) grâce aux API Drupal.

Quelles sont les données récupérables :

Exemple avec un article test créé spécialement.

Pour afficher cette description, il suffit d'utiliser l'API node_load en indiquant le NID du noeud concerné :

<?php
$nid = 412;
$node = node_load($nid);
print_r($node);
?>

Ce qui donne :

stdClass Object
(
    [vid] => 431
    [uid] => 0
    [title] => Article vide pour test
    [log] => 
    [status] => 0
    [comment] => 2
    [promote] => 0
    [sticky] => 0
    [nid] => 412
    [type] => story
    [language] => fr
    [created] => 1334738152
    [changed] => 1386527877
    [tnid] => 0
    [translate] => 0
    [revision_timestamp] => 1386527877
    [revision_uid] => 1
    [taxonomy_vocabulary_2] => Array
        (
        )

    [body] => Array
        (
            [und] => Array
                (
                    [0] => Array
                        (
                            [value] => 

Contenu vide pour test

[summary] => [format] => 2 [safe_value] =>

Contenu vide pour test

[safe_summary] => ) ) ) [rdf_mapping] => Array ( [rdftype] => Array ( [0] => sioc:Item [1] => foaf:Document ) [title] => Array ( [predicates] => Array ( [0] => dc:title ) ) [created] => Array ( [predicates] => Array ( [0] => dc:date [1] => dc:created ) [datatype] => xsd:dateTime [callback] => date_iso8601 ) [changed] => Array ( [predicates] => Array ( [0] => dc:modified ) [datatype] => xsd:dateTime [callback] => date_iso8601 ) [body] => Array ( [predicates] => Array ( [0] => content:encoded ) ) [uid] => Array ( [predicates] => Array ( [0] => sioc:has_creator ) [type] => rel ) [name] => Array ( [predicates] => Array ( [0] => foaf:name ) ) [comment_count] => Array ( [predicates] => Array ( [0] => sioc:num_replies ) [datatype] => xsd:integer ) [last_activity] => Array ( [predicates] => Array ( [0] => sioc:last_activity_date ) [datatype] => xsd:dateTime [callback] => date_iso8601 ) ) [cid] => 0 [last_comment_timestamp] => 1334738152 [last_comment_name] => [last_comment_uid] => 1 [comment_count] => 0 [name] => [picture] => 0 [data] => )

Si on souhaite afficher la date de création du noeud, il suffit d'écrire

<?php
$nid = 412;
$node = node_load($nid);
$timestamp = $node->created;
$date = date("d-m-Y", $timestamp);
echo $date;
?>

Ce qui donne :

18-04-2012

Pour afficher le contenu

<?php
$nid = 412;
$node=node_load($nid);
print $node->body['und']['0']['value'];
?>

Ce qui donne :

Contenu vide pour test

Dans Drupal 6, l'affichage du contenu s'effectue de cette manière :

<?php
$nid = 412;
$node=node_load($nid);
print $node->body;
?>

Les arrays ['und']['0']['value'] sont inexistants.

Etiquettes: 

Réinitialiser le mot de passe administrateur de Drupal

En cas de perte des identifiants, il faut savoir que tous les comptes utilisateurs sont enregistrés dans la table users.

Dans cette table, à chaque compte correspond un id unique (colonne UID).
Pour Drupal, les utilisateurs anonymes et privilégiés sont systématiquement les deux premières lignes de cette table et ont pour UID respectif 0 et 1.

Pour changer identifiant et mot de passe, il suffit d'exécuter la requête SQL suivante avec la console MySQL ou PhpMyAdmin :

$ mysql -u root -p
> use drupal
> update users set
        name = 'identifiant_admin',
        pass = md5('mot_de_passe')
    where uid = 1;