Auteur : P.Ghiazza

[Drupal] Créer un moteur de recherche

Dans ce tutoriel, nous allons voir comment créer facilement un moteur de recherche avec Drupal 7, mais le fonctionnement est identique avec Drupal 8.

Type de contenu

Dans mon exemple, j’ai un type de contenu Véhicules, contenant des champs « Marque », « Modèle », « Couleur », etc, définis comme ceci :

Vue (views)

J’ai ensuite créé une vue listant ces véhicules. Jusque là, classique.

Le petit secret réside dans les filtres « Filter criteria » des vues. Afin de rendre un champ modifiable par l’utilisateur, il suffit de :

  1. Dans la zone « Filter Criteria », cliquer sur « Ajouter »
  2. Sélectionner le champ, dans mon exemple « Marque »
  3. Sélectionner « Dropdown » ou « Autocomplete » (par défaut)
  4. Cocher la première case « Expose this filter to visitors, to allow them to change it »

C’est elle qui va permettre d’afficher le champ au public. A ce moment là, de nombreux champs vont s’afficher. Vous pourrez alors choisir les opérateurs, si le champ est multiple, etc.

Effectuez cette opération pour chaque champ et vous obtiendrez une liste comme celle-ci :

Lorsque vous aurez terminé, vous pourrez consulter votre moteur de recherche dans la prévisualisation de la vue ou directement sur votre page.

Pour aller plus loin

Vous pouvez créer des champs avec une logique plus complexe.

Dans cet exemple, j’ai un champ « Prix ». Celui étant un entier, j’ai choisi de faire des tranches de prix. Pour cela, j’ai sélectionné  « Grouped filters » pour le champ « Filter type to expose ». Ainsi, j’ai pu ajouter de nombreuses lignes :

[CakePHP 3] Mise en place du scaffold / CRUD avec Bake

CakePHP dispose d’un puissant outil Shell permettant la génération de code.

La version 3.x ne proposant plus de scaffold / CRUD en déclarant une simple variable, je vous propose dans ce court tutoriel de l’implémenter de manière automatique.

 

Pour cela, ouvrez un terminal sur votre machine, puis rendez-vous dans le dossier /bin. Dans mes exemples, j’utiliserai des commandes Unix, mais adaptez-les si vous êtes sous Windows.

cd /Users/Pauline/MesProjets/cakephp3/bin

En faisant un « ls », vous constaterez la présence d’un fichier cake.

Executons-le de la façon suivante :

./cake

Cette commande vous donnera toutes les actions exécutables à l’aide de cette console.

 

Nous allons maintenant nous attarder sur « bake« .

Cette commande permet de générer automatiquement du code par rapport à la structure de votre base de données.

Ainsi, nous allons générer le code permettant de lister, consulter, ajouter, éditer et supprimer les éléments d’une table, comme c’était le cas avec CakePHP 2 (du CRUD en somme).

 

D’ailleurs, pourquoi utiliser cake bake plutôt que le plugin CRUD ? Simplement, la génération de code permet de modifier à volonté la structure générée et de gagner du temps dans le développement de l’application.

 

Imaginons donc que notre base de données comporte une table « users ».

Nous allons générer le controller de base de cette table.

Pour cela, nous allons entrer :

./cake bake controller users

Rechargez votre page et constatez que vous avez maintenant un CRUD en état de marche.

 

Si vous êtes sur Mac et avez un placard d’erreur de type :

No such file or directory in /Users/Pauline/MesProjets/cake3/vendor/cakephp/cakephp/src/Database/Driver/PDODriverTrait.php on line 47

Vous devez ajouter le socket UNIX dans votre fichier app.php au niveau de la connexion à la base de données, comme ceci :

'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',

 

Sur le même modèle, vous pouvez générer :

  • behavior
  • controller
  • component
  • form
  • middleware
  • model
  • template

Et j’en passe…

D’ailleurs, vous pouvez générer automatiquement tous les fichiers relatifs à à notre table « users » avec la commande :

./cake bake all users

 

Vous l’aurez compris, c’est un outil est extrêmement puissant avec lequel vous allez gagner un temps considérable.

A vos terminaux !

Psst, la doc de bake est ici.

[Prestashop 1.6+] Créer un override pour un module

Depuis la version 1.6, les équipes de Prestashop ont mis en place (enfin !) un système d’override des modules, propre et natif.

Dans ce tutoriel, je vais vous montrer comment l’utiliser et vous vous en rendrez compte, c’est très simple.

Admettons que nous souhaitons greffer le module « blocksearch » dans le hook displayFooter.

Commençons par :

  1. Créer un dossier du nom du module (ici « blocksearch ») dans le dossier /override/modules
  2. Dans ce fichier, créer le fichier « blocksearch.php »

 

Nous allons maintenant éditer ce fichier. D’abord, déclarons la classe :

<?php

class BlockSearchOverride extends BlockSearch {


}

Vous noterez que la spécificité de ce nouveau système d’override est ainsi l’ajout du suffixe « Override » au nom de la classe (au lieu de « Core » pour les classes ou les controllers).

 

Enfin, pour ajouter le hook en question, rien de plus simple :

public function hookDisplayFooter($params) {
	return $this->hookTop($params);
}

Il ne vous reste plus qu’à vider le cache de l’autoload en utilisant l’une de ces méthodes :

  • Back-office > Paramètres avancés > Performances : bouton « Vider le cache » en haut à droite
  • Suppression du fichier /cache/class_index.php

Le tour est joué !

[Prestashop] Au secours ! Paypal ne fonctionne plus sur ma boutique !

Si vous êtes ici, c’est que comme toutes les personnes ayant installé le module Paypal sur leur boutique, celui-ci ne fonctionne plus.

Ce qui est sympa pour vous, c’est que je vais vous dire comment y remédier !

 

La cause du bug m’est encore inconnue. Tout ce que je peux vous dire, c’est que Paypal a du modifier son appel API / webservice (que sais-je ?) et ainsi, votre module ne fait plus le lien.

 

La résolution du bug, elle, est facile. Il vous suffit de mettre à jour votre module.

Vous pouvez soit le faire directement depuis votre back-office, soit en passant par Addons.

Pour cela, rendez-vous sur Prestashop Addons et téléchargez le module. Dans votre back-office, uploadez-le ensuite comme n’importe quel module et le tour est joué 😉

 

Important : Normalement, la mise à jour conserve tous vos identifiants Paypal. Sauvegardez tout de même vos identifiants avant de faire la mise à jour.

[PHP] Classe Upload : envoyez des fichiers sur votre serveur

Agacée de ne jamais trouver chaussure à mon pied, je me suis lancée (tardivement), dans le développement d’une classe PHP permettant d’uploader facilement des fichiers sur votre serveur.

En renseignant simplement le dossier de destination et le $_FILES correspondant, le fichier sera envoyé.

Vous avez quand même la possibilité d’effectuer des actions :

  • Vérifications de l’extension par rapport à un jeu d’extensions (précisées par vous-même)
  • Vérification de la taille du fichier par rapport à une taille max (fixée également par vous-même)
  • Renommage du fichier

Je vous laisse consulter la documentation pour plus d’informations :

Documentation de la classe Upload (.pdf)

 

Téléchargement de la classe Upload (avec exemple)

Télécharger la classe Upload (.zip)

 

N’hésitez à partager vos impressions, remarques ou problèmes en laissant un commentaire ci-dessous.