Publié le Laisser un commentaire

Slider uniquement en CSS

E-loou slider css only
E-loou slider css only

Le slider est un élément html très souvent utilisé afin de mettre en valeur des actualités ou des annonces.

Si vous utilisez un CMS il existe un bon nombre de plugin vous permettant de mettre en place un slider, mais la plupart des plugins se servent de la technologie javascript afin d’animer le slider.

Pourquoi un slider en css ?

Lorsque l’on pense à l’optimisation de son site en terme de vitesse d’affichage, il est très souvent recommandé d’éviter au maximum les scripts javascript qui prennent du temps à se charger et à s’exécuter, selon le système d’exploitation, le navigateur, l’ordinateur ou le téléphone utilisés.

C’est pourquoi, un simple slider faisant appelle à du code CSS peut être utile, deplus il est très facile à mettre en œuvre.

Slider

Tout d’abord, on créée une DIV qui contiendra notre slider.

<div class="slider">
</div>

Côté CSS, on fixe la taille de la DIV, on la centre, on lui applique une couleur de fond et on cache tout ce qui pourrait s’afficher à l’extérieur.

.slider
{ width: 1000px;  /*longueur*/
  margin: 0 auto; /*centrage*/
  background: #ccc; /*fond de couleur*/
  overflow: hidden; /*cache*/
}

Ensuite, il suffit de créer une seconde DIV avec le contenu que nous allons animer en CSS.

<div class="slider">
  <div class="slider-content">
    <img src="https://e-loou.com/blog/wp-content/uploads/2021/12/logo_e-loou.svg" class="logo">
  </div>
</div>

Un peu de CSS pour cette DIV

.slider-content
{ position:relative; /*affichage en fonction de son conteneur*/
  left:1000px;  /*position d'affichage de départ*/
  animation: 4s slidezoom infinite; /*animation*/
}
.logo {width: 100px;} /*taille pour le SVG*/

La règle animation se décompose comme suit : durée, nom de l’animation, boucle.
vous pourriez l’écrire ainsi

animation-duration: 4s;
animation-name: slidezoom;
animation-iteration-count: infinite;

Dans cet exemple, nous utiliserons 2 types d’animations possibles en CSS : slide et zoom (scale)
il en existe pleins d’autres qui vous permettront d’enrichir l’aspect visuel de vos slider.

Animation Slide

Pour appliquer un effet de slider à la DIV, il suffit de lui appliquer une position de départ et une position de fin, grâce à la règle @keyframes

@keyframes slidezoom {
  0% {left: 1000px;} /*position début*/
  100% {left: -100px;} /*position fin*/
}

Le SVG faisant 100px de largeur, il faut enlever cette taille à la position de fin afin de voir l’image disparaitre. N’hésitez pas à changer les valeurs de positions.

Animation Zoom, règle scale()

Pour faire un zoom, sur l’image, dans cet example un zoom in, vous pouvez utiliser la règle scale(longueur,hauteur)

@keyframes slidezoom {
  0% {left: 1000px; transform: scale(1, 1);}
  50% {transform: scale(0.5, 0)}
  100% {left: -100px; transform: scale(1, 1.5)}
}

Code complet

<div class="slider">
  <div class="slider-content">
    <img src="https://e-loou.com/blog/wp-content/uploads/2021/12/logo_e-loou.svg">
  </div>
</div>
*{margin: 0;}

.slider
{width: 1000px; overflow: hidden; margin:0 auto; background:#ccc;}

.slider-content
{position:relative; left:1000px; animation: 4s slidezoom infinite;}

.logo {width: 100px;}

@keyframes slidezoom {
  0% {left: 1000px; transform: scale(1, 1);}
  50% {transform: scale(0.5, 0)}
  100% {left: -100px; transform: scale(1, 1.5)}
}

Résultat

Publié le Laisser un commentaire

Woocommerce: Changer le texte du bouton ‘Ajouter au panier’ des produits apparentés.

Dans cet article nous allons voir comment changer le texte du bouton « ajouter au panier » des produits apparentés.

Pour commencer, il faut créer une fonction qui utilisera un hook, ce qui permettra d’injecter votre texte à la place de celui mis en place par Woocommerce.

Dans votre fichier functions.php, créez votre fonction puis grâce aux hooks, ajoutez la via la fonction add_filter.

Ce changement se fera sur tout les produits apparentés. Il suffira de remplacer ‘Votre nouveau texte’ pour faire la modification sur ce  bouton.

add_filter( 'woocommerce_product_add_to_cart_text', 'eloou_cart_button_text' );

function eloou_cart_button_text() {
    return 'Votre nouveau texte';
}

Changer le texte pour un produit spécifique

Il est aussi possible de changer le texte selon le produit, si l’utilisateur est en ligne ou si l’utilisateur a un certain rôle.

Tout est possible.

Je vais vous donner un exemple pour afficher un texte différent si mon produit, qui a pour id ‘2494’, est affiché dans les produits apparentés.

Ligne 5 et 6

Je vais chercher l’ID du produit

Ligne 7

Puis je déclare l’ID du produit qui m’intéresse.

Ligne 9

Je retourne le nouveau texte à condition que l’ID de mon produit soit égal à celui du produit qu’on observe, sinon il retournera un texte par défaut.

    add_filter( 'woocommerce_product_add_to_cart_text', 'eloou_cart_button_text' );
    
    function eloou_cart_button_text() {

        global $product;
        $product_id = $product->id;
        $productId = 2494;

        return ($product_id == $productId ? 'Votre nouveau texte' : 'Un texte par défaut.');
        
    }

Pour allez plus loin

Vous vous demandez peu être s’il est possible d’ajouter une interface dans l’admin pour modifier votre texte sans devoir s’aventurer dans le code?

Et bien oui!
Mais nous verrons ça dans un prochain article.

Maintenant c’est à vous de jouer!

Publié le Laisser un commentaire

Woocommerce: Changer le prix d’un produit en fonction d’un client

woocommerce-user-meta-date-price-change
woocommerce-user-meta-date-price-change

Dans cet article nous allons voir comment changer le prix d’un produit en fonction d’un champs personnalisé, aussi appelés user meta data.

Pour commencer, il faut créer une fonction impactant le prix de l’article

Dans votre fichier functions.php, créez votre fonction puis grâce aux hooks, ajoutez la via la fonction add_filter.

    // Un changement de prix gobal
    function eloou_price( $price, $product ) {
     return $price;
    }
    
    add_filter( 'woocommerce_product_get_price', 'eloou_price', 10, 2 );
    add_filter( 'woocommerce_product_get_regular_price', 'eloou_price', 10, 2 );
    add_filter( 'woocommerce_product_get_sale_price', 'eloou_price', 10, 2 );

Il faut d’abord vérifier que l’utilisateur soit connecté, puis récupérer le champs personnalisé à cibler

if ( is_user_logged_in() ) {
    $user = wp_get_current_user(); 
    $meta = get_the_author_meta( 'votre_custom_meta', $user->ID );
}

Changer le prix de tous les produits

On peut maintenant changer le prix grâce à une formule mathématique, en créant une nouvelle variable $newPrice.

Ligne 7
Le prix changera uniquement si le meta de l’utilisateur existent.

function eloou_price( $price, $product ) {
    if ( is_user_logged_in() ) {
        $user = wp_get_current_user();
        $meta = get_the_author_meta( 'votre_custom_meta', $user->ID );
        $newPrice = 0.50;
        // on vérifie que le meta existe
        if ( $meta ) {
            $price = $price * $newPrice;
        }
    }
    return $price;
}

Changer le prix d'un seul produit

Pour viser un produit en particulier, il n’ y a rien de plus simple!

Chaque produit possède un ID. qui se trouve dans l’url du produit de votre administration :
/wp-admin/post.php?post=2494&action=edit&classic-editor

Pour mon exemple, je choisis le produit ayant l’id = 2494.

Ligne 7
Je vais chercher l’ID du produit en me servant d’une fonction Woocommerce.
Ligne 6
Puis je déclare l’ID du produit qui m’intéresse.
Ligne 9

Je rajoute à ma condition: Si le méta existe, et si c’est le produit avec l’ID 2494, alors  on change le prix.

function eloou_price( $price, $product ) {
    if ( is_user_logged_in() ) {
        $user = wp_get_current_user();
        $meta = get_the_author_meta( 'votre_custom_meta', $user->ID ); 
        $newPrice = 0.50; // votre réduction
        $product_id = 2494; // l'ID de votre produit
        $productId = $product->get_id();

        if ( $meta && $product_id == $productId ) {
            $price = $price * $newPrice;
        }
    }
    return $price;
}

Pour allez plus loin

Vous vous demandez peu être s’il est possible d’ajouter une interface dans l’admin pour modifier les produits,  les calculs et peut être même les métas datas ? 
Et bien oui!
Mais nous verrons ça dans un prochain article.

Maintenant c’est à vous de jouer!

Publié le Laisser un commentaire

If Else sur Outlook

if-else-outlook
if-else-outlook
Lors de vos créations de newsletter et d’emailing, il est très fréquent d’être confronté aux problèmes d’affichage / interprétations d’Outlook ou de Windows Mail.
 
Ainsi, vous aurez sûrement besoin d’utiliser le IF pour Outlook. On trouve énormément de documentation sur ce dernier, beaucoup moins sur le ELSE.

IF pour outlook

Vous pouvez cibler le logiciel de Microsoft, en ajoutant le code if mso :

<!--[if mso]>
    Votre code outlook
<![endif]-->

Vous pouvez également cibler certaines version d’Outlook

<!--[if plage-de-version mso Version]>
    Votre code outlook
<![endif]-->

Plage-de-version peut prendre 4 syntaxes différentes:
gte : Supérieure ou égale à Version (greater than or equal).
lt : Inférieure à  Version (lesser than).
gt : Supérieure à  Version (greater than).
lte : Inférieure ou égale à Version (less than or equal).

Listes des versions de Outlook :
Outlook 2000 – Version 9
Outlook 2002 – Version 10
Outlook 2003 – Version 11
Outlook 2007 – Version 12
Outlook 2010 – Version 14
Outlook 2013 – Version 15
Outlook 2016 – Version 16

<!--[if gte mso 9]>
    Votre code outlook
<![endif]-->

ELSE pour outlook

Le code ci-dessus vous permet de déclarer qu’une partie de votre code est uniquement pour Outlook/Microsoft.

Vous pourriez avoir besoin de faire un ELSE à votre IF.

Pour ce faire, il suffit d’ouvrir le commentaire après le code if !mso (noté le ! avant le mso).

 <!--[if mso]>
     contenu Outlook 
 <![endif]-->
 <!--[if !mso]> <!---->
     contenu Non-outlook
 <!-- <![endif]-->

A la place de votre ELSE, vous pourriez tout simplement ajouter la class mso-hide:all

Cette class permet de cacher du contenu sous Outlook / Microsoft et de l’afficher sur les autres plateformes/logiciels

 <!--[if mso]>
     contenu Outlook 
     <div class="mso-hide:all">
 <![endif]-->
    contenu non-outlook
<!--[if mso]></div><![endif]-->
Publié le Laisser un commentaire

Récupérer une variable dans Contact Form 7

contact form 7
contact form 7

Pour plusieurs raisons, vous aurez besoin de récupérer des variables et de les insérer dans vos formulaires de contact sur Contact Form 7.

Dans l’exemple ci-dessous, je vais vous montrer comment récupérer la page d’origine du click sur le bouton contact provenant d’un autre site.

Envoyer la valeur dans votre formulaire

Pour commencer il faut envoyer un POST via votre lien sur votre bouton.
Admettons une page test.htm avec un bouton contact.
Il faut envoyer via le href du lien, les données que vous souhaitez récupérer en GET sur votre formulaire.

<html>
	<head>
	<tilte>Test</title>
	</head>
	<body>
	<p>Ma page test</p>
	<a href="https://url_de_votre_site/page_contact?from=accueil">Nous contacter</a>
	</body>
</html>

Récupérer la valeur dans votre formulaire

Au click sur le lien, l’information ?from=accueil est envoyée et conservée par votre navigateur.
Pour récupérer et afficher cette information sur votre formulaire, vous aurez besoin de créer une fonction dans votre fichier functions.php de votre thème, car vous ne pouvez pas insérer directement du code php dans votre formulaire.

/* Add source to Contact Form */
/* ---------------------------------- */
function provenance() {
	// on déclare une source par défaut
	$defautprovenance = "Blog";
	// on récupérer la valeur de from du POST ?from=accueil
    $var=$_GET['from'];
	// Si le POST est vide alors on affiche la valeur par défaut
	if (empty($_GET)) {
    	return $defautprovenance;
	}
	// Sinon on affiche la valeur récupérée
	else {return $var;}
}
// on créée le shortcode pour CF7
add_shortcode('provenance', 'provenance');

Afficher la valeur dans votre formulaire

Ci-dessus, nous avons créé un shortcode [provenance] que nous pouvons appeler à différent endroit.

Quelques exemples :

<!-- Récupérer la valeur dans un input et le mettre en caché : -->
<input type="hidden" name="provenance" value="[provenance]"></input>
<!-- Afficher la valeur dans un bloc text -->
<textarea name="your-message" cols="40" rows="10">[provenance]</textarea>

Enfin, vous pouvez récupérer cette valeur et l’envoyer dans votre email

De : [your-name] <[your-email]>
Objet : [your-subject]
Source : [provenance]
Corps du message :
[your-message]
Publié le Laisser un commentaire

Rendre une vidéo Youtube responsive

Lors de l’intégration d’une vidéo youtube, vous avez dû intégrer une <iframe>
Les iframe ont obligatoirement des largeur et hauteur définies.
Sans ajout de code CSS, vous ne pourrez donc pas avoir de vidéo responsive.

Voici le code de l’iframe que vous récuperez en cliquant sous la vidéo youtube, sur partager puis sur intégrer

<iframe title="YouTube video player" src="https://www.youtube.com/embed/xxxxxxxx" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe>

Afin de rendre responsive cette vidéo, il faut encapsuler l’iframe dans une DIV et lui assigner une class CSS, nommée ci-dessous .video-container

<div class="video-container">
    <iframe title="YouTube video player" src="https://www.youtube.com/embed/xxxxxxxx" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
</div>

Ajoutez les styles css

pour rendre la vidéo youtube responsive, il vous suffit d’ajouter ces règles CSS à votre feuille de style en précisant le point de rupture pour les mobiles

@media (max-width:478px;) {
    .video-container {
    position: relative;
    padding-bottom: 56.25%;
    height: 0;
    overflow: hidden;
    }
    .video-container iframe,
    .video-container object,
    .video-container embed {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    }
}
16:9 aspect ratio : 9 / 16 * 100% = 56.25%;
4:3 aspect ratio : 3 / 4 * 100% = 75%;
1:1 aspect ratio : 1 / 1 * 100% = 100%.

Vous noterez l’utilisation de la règle « padding-bottom:56.25% », combiné à une hauteur à 0.
Imaginons un carré de 200x200px a qui ont enlève sa hauteur. Alors la hauteur de l’élément carré sera gérée par le padding-bottom.
Afin de transformer notre carré en rectangle ayant un aspect 16/9ème, nous aurons besoin d’un padding à 56.25%