Devel bug

Devel bug

15 Mai 2014Drupal 6.x, Devel
La class krummo pete une erreur 
Public Static Function env() {

Solution

Supprimer l'intérieur de cette fonction ... oué c'est bourrin mais ca fonctionne !

 

Redirect 301 de index.php Drupal

Redirect 301 de index.php Drupal

5 oct. 2011Drupal 6.x, PHP

Vous souhaitez rediriger votre page index.php de votre site en drupal (ou autre) vers la racine du site afin d'éviter que Goole ne considère votre homepage comme du duplicate content ?

Rien de plus simpe, éditez votre fichier setting.php (/site/default/) et ajoutez le code suivant :

{syntaxhighlighter brush:php;}if ($_SERVER['REQUEST_URI'] == "/index.php"){
    header( "HTTP/1.1 301 Moved Permanently" ); 
    header( "Location: /"); 
    exit();
}{/syntaxhighlighter}

ckeditor.styles.js - Menu Styles dans CKEDITOR - WYSIWYG Drupal

ckeditor.styles.js - Menu Styles dans CKEDITOR - WYSIWYG Drupal

il n'est jamais évidement de trouver comment customiser l'éditeur WYSIWYG dans drupal. 

Voici le fichier que vous devez modifier afin de pouvoir disposer de nouveaux styles dans le menu format de l'éditeur CKEDITOR dans drupal.

Solution

Allez dans le dossier ou vous avez déposé la version de CKeditor, normalement : /sites/all/librairies/ckeditor/plugins/styles/default.js

Vous trouverez une exemple dans le répertoire styles.

Ensuite, vous n'avez plus qu'a créer vos lignes en fonction de vos styles.

Code ckeditor.styles.js Drupal 6


CKEDITOR.stylesSet.add('default',
[{name:'titre H1',element:'span',attributes:{class:'titleH1'}},
{name:'titre H2',element:'span',attributes:{class:'titleH2'}},
{name:'titre H3',element:'span',attributes:{class:'titleH3'}},
{name:'Puce rouge',element:'p',attributes:{class:'puceRouge'}}]);

Code ckeditor.styles.js Drupal 7

Rendez vous sur l'url suivante, /admin/config/content/ckeditor/edit/Full, ceci vous permettra de configurer le "PREDEFINED STYLES PATH" de votre Ckeditor.
Renseignez par exemple: /sites/all/themes/votreTheme/ckeditor.styles.js

Et voici votre fichier ckeditor.styles.js.

 


CKEDITOR.addStylesSet( 'drupal',
[
    /* Block Styles */
    { name : 'Paragraphe' , element : 'p' },
    { name : 'Titre 1' , element : 'h1' },
    { name : 'Titre 2' , element : 'h2' },
    { name : 'Titre 3' , element : 'h3' },

    /* Inline Styles */
    { name : 'Gros' , element : 'big' },
    { name : 'Petit' , element : 'small' }
]);

Vous pouvez bien entendu utiliser la même méthode sous drupal 6, le chemin de configuration de votre ckeditor n'étant pas le même cepedant. Il vous faudra alors ajouter le code plus haut

 

Génération d'une image imagecache sans affichage sur la sortie standard

Génération d'une image imagecache sans affichage sur la sortie standard

7 sept. 2011Drupal 6.x

Problème

Cas assez simple, vous souhaitez générer une image avec les presets que vous avez crée dans imagecache, mais voila, l'image ne sera généré sur le serveur que lorsque vous allez visualiser l'article (les images ne sont généré que lorsqu'on enf ait la demande.

Mais voilà, vous avez besoin d'utiliser imagecache pour retailler ou traiter une image dans drupal et vous n'allez à aucun moment utiliser la visualisation de cette image. Celle ci ne sera donc jamais écrite sur le serveur.

Voici comme générer une image sur le serveur sans avoir à l'afficher au préalable.

Solution 


<div>
	imagecache_generate_image('imageCachepreset', $nodeT->field_img[0]['filepath']);</div>
<div>
	$dst = imagecache_create_path('imageCachepreset', $nodeT->field_img[0]['filepath']);</div>
<p>
	

La première ligne va simplement générer l'image sur le serveur, il ne vous reste plus qu'à récupérer le chemin vers votre image avec la seconde ligne. Et voilà votre image est généré sur le serveur sans que vous ayez eu à l'afficher par le biais d'un thème ou autre.

Formater les dates dans Drupal en respectant la Timezone.

Formater les dates dans Drupal en respectant la Timezone.

6 août 2011Drupal 6.x, Date

2 possibilitées s'offre à vous lorsque vous souhaitez afficher une date dans Drupal. Soit vous passez par l'affichage des formats que vous aurez prédéfinies, soit vous mettez les mains dans le cambouis ^^

Pour afficher une date en respectant votre Fuseau horaire

$maDate= strtotime($node->field_date[0]['value']);
$tz_offset = strtotime(date("M d Y H:i:s")) - strtotime(gmdate("M d Y H:i:s"));
$maDate += $tz_offset;
$date = format_date($maDate, 'custom', 'l d F H:i');

Et voilà ...

Drupal, supprimer la redirection des formulaires

Drupal, supprimer la redirection des formulaires

1 août 2011Drupal 6.x

Drupal est un CMS très puissant, cependant, il requiert de bonnes connaissances en programmation afin de personnaliser son site un minimum.

Lorsque vous générez un formulaire avec l'API drupal, celui-ci génère le code HTML correspondant au formulaire.

Le comportement normal d'un formulaire en dehors de Drupal est d'envoyer après submit vers la page action que vous avez défini. Ainsi vous pouvez récupérer sans problème les données renseignées dans la formulaire en POST ou GET.

Drupal va ajouter une étape qui est transparente et qui peut vous faire perdre un peu de temps. Il rajoute une redirection vers la même page après soumission du formulaire. En gros Le formulaire est soumis, la page action est bien appelée, à ce moment les données POST sont bien accèssibles. Mais L'API Drupal ajoute une redirection après la soumission des données. Cette étape va rendre vos données passées en POST innaccessible.

Vous devez donc simplement désactiver la redirection du Formulaire.

Formulaire Drupal

<?php
$form['name'] = array(
  '#type' => 'textfield',
  '#title' => t('Nom'),
  '#default_value' => '',
  '#size' => 60,
  '#maxlength' => 64,
  '#description' => t('Renseignez votre nom dans ce champ'),
);
$form['submit'] = array(
  '#type' => 'submit',
  '#value' => t('Soumettre'),
);
?>

Dans ce cas la redirection est active. pour la désactiver ajoutez simplement

$form['submit'] = array(
  '#type' => 'submit',
  '#value' => t('Soumettre'),
  '#redirect' => NULL
);

 

Cette fois ci aucune redirection ne sera effectué si ce n'est vers la page action évidement.

Drupal 6.x - Pense-bête

Drupal 6.x - Pense-bête

1 août 2011Drupal 6.x
  • Modification de l'accès des utilisateurs aux filtres texte(ex: Filtered HTML). /admin/settings/filters
  • Import de modules dans un autre module :
module_load_include('php', 'phpmailer', 'phpmailer/class.phpmailer');

Drupal 6.x, Webform traitement des données avant Submit et enregistrement

Drupal 6.x, Webform traitement des données avant Submit et enregistrement

1 août 2011Drupal 6.x, PHP

Problème

Je souhaite ajouter un post traitement sur les données saisies par un utilisateur à travers un formulaire webform.

Ex : Vérifier les données saisies par un utilisateur et remplir un champ caché en fonction de ses choix fait avec les différents input.

Ce type de formulaire est très utile car il permet une mise en place très simple est rapide de formulaires. Seul inconvénient, lorsque vous désirez faire autre chose que ce qui est prévu, évidemment ça se complique.

Solution

Drupal est un outil très puissant qui permet d'insérer du code personnel dans ses fonctions grâce aux hook.

Nous allons donc en utiliser un très connu, hook_form_alter(&$form, &$form_state, $form_id).

Je considère dans cet article que vous avez déjà créér un module personnel à votre instance DRUPAL.

Le principe est simple, on insert une nouvelle étape de validation lors de la soumission du formulaire dasn laquelle on va modifier les valeurs qui nous intéresse ou faire un autre traitement, comme insérer dans une base de données ou envoyé un email.

Les valeurs saisies et envoyées lors du submit se trouvent dans les tableaux :

$form_state['values']
$form_state['clicked_button']['#post']['submitted']
{syntaxhighlighter brush: php}
<?php
/* Modification des formulaires */
function VOTREMODULE_form_alter(&$form, &$form_state, $form_id) {
        // Modifier tous les formulaires webform
        if (substr($form_id, 0, 20) == 'webform_client_form_') {
            //on ajoute une étape de validation aux formulaires webform
            array_unshift($form['#validate'],'VOTREMODULE_form_alter_webform_contact_validate');
        }
}
/* fonction permettant de modifier les  */
function VOTREMODULE_form_alter_webform_contact_validate($form, &$form_state) {
        //Insérez ici le code que vous désirez, ci dessous, j'ajoute juste un email dans un champs caché
        $form_state['values']['submitted']['email'] = "email@gmail.com";
        $form_state['clicked_button']['#post']['submitted']["email"] = "email@gmail.com";
}
?>
{/syntaxhighlighter}

 

Drupal Hook, autoriser des modules à utiliser _alter pour un composant

Drupal Hook, autoriser des modules à utiliser _alter pour un composant

1 août 2011Drupal 6.x, PHP

L'avantage évidemment de Drupal est de permettre de modifier le comportement d'un module ou du sytème, mais sans modifier le corps du moteur ou d'un module.

Vous pouvez par exemple modifier n'importe quel formulaire Drupal en utilisant le hook hook_form_alter().

Une fois que l'on a compris comment faire, on veut pouvoir le faire partout ^^

Cependant, encore faut-il que les développeurs d'un module que vous venez d'installer par exemple et que vous souhaitez modifier vous en aient laissé la possibilité...

Si ce n'est pas le cas, vous n'aurez pas d'autre solution que d'ajouter vous-même ce code afin de vous permettre d'utiliser un hook.

Voici un exemple concret pour le module uc_order.module.

Exemple

Vous souhaitez modifier le panel de facturation d'Ubercart. Mais voilà, impossible aucun hook n'a été prévu à cet effet.

A vous de trouver où insérer le code qu'il faudra pour vous laisser cette possibilité. Pour le module uc_order.mdule , je modifie la fonction _order_pane_list()

Juste après l'appel vers d'autres modules module_invoke_all(), insérez le code  :

<?php
$panes = module_invoke_all('order_pane', NULL);
//PATCH
drupal_alter('order_pane', $panes);
?>


Et voilà, vous pouvez désormais utiliser le hook_order_pane_alter($op,$arg1).

 

IE8, Mémoire insuffisante pour cette opération ckeditor/ckeditor.js drupal

IE8, Mémoire insuffisante pour cette opération ckeditor/ckeditor.js drupal

1 août 2011Javascript, IE7, IE8, Drupal 6.x

Aujourdh'ui un petit problème lors du passage d'un site sur un serveur de prod :

Dans Internet Explorer (IE7/IE8), impossible d'insérer un lien dans l'éditeur CKeditor sur Drupal.

Erreur JS

Message : Mémoire insuffisante pour cette opération

/sites/all/libraries/ckeditor/ckeditor.js

Solution

C'est très simple essayez de compresser vos CSS et JS depuis l'admin drupal.

/admin/settings/performance.

Activez les options OPTIMISE LES FICHIERS CSS et OPTIMISE LES FICHIERS JAVASCRIPT.

Voilou. Bug solved.

Pages

Subscribe to RSS - Drupal 6.x