Tous les articles par guillem

Trame pour e-commerce Prestashop

– Multiboutique
– Multilangue
– Multi devise

– Produits : utilisation des déclinaisons ?

– Gestion des stocks
Si oui. Commande possible si hors stock ?
– Frais de port (La poste ? par prix/par poids/forfaitaire)

Paiement

  •  Chèque :  Quel ordre ?
  • Virement : Infos compte
  • Paypal : Quel compte ?
  • CB : Quel banque ?

– Alerte lors d’un nouvelle commande ? vers quellle adresse e-mail ?
– Génération des factures dans le compte client ? Si oui, quelle mention légales en bas de page  ?

– CGV
-Mentions légales

htaccess

Redirect permanent

Redirect permanent /ancien_repertoire http://nouveau-site.tld/nouveau_repertoire
Redirect permanent /ancien_fichier.php http://site.tld/nouveau_fichier.php

Rediriger tout sauf un dossier

RewriteEngine on
RewriteCond %{REQUEST_URI} !doli/(.*)$
RewriteRule (.*) http://aenor-voeux.com/dev02/ [QSA,R=301,L]

Rediriger le nom de domaine

#Redirection de l'ancien nom de domaine
RewriteCond %{HTTP_HOST} ^(?:www\.)?atelier-b-attitude\.com [NC]
RewriteRule ^/?(.*) https://www.sweetcasita.fr/$1 [L,R=301]

Rediriger avec des paramètres dans l’url

RewriteCond %{QUERY_STRING} ^option=com_content&view=category&layout=blog&id=93&Itemid=618$
RewriteRule ^index\.php$ https://www.leventdessignes.fr/saison/? [L,R=301]

Autres exemples

Aénor voeux

– Créer les produits avec 2 déclinaisons  : une avec attribut format vierge et l’autre avec attribut format personnalisé
– Ajouter les règles de prix dans la fiche produit
– Ajouter la personnalisation. 1 de type fichier, 3 de type texte (personnalisation,Texte et Adresse et coordonnées)

étendre la perso à tous les produits (aen-admin/genererSQL.php):

ini_set('display_errors','on');
error_reporting(E_ALL);

define('_PS_ADMIN_DIR_', getcwd());
define('PS_ADMIN_DIR', _PS_ADMIN_DIR_); // Retro-compatibility

include(PS_ADMIN_DIR.'/../config/config.inc.php');

$products = Db::getInstance()->ExecuteS('SELECT id_product	FROM '._DB_PREFIX_.'product p');

foreach($products as $product)
{
	#image
	$sql = 'INSERT INTO '._DB_PREFIX_.'customization_field (`id_product`, `type`, `required`)
	VALUES ('.$product['id_product'].',0,0)';
	Db::getInstance()->ExecuteS($sql);
	$id_custom = Db::getInstance()->Insert_ID(); 
	$sql = 'INSERT INTO '._DB_PREFIX_.'customization_field_lang (`id_customization_field`, `id_lang`, `name`)
	VALUES ('.$id_custom.',1,"")';
	Db::getInstance()->ExecuteS($sql);
	
	#perso
	$sql = 'INSERT INTO '._DB_PREFIX_.'customization_field (`id_product`, `type`, `required`)
	VALUES ('.$product['id_product'].',1,0)';
	Db::getInstance()->ExecuteS($sql);
	$id_custom = Db::getInstance()->Insert_ID(); 
	$sql = 'INSERT INTO '._DB_PREFIX_.'customization_field_lang (`id_customization_field`, `id_lang`, `name`)
	VALUES ('.$id_custom.',1,"personnalisation")';
	Db::getInstance()->ExecuteS($sql);
	
	#Texte
	$sql = 'INSERT INTO '._DB_PREFIX_.'customization_field (`id_product`, `type`, `required`)
	VALUES ('.$product['id_product'].',1,0)';
	Db::getInstance()->ExecuteS($sql);
	$id_custom = Db::getInstance()->Insert_ID(); 
	$sql = 'INSERT INTO '._DB_PREFIX_.'customization_field_lang (`id_customization_field`, `id_lang`, `name`)
	VALUES ('.$id_custom.',1,"Texte")';
	Db::getInstance()->ExecuteS($sql);
	
	#Adresse et coordonnées
	$sql = 'INSERT INTO '._DB_PREFIX_.'customization_field (`id_product`, `type`, `required`)
	VALUES ('.$product['id_product'].',1,0)';
	Db::getInstance()->ExecuteS($sql);
	$id_custom = Db::getInstance()->Insert_ID(); 
	echo $sql = 'INSERT INTO '._DB_PREFIX_.'customization_field_lang (`id_customization_field`, `id_lang`, `name`)
	VALUES ('.$id_custom.',1,"Adresse et coordonnées")';
	Db::getInstance()->ExecuteS($sql);
}

Puis

UPDATE `avps_product` SET `customizable` = 1,`uploadable_files` = 1,`text_fields` = 3 WHERE 1 ;
UPDATE `avps_product_shop` SET `customizable` = 1,`uploadable_files` = 1,`text_fields` = 3 WHERE 1;

Pour modifier les prix de base des déclinaisons

UPDATE `avps_product_attribute` pa
INNER JOIN avps_product p ON pa.`id_product`= p.`id_product`
INNER JOIN avps_product_attribute_combination pac ON pa.`id_product_attribute`=pac.`id_product_attribute`
SET pa.price = 0.84
WHERE id_category_default IN(12,13) AND `id_attribute` IN(7,10) AND p.id_product IN (SELECT `id_product` FROM `avps_category_product` WHERE `id_category`=9 )

UPDATE `avps_product_attribute_shop` pas
INNER JOIN avps_product_attribute pa ON pas.`id_product_attribute`= pa.`id_product_attribute`
SET pas.price = pa.price

– Recopier les prix spécifiques à partir d’un produit modèle vers tous les autres (aen-admin/genererSQL.php)

## Insertion des prix spécifiques
# vierge 11 / perso 7,10
$product_modele = 5;
$product_attribute_modele = 23;
$attribute_modele = '7,10';
$sql = 'SELECT pa.id_product,pa.id_product_attribute 
		FROM `'._DB_PREFIX_.'product_attribute` pa 
		INNER JOIN '._DB_PREFIX_.'product p ON pa.`id_product`= p.`id_product` 
		INNER JOIN '._DB_PREFIX_.'product_attribute_combination pac ON pa.`id_product_attribute`=pac.`id_product_attribute` 
		WHERE id_category_default IN(12,13) AND `id_attribute` IN('.$attribute_modele.') AND p.id_product 
					 IN (SELECT `id_product` FROM `'._DB_PREFIX_.'category_product` WHERE `id_category`=9 ) 
				AND p.id_product<>'.$product_modele.'
		ORDER BY `pa`.`id_product` ASC ';
$products = Db::getInstance()->ExecuteS($sql);



foreach($products as $product)
{
	
		echo $sql = "INSERT INTO `"._DB_PREFIX_."specific_price`(`id_product`, `id_product_attribute`, `price`, `from_quantity`, `reduction`, `reduction_type`) 
					SELECT '".$product['id_product']."', '".$product['id_product_attribute']."', `price`, `from_quantity`, `reduction`, `reduction_type` 
					FROM `"._DB_PREFIX_."specific_price` 
					WHERE id_product=".$product_modele." AND id_product_attribute = ".$product_attribute_modele.";\r\n";
		
		
		//Db::getInstance()->ExecuteS($sql);
	
}

Pour le regroupement des quantités sur l’ensemble des cartes :
Modifier le calcul de la quantité dans le fichier class/Product.php

$cat_cumul = array(12,13);
$id_category_default = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT id_category_default FROM `'._DB_PREFIX_.'product` WHERE `id_product` = '.(int)($id_product));

if (in_array($id_category_default,$cat_cumul))
{
	$quantity_cumul = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT SUM(c.`quantity`) 
			FROM `'._DB_PREFIX_.'cart_product` c INNER JOIN `'._DB_PREFIX_.'product` p USING ( id_product )
			WHERE `id_category_default` IN('.implode(',',$cat_cumul).') AND `id_cart` = '.(int)($id_cart));
	$cart_quantity = $quantity_cumul ? $quantity_cumul : $cart_quantity;
}

Pour ajouter sauver les paramètres de personnalisation directement en appelant le panier et pas dans la page produit. Dans le fichier CartController.php:

$perso_rapido = Tools::getValue('perso_rapido');
if ($perso_rapido & Tools::isSubmit('submitCustomizedDatas'))
{
	/* Product pictures management */
	require_once('images.inc.php');

	$this->pictureUpload($product, $this->context->cart);
	$this->textRecord($product, $this->context->cart);
	
}

Gérer les liens, images et URL dans les templates

WordPress

<a href="<?php echo site_url('/contact/'); ?>">Contact</a>

=> http://www.pixbulledev.com/dev1/contact/

ou

<img src="<?php echo get_site_url(); ?>/logo.jpg" />

=> http://www.pixbulledev.com/dev1/logo.jpg

et pour pointer directement dans le répertoire du thème

<img src="<?php bloginfo( 'template_url' ); ?>/img/logo.png" alt="Mon logo"/>

=> http://www.pixbulledev.com/dev1/wp-content/themes/montheme1/img/logo.png

Prestashop (fichiers .tpl)

<a href="{$base_dir}/contact/">

=> http://www.pixbulledev.com/dev1/contact/

et pour pointer directement dans le répertoire du thème

<img src="{$tpl_dir}img/logo.jpg" />

ou

<img src="{$img_dir}logo.jpg" />

=> http://www.pixbulledev.com/dev1/themes/montheme1/img/logo.png

dans le même principe pour les css :

<link href="{$css_dir}style.css" rel="stylesheet" type="text/css" media="all" />

=> http://www.pixbulledev.com/dev1/themes/montheme1/css/style.css

Swan

<a href="<?php echo site_url('/contact/'); ?>">Contact</a>

=> http://www.pixbulledev.com/dev1/contact/

robot.txt

De base :

User-agent: *
Allow: /

Pour tout bloquer :

User-agent: *
Disallow: /

Pour wordpress

User-agent: *
Disallow: /wp-login.php
Disallow: /wp-admin/
Disallow: /wp-includes/

Personnaliser le logo de connexion de WordPress

Dans le fichier functions.php ajouter :

Pour changer le logo :

function my_login_logo() { ?>
    <style type="text/css">
        body.login div#login h1 a {
            background-image: url(<?php echo get_stylesheet_directory_uri(); ?>/images/site-login-logo.png);
            padding-bottom: 30px;
        }
    </style>
<?php }
add_action( 'login_enqueue_scripts', 'my_login_logo' );

Pour changer le lien et le title du lien :

function my_login_logo_url() {
    return home_url();
}
add_filter( 'login_headerurl', 'my_login_logo_url' );

function my_login_logo_url_title() {
    return 'Your Site Name and Info';
}
add_filter( 'login_headertitle', 'my_login_logo_url_title' );

voir plus : http://codex.wordpress.org/Customizing_the_Login_Form