Script pour bloquer l’ajout de caractère dans un champs input

script pour la verification du champs nom
empeche l'insertion de caractere autre que alphanumérique

$view = '<script type="text/javascript">
    function verif(evt) {
        var keyCode = evt.which ? evt.which : evt.keyCode;
        var accept = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        if (accept.indexOf(String.fromCharCode(keyCode)) >= 0) {
            return true;
        } else {
            return false;
        }
    }
</script>';

 

source: https://www.grafikart.fr/forum/topics/234

Gagner un peu en vitesse dans le Backoffice Prestashop

Par défaut Prestashop va recuperer des infos sur le site des addons officiels, ce qui à pour effet de méchament ralentir la navigation, c'est encore pire quand ont est en local sur une machine de dev avec une connexion internet poussive(ce qui est mon cas). Il faut quand même faire attention car les module qui pourrait vous servir ne vont plus apparaitre.

Pour ça il faut aller modifier 2 fichiers. Le premier est classes/tools.php. Il faut modifier la methode addonsRequest() et rajouter un return false; des le début de la methode. comme ça plus requete vers le serveur addons.

Pour le second, qui concerne les themes, il faut le chercher dans controllers/admin/AdminThemeControllers.php.

Dedans cherche la methode ajaxProcessGetAddonsThemes(), et appeler la fonction die() des le debut. C'est tout.

Après cela ne fait pas de miracle, mais on gagne un peu. Voili Voilou.

Utilisation des variables smarty dans Prestashop

[WIP] Il existe une certaine quantité de variable smarty définit dans Prestashop, Ce post va essayer de les lister et d'expliquer leurs usages.

La liste ne sera evidement pas exaustive, mais sera compléter avec le temps.

$img_ps_dir       //URL for the PrestaShop image folder.
$img_cat_dir      //URL for the categories images folder.
$img_lang_dir     //URL for the languages images folder.
$img_prod_dir     //URL for the products images folder.
$img_manu_dir     //URL for the manufacturers images folder.
$img_sup_dir      //URL for the suppliers images folder.
$img_ship_dir     //URL for the carriers (shipping) images folder.
$img_dir          //URL for the theme’s images folder.
$css_dir          //URL for the theme’s CSS folder.
$js_dir           //URL for the theme’s JavaScript folder.
$tpl_dir          //URL for the current theme’s folder.
$modules_dir      //URL the modules folder.
$mail_dir         //URL for the mail templates folder.
$pic_dir          //URL for the pictures upload folder

 

Pour aller plus loin, j'ai trouver ce lien qui à l'air d'être pas makl complet sur les variables.

http://blog.gofenice.com/prestashop/global-smarty-variables-used-in-prestashop/

Ajouter des champs personnalisés dans un article WordPress

Pour ajouter des champs spécifiques dans un article WordPress, il faut d'abord ajouter à votre theme le fichier functions.php s'il n'est pas existant. Dedans il faut rajouter un hooks:

 

// nom du hook : "wp_insert_post"

// nom de la fonction à appeler : " champs_defaut"

add_action("wp_insert_post", "champs_defaut");

// prend en parametre l'identifiant du post

 function champs_defaut($post_id){
        if(get_post_type($post_id)=='post'){
            add_post_meta( $post_id, 'prix', '', true );      // ajout du champ 'prix', true => unique
            add_post_meta( $post_id, 'editeur', '', true );
            add_post_meta( $post_id, 'auteur', '', true );
            add_post_meta( $post_id, 'reserve', '', true );
        }
    return true;
    }   

Maintenant dans la page d'ajout d'article 4 champs sont apparut dans le backoffice. Les champs n'apparaissent pas dans les articles existants, il y a juste à clique sur le boutons "mettre à jour".

 

Pour les afficher dans la page single.php,  il reste à ajouter ce code:

 

// get_post_meta retourne la valeur du champs désigné dans les parametres,

// le booleen permet de définir si le retour est sous forme de tableau ou d'un string tout seul

$auteurs = get_post_meta(get_the_id(), 'auteur', false);
$editeur = get_post_meta(get_the_id(), 'editeur', true );
$prix = get_post_meta(get_the_id(), 'prix', true );
$reserve = get_post_meta(get_the_id(), 'reserve', true );

 

Voili voilou!!!

 

 

Migrer un site WordPress

Il peut être utile de savoir migrer son site, rien que pour le mettre en ligne à la suite d'une période de développement. Pour ce faire:

Mise en place

1/ Placer le dossier qui contient le site wordpress à la racine de votre hébergement.

2/ Si besoin creer une nouvelle base de données, sinon recuperer le nom de la base de données fourni par votre hébergeur.

Parametrage

3/ modifier le fichier wp-config.php.

modifier les constantes :

  • DB_NAME
  • DB_USER
  • DB_PASSWORD
  • DB_HOST

4/ importer le dump de la BDD

5/ Modifier la table wp_option.

6/ Modifier dans la table wp_post les colonnes:

  • guid
  • post_content

Utiliser ces requettes SQL pour vous simplifier la vie.

UPDATE wp_posts
SET guid=REPLACE(guid,'http://localhost/ancienne_adresse/wordpress431_1','http://nouvelle_adresse/');


UPDATE wp_posts
SET post_content=
REPLACE(post_content,'http://localhost/ancienne_adresse/wordpress431_1/','http://nouvelle_adresse/');

Normalement ça fonctionne.

Dépannage

En cas de probleme de lien il peut être nécessaire de rafraichir les permaliens.

Allez dans le backoffice/reglages/permaliens.

Passer en mode par defaut, appliquez puis repassez dans le mode qui va bien, dans mon cas c'était nom d'article.

Voili voilou.

 

Création de module [Partie 1]

Pour créer un module dans Prestashop, il faut respecter une certaine arboréscence. Premierement il faut créer un répertoire qui porte le nom du module ex : »MonModule »

  • Répertoire
    • controllers
    • override
    • themes
    • translations
    • upgrade
    • views
  • Fichier
    • monModule
    • logo.png

myModule.php

<?php

  if (!defined('_PS_VERSION_'))
    exit;

  class localaddict_marketplace extends Module {

  public function _-_construct() {
    $this->name = 'localaddict_marketplace';
    $this->tab = 'back_office_features';
    $this->version = '0.0.1';
    $this->author = 'Benoit MOTTIN';
    $this->need_instance = 0;
    $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_);
    $this->bootstrap = true;
    
    parent::__construct();
    
    $this->displayName = $this->l('Localaddict Marketplace');
    $this->description = $this->l('Ajout de fonctionnalité pour le multivendeur');
    $this->confirmUninstall = $this->l('Are you sure you want to uninstall?');

    if (!Configuration::get('MYMODULE_NAME')) {
      $this->warning = $this->l('No name provided');
    }

  }

Ceci est le strict minimum pour la déclaration d’un module.