Article SEO SEO Technique

Comment installer Shopify sur PC : guide complet pour Windows et Mac

Introduction

Shopify est une plateforme de commerce électronique très populaire qui permet de créer et de gérer des boutiques en ligne sans compétences techniques avancées. Lorsque l’on cherche “comment installer Shopify sur PC”, il est essentiel de comprendre une chose fondamentale : Shopify n’est pas un logiciel classique à installer sur Windows ou macOS comme un programme .exe ou .dmg. Il s’agit avant tout d’un service web accessible via un navigateur.

Concrètement, pour utiliser Shopify sur un ordinateur de bureau ou un ordinateur portable, vous allez :

  • vous connecter à l’interface d’administration Shopify depuis un navigateur web moderne (Chrome, Edge, Firefox, Safari, etc.) ;
  • éventuellement installer Shopify comme application web (PWA) via votre navigateur pour l’avoir sous forme d’icône sur le bureau, tout en restant une interface web ;
  • utiliser, si besoin, les applications mobiles officielles (notamment Shopify POS) sur des appareils iOS ou Android, mais pas en installation native sur Windows ou macOS.

Ce guide complet va vous expliquer :

  • comment utiliser Shopify sur votre PC avec un navigateur ;
  • comment “installer” Shopify comme une application de bureau via les fonctionnalités Chrome / Edge ;
  • ce qu’il est possible (et impossible) de faire avec Shopify POS sur ordinateur ;
  • la différence entre installer Shopify pour un marchand et installer Shopify CLI pour un développeur ;
  • les bonnes pratiques pour optimiser votre boutique depuis votre PC.

Concepts clés à comprendre avant d’“installer” Shopify sur PC

Avant d’entrer dans les étapes pratiques, il est important de clarifier quelques notions pour éviter les erreurs fréquentes.

  • Shopify en ligne (interface d’administration)
    La plateforme principale de Shopify est une application web. Pour créer, configurer et gérer votre boutique en ligne, vous vous connectez simplement à votre compte via un navigateur. Vous n’avez rien à installer sur votre PC pour accéder à l’interface d’administration :
    • vous créez un compte Shopify ;
    • vous vous connectez à l’URL d’administration de votre boutique ;
    • vous gérez vos produits, commandes, clients, paramètres, etc. directement en ligne.
  • Pas d’application de bureau Shopify native pour Windows / macOS
    À l’heure actuelle, il n’existe pas d’application de bureau officielle Shopify pour Windows ou macOS permettant de gérer toute votre boutique comme sur les applications mobiles. Tout se fait via :
    • votre navigateur web sur PC ou Mac ;
    • vos applications mobiles Shopify dédiées (sur smartphones et tablettes).
  • “Installer Shopify sur PC” = accès web + éventuelle installation comme application (PWA)
    Beaucoup de tutoriels parlent “d’installer Shopify sur PC” alors qu’il s’agit en réalité de :
    • se connecter à Shopify via le navigateur ;
    • utiliser la fonction “Installer ce site en tant qu’application” de Chrome ou Edge pour créer un raccourci façon application.
    Cette méthode ne crée pas un logiciel natif, mais un conteneur de navigateur dédié qui ouvre Shopify dans une fenêtre sans barre d’adresse classique, avec une icône sur le bureau.
  • Shopify POS
    Shopify POS (Point of Sale) est l’application de caisse pour encaisser les paiements en magasin. Elle est conçue pour iOS et Android (smartphones et tablettes). Elle ne s’installe pas nativement sur Windows ou macOS. Pour un PC, il faut utiliser soit :
    • l’interface d’administration Shopify pour suivre les ventes et le stock ;
    • un système de caisse compatible avec Shopify et pensé pour PC, fourni par des éditeurs tiers.
  • Compte Shopify
    Pour exploiter Shopify, vous devez créer un compte marchand. Shopify propose plusieurs formules payantes, avec souvent une période d’essai limitée à l’inscription. Vous choisissez ensuite l’abonnement adapté à votre activité (offre Starter, Basic, Shopify, Advanced, ou plan spécifique pour les grands comptes).
  • Shopify CLI (pour les développeurs)
    Shopify CLI est un outil en ligne de commande destiné aux développeurs pour créer des thèmes ou des applications Shopify. Il s’installe sur PC (Windows, macOS, Linux) via Node.js et npm, mais cela ne concerne pas la plupart des marchands débutants. Ne confondez pas “installer Shopify” pour gérer votre boutique et “installer Shopify CLI” pour développer sur Shopify.

En comprenant ces concepts, vous évitez les pièges courants et choisissez la bonne approche pour utiliser Shopify sur votre ordinateur.

Comment utiliser Shopify sur PC via un navigateur web

C’est la méthode principale, officielle et recommandée pour gérer votre boutique depuis un ordinateur.

Étape 1 : créer votre compte Shopify

Si vous n’avez pas encore de compte :

  • allez sur le site officiel de Shopify ;
  • cliquez sur le bouton d’inscription pour démarrer votre boutique ;
  • renseignez votre adresse e‑mail et choisissez un mot de passe sécurisé ;
  • indiquez le nom de votre boutique et répondez aux questions de configuration de base.

Une fois ces étapes réalisées, vous accédez à votre interface d’administration Shopify directement dans votre navigateur.

Étape 2 : se connecter à Shopify depuis un PC Windows ou Mac

Sur PC ou Mac, la procédure est identique :

  • ouvrez un navigateur compatible (Chrome, Edge, Firefox, Safari, etc.) ;
  • saisissez l’URL d’administration de votre boutique ou passez par la page de connexion Shopify ;
  • entrez vos identifiants (e‑mail et mot de passe) et, si activé, le code de vérification en deux étapes ;
  • accédez à votre tableau de bord pour gérer produits, commandes, clients, marketing, etc.

Cette méthode fonctionne aussi bien sur :

  • Windows 10 / 11 et versions plus récentes ;
  • macOS (versions prises en charge par les navigateurs modernes) ;
  • la plupart des distributions Linux équipées d’un navigateur moderne.

Comment “installer” Shopify sur PC comme une application (PWA)

Si vous souhaitez avoir Shopify sous forme d’icône sur votre bureau et l’ouvrir dans une fenêtre dédiée, vous pouvez utiliser les fonctionnalités d’“installation” de site comme application proposées par certains navigateurs.

Installation de Shopify comme application sur Google Chrome

Sur Windows ou macOS avec Chrome :

  • ouvrez Google Chrome ;
  • connectez-vous à l’interface d’administration de votre boutique Shopify ;
  • cliquez sur le menu (trois points verticaux en haut à droite) ;
  • choisissez l’option du type “Installer la page comme application” ou “Installer” (selon la langue et la version de Chrome) ;
  • validez l’installation lorsque Chrome vous le propose.

Chrome crée alors :

  • une icône de Shopify (ou du nom de votre boutique) sur votre bureau ou dans le menu des applications ;
  • une fenêtre dédiée qui ressemble à une application native, mais qui est en réalité un navigateur allégé.

Installation de Shopify comme application sur Microsoft Edge

Sur Windows avec Microsoft Edge :

  • ouvrez Microsoft Edge ;
  • connectez-vous à l’interface d’administration de votre boutique Shopify ;
  • cliquez sur le menu (trois points horizontaux en haut à droite) ;
  • allez dans “Applications” ou “Apps” ;
  • cliquez sur “Installer ce site en tant qu’application” ;
  • donnez un nom à l’application (par exemple “Shopify Admin”) et validez.

Vous obtiendrez ainsi une application de type PWA :

  • avec une icône sur votre bureau ou votre barre des tâches ;
  • qui s’ouvre dans une fenêtre indépendante, sans barre d’onglets ;
  • mais qui reste techniquement un conteneur de navigateur, et non un logiciel Windows natif.

Important : vous n’êtes pas obligé d’utiliser Microsoft Edge. Les navigateurs basés sur Chromium comme Chrome offrent aussi cette fonctionnalité. L’idée est d’améliorer votre confort d’utilisation, pas d’ajouter un vrai logiciel installé au système.

Shopify POS et PC : ce qui est possible (et ce qui ne l’est pas)

Shopify POS n’est pas disponible en application native sur Windows ou macOS

Une confusion fréquente consiste à penser que l’on peut “installer Shopify POS sur un PC Windows comme un logiciel de caisse natif”. En réalité :

  • l’application officielle Shopify POS est développée pour iOS et Android ;
  • elle ne s’installe pas directement sur Windows ou macOS comme un programme classique ;
  • Shopify ne propose pas, à ce jour, d’application POS native pour ordinateurs de bureau.

Vous pouvez donc :

  • utiliser un iPad, une tablette Android ou un smartphone compatible pour encaisser les paiements ;
  • gérer l’administration (catalogue, stock, rapports) depuis votre PC ou votre Mac via le navigateur ;
  • si vous souhaitez absolument un POS sur PC, recourir à des solutions tierces compatibles avec Shopify, conçues pour tourner sur Windows ou dans un navigateur.

Compatibilité et alternatives pour un système de caisse sur PC

Si votre objectif est d’utiliser un système de caisse sur un PC Windows avec votre boutique Shopify, plusieurs options existent :

  • opter pour un POS web compatible Shopify qui fonctionne dans le navigateur (donc sur Windows, macOS, Linux) ;
  • utiliser un POS tiers natif Windows qui intègre Shopify via une application ou une API ;
  • dédier une tablette iOS ou Android à la caisse et conserver le PC pour l’administration, le back‑office et la comptabilité.

Dans tous les cas, la gestion de votre boutique (produits, commandes, clients, marketing, etc.) restera accessible depuis votre navigateur sur PC.

Différence entre “installer Shopify” et “installer Shopify CLI”

Autre confusion fréquente : certains guides parlent d’installer Shopify sur PC en expliquant en réalité l’installation de Shopify CLI.

  • Installer Shopify (pour un marchand)
    Pour un commerçant ou un entrepreneur qui veut créer sa boutique :
    • vous créez un compte Shopify en ligne ;
    • vous vous connectez via le navigateur ou via l’application web installée comme PWA ;
    • vous n’installez pas de logiciel lourd sur votre PC.
  • Installer Shopify CLI (pour un développeur)
    Shopify CLI est un outil de développement qui permet de :
    • créer et tester des thèmes Shopify en local ;
    • développer des applications pour Shopify ;
    • interagir avec l’API Shopify via la ligne de commande.
    Pour l’installer sur Windows, les grandes étapes sont :
    • installer Git sur votre machine ;
    • installer Node.js (avec npm, le gestionnaire de paquets) ;
    • installer Shopify CLI via une commande npm (par exemple : npm install -g @shopify/cli @shopify/theme) ;
    • vérifier l’installation avec une commande de type shopify version.
    Cette procédure s’adresse aux développeurs, pas aux marchands qui souhaitent simplement gérer leur boutique.

Bonnes pratiques pour gérer Shopify depuis un PC

Une fois que vous accédez à Shopify depuis votre ordinateur, plusieurs bonnes pratiques peuvent améliorer vos performances et l’expérience de vos visiteurs.

Optimiser le contenu de vos fiches produits

  • Descriptions détaillées et structurées : rédigez des textes clairs, précis, qui répondent aux questions fréquentes (caractéristiques, utilisation, bénéfices, entretien, taille, matière…).
  • Mots-clés pertinents : intégrez naturellement les expressions que vos clients sont susceptibles de taper (“acheter chaussures de running femme”, “tapis de yoga antidérapant”, etc.).
  • Mise en forme lisible : utilisez des sous‑titres, listes à puces et paragraphes courts pour faciliter la lecture.
  • Traductions et variantes linguistiques : si vous vendez à l’international, tirez parti des fonctionnalités multilingues et des applications de traduction.

Améliorer la structure de votre boutique

  • Catégories logiques : organisez vos produits par collections claires (par type, usage, saison, genre, etc.).
  • Arborescence simple : limitez la profondeur de navigation pour que l’utilisateur trouve un produit en quelques clics.
  • Menus et filtres : configurez des menus principaux compréhensibles et, si possible, des filtres par taille, couleur, prix, marque, etc.
  • Pages clés : soignez les pages “À propos”, “Contact”, “FAQ” et “Conditions générales” pour rassurer vos clients.

Créer du contenu de qualité pour le SEO

  • Blog et articles : utilisez le blog intégré à Shopify pour publier des contenus informatifs (guides, tutoriels, comparatifs, actualités) qui répondent aux questions de vos prospects.
  • Optimisation des titres et balises meta : pour chaque page et produit, renseignez des titres (balise ) et méta‑descriptions attractifs, incluant vos mots‑clés.</li> <li><strong>URLs lisibles</strong> : personnalisez les URLs pour qu’elles soient compréhensibles (par exemple : /collections/chaussures-running-femme).</li> <li><strong>Maillage interne</strong> : faites des liens entre vos pages (produits liés, articles de blog vers produits, etc.) pour améliorer la navigation et le référencement.</li> </ul> <h3 id="securite-de-votre-compte-shopify">Sécurité de votre compte Shopify</h3> <ul> <li><strong>Mot de passe fort</strong> : utilisez une combinaison complexe (longueur, majuscules, minuscules, chiffres, symboles) et évitez de réutiliser le même mot de passe ailleurs.</li> <li><strong>Authentification à deux facteurs</strong> : activez la double authentification pour renforcer la sécurité de votre compte marchand.</li> <li><strong>Gestion des accès</strong> : créez des comptes employés avec des droits limités pour vos collaborateurs, plutôt que de partager vos identifiants.</li> <li><strong>Vérification régulière</strong> : surveillez l’activité de votre compte et les connexions inhabituelles.</li> </ul> <h2 id="outils-et-ressources-utiles-pour-optimiser-shopify-sur-pc">Outils et ressources utiles pour optimiser Shopify sur PC</h2> <p>Depuis votre ordinateur, vous pouvez connecter votre boutique Shopify à de nombreux outils professionnels afin d’améliorer votre visibilité, analyser vos données et optimiser vos conversions.</p> <ul> <li> <strong>Google Search Console</strong><br> Permet de : <ul> <li>suivre l’indexation de vos pages dans les résultats de recherche ;</li> <li>identifier les mots-clés sur lesquels votre site apparaît ;</li> <li>repérer les erreurs techniques (pages introuvables, problèmes mobiles, etc.).</li> </ul> </li> <li> <strong>Google Analytics (ou équivalent)</strong><br> En connectant Google Analytics à votre boutique, vous pouvez : <ul> <li>analyser le trafic (sources de visites, pays, appareils) ;</li> <li>comprendre le comportement des visiteurs (pages vues, temps passé, taux de rebond) ;</li> <li>suivre les conversions et le chiffre d’affaires généré par vos différentes campagnes.</li> </ul> </li> <li> <strong>Outils de conception graphique</strong><br> Des logiciels comme Adobe Photoshop, Illustrator, ou des solutions en ligne comme Canva vous aident à : <ul> <li>créer des visuels produits professionnels ;</li> <li>concevoir des bannières, sliders et visuels de campagnes ;</li> <li>garder une identité visuelle cohérente sur l’ensemble de votre boutique.</li> </ul> </li> <li> <strong>Outils de recherche de mots-clés</strong><br> Des plateformes spécialisées vous permettent de : <ul> <li>identifier les mots-clés recherchés par votre audience ;</li> <li>analyser la concurrence sur ces requêtes ;</li> <li>définir une stratégie de contenu alignée sur le comportement de recherche réel des internautes.</li> </ul> </li> <li> <strong>Applications de la boutique Shopify</strong><br> La boutique d’applications Shopify propose des milliers d’extensions pour : <ul> <li>le marketing et l’e‑mailing ;</li> <li>la gestion des avis clients ;</li> <li>l’optimisation du panier et de l’upsell ;</li> <li>la logistique et la gestion des stocks ;</li> <li>le multilingue et la multi‑devise.</li> </ul> Toutes ces applications se gèrent facilement depuis votre interface d’administration sur PC. </li> </ul> <h2 id="faq-utilisation-et-installation-de-shopify-sur-pc">FAQ – Utilisation et “installation” de Shopify sur PC</h2> <ul> <li> <strong>Q : Dois‑je payer pour utiliser Shopify ?</strong><br> R : Oui. Shopify propose plusieurs <strong>plans tarifaires mensuels</strong> adaptés à la taille et aux besoins de votre activité. Il existe généralement une <strong>période d’essai</strong> limitée lors de la création d’une nouvelle boutique, mais à l’issue de cette période, vous devrez choisir une formule payante pour continuer à vendre. </li> <li> <strong>Q : Puis‑je installer Shopify comme un logiciel sur mon PC Windows ?</strong><br> R : Non. Shopify ne se présente pas comme un logiciel Windows classique à installer. Vous utilisez Shopify principalement via un <strong>navigateur web</strong>. En revanche, vous pouvez <strong>installer l’interface d’administration comme application web (PWA)</strong> via Chrome ou Edge, ce qui crée une icône et une fenêtre dédiée, mais cela reste une application web. </li> <li> <strong>Q : Comment puis‑je installer un système de caisse connecté à Shopify sur mon ordinateur ?</strong><br> R : L’application officielle <strong>Shopify POS</strong> fonctionne sur <strong>iOS et Android</strong>, mais pas en natif sur Windows ou macOS. Pour un ordinateur de bureau, vous pouvez : <ul> <li>utiliser un POS web tiers compatible avec Shopify depuis votre navigateur ;</li> <li>ou conserver un iPad / une tablette Android pour l’encaissement en magasin et utiliser votre PC pour l’administration, les rapports et la gestion du catalogue.</li> </ul> </li> <li> <strong>Q : Est‑ce que Shopify est compatible avec Windows ?</strong><br> R : Oui. <strong>Shopify fonctionne parfaitement sur Windows</strong> via les navigateurs modernes comme Chrome, Edge ou Firefox. Vous pouvez aussi l’utiliser sur macOS et Linux. L’important est de disposer d’un navigateur à jour et d’une connexion internet stable. </li> <li> <strong>Q : Puis‑je utiliser plusieurs appareils avec mon compte Shopify ?</strong><br> R : Oui. Vous pouvez vous connecter à votre boutique depuis <strong>plusieurs appareils</strong> : PC, Mac, smartphone, tablette. Vous pouvez également créer des comptes employés avec des droits adaptés pour vos collaborateurs, afin qu’ils puissent gérer les commandes, le support ou l’administration selon leurs besoins. </li> <li> <strong>Q : Existe‑t‑il une version totalement gratuite de Shopify ?</strong><br> R : Shopify est une <strong>plateforme payante</strong>. Il peut exister des offres promotionnelles ou des périodes d’essai, mais l’usage continu de la plateforme pour vendre en ligne nécessite un <strong>abonnement mensuel</strong>. Vérifiez les tarifs et les offres en vigueur directement sur le site officiel de Shopify. </li> <li> <strong>Q : Ai‑je besoin de Shopify CLI pour gérer ma boutique depuis mon PC ?</strong><br> R : Non. Shopify CLI est réservé principalement aux <strong>développeurs</strong> qui créent des thèmes ou des applications sur mesure. Pour un usage classique de marchand (ajouter des produits, traiter des commandes, paramétrer des moyens de paiement), l’interface d’administration dans le navigateur est largement suffisante. </li> <li> <strong>Q : Puis‑je gérer toute ma boutique Shopify uniquement depuis mon PC ?</strong><br> R : Dans la grande majorité des cas, oui. Vous pouvez créer vos produits, gérer vos commandes, configurer les moyens de paiement, personnaliser votre thème, installer des applications et analyser vos performances, directement depuis votre ordinateur, via le navigateur ou l’application web installée comme PWA. L’usage d’un smartphone ou d’une tablette est surtout utile pour la mobilité et pour Shopify POS. </li> </ul> <h2 id="conclusion-la-bonne-facon-d-installer-shopify-sur-votre-pc">Conclusion : la bonne façon d’“installer” Shopify sur votre PC</h2> <p>Pour résumer, “installer Shopify sur PC” signifie avant tout :</p> <ul> <li>créer un compte Shopify et vous connecter à l’interface d’administration via un navigateur ;</li> <li>éventuellement installer l’interface comme <strong>application web (PWA)</strong> via Chrome ou Edge pour un accès plus confortable ;</li> <li>comprendre que <strong>Shopify POS n’est pas une application native pour Windows</strong> et nécessite un appareil iOS ou Android, ou l’usage de solutions de caisse tierces sur PC.</li> </ul> <p>En appliquant les bonnes pratiques décrites dans ce guide – optimisation du contenu, structure claire de la boutique, outils d’analyse et sécurité renforcée – vous exploiterez au mieux Shopify depuis votre ordinateur, tout en offrant une expérience fluide et professionnelle à vos clients.</p> </div> <!-- CTA Section --> <div class="mt-12 pt-8 border-t border-gray-200"> <div class="bg-gradient-to-r from-purple-600 to-blue-600 rounded-xl p-8 text-center text-white"> <h3 class="text-2xl font-bold mb-4">Besoin d'aide avec votre SEO ?</h3> <p class="mb-6 text-purple-100">Notre équipe d'experts peut vous aider à optimiser votre site e-commerce</p> <div class="flex flex-col sm:flex-row gap-4 justify-center"> <a href="/seo-ecommerce" class="bg-white text-purple-600 px-8 py-3 rounded-lg font-semibold hover:bg-purple-50 transition inline-block"> Découvrir nos services SEO </a> <a href="/#contact" class="bg-purple-800 text-white px-8 py-3 rounded-lg font-semibold hover:bg-purple-900 transition inline-block"> Nous contacter </a> </div> </div> </div> </article> <!-- Section Commentaires --> <div class="mt-12 max-w-4xl mx-auto bg-white rounded-2xl shadow-xl p-8 md:p-12"> <h2 class="text-3xl font-bold text-gray-900 mb-6 flex items-center gap-3"> <i class="fas fa-comments text-purple-600"></i> Commentaires </h2> <!-- Liste des commentaires approuvés --> <div id="comments-list" class="mb-8 space-y-6"> <!-- Les commentaires approuvés seront chargés ici via JavaScript --> </div> <!-- Formulaire de commentaire --> <div class="border-t border-gray-200 pt-8"> <h3 class="text-xl font-semibold text-gray-900 mb-4">Laisser un commentaire</h3> <form id="comment-form" class="space-y-4"> <input type="hidden" id="article-slug" value="comment-installer-shopify-sur-pc-guide-complet-pour-windows-et-mac"> <div class="grid md:grid-cols-2 gap-4"> <div> <label for="comment-name" class="block text-sm font-medium text-gray-700 mb-2">Nom *</label> <input type="text" id="comment-name" name="name" required class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-purple-600 focus:border-transparent"> </div> <div> <label for="comment-email" class="block text-sm font-medium text-gray-700 mb-2">Email *</label> <input type="email" id="comment-email" name="email" required class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-purple-600 focus:border-transparent"> </div> </div> <div> <label for="comment-message" class="block text-sm font-medium text-gray-700 mb-2">Message *</label> <textarea id="comment-message" name="message" rows="5" required class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-purple-600 focus:border-transparent"></textarea> </div> <div class="text-sm text-gray-600"> <i class="fas fa-info-circle text-purple-600"></i> Votre commentaire sera soumis à modération avant publication. </div> <button type="submit" class="bg-gradient-to-r from-purple-600 to-blue-600 text-white px-8 py-3 rounded-lg font-semibold hover:from-purple-700 hover:to-blue-700 transition inline-flex items-center gap-2"> <i class="fas fa-paper-plane"></i> Publier le commentaire </button> </form> <div id="comment-status" class="mt-4 hidden"></div> </div> </div> <!-- Navigation Articles --> <div class="mt-12 max-w-4xl mx-auto"> <a href="/blog" class="inline-flex items-center gap-2 text-purple-600 hover:text-purple-800 transition font-semibold"> <i class="fas fa-arrow-left"></i> Retour au blog </a> </div> </div> </section> <!-- Script pour les commentaires --> <script> const articleSlug = 'comment-installer-shopify-sur-pc-guide-complet-pour-windows-et-mac'; // Charger les commentaires approuvés async function loadComments() { try { const response = await fetch(`/gestion-commentaires/get-comments.php?slug=${articleSlug}`); const data = await response.json(); const commentsList = document.getElementById('comments-list'); if (data.success && data.comments.length > 0) { commentsList.innerHTML = data.comments.map(comment => ` <div class="border-l-4 border-purple-600 pl-4 py-2"> <div class="flex items-center gap-2 mb-2"> <strong class="text-gray-900">${comment.name}</strong> <span class="text-sm text-gray-500">•</span> <span class="text-sm text-gray-500">${new Date(comment.date).toLocaleDateString('fr-FR')}</span> </div> <p class="text-gray-700">${comment.message}</p> </div> `).join(''); } else { commentsList.innerHTML = '<p class="text-gray-500 italic">Aucun commentaire pour le moment. Soyez le premier à commenter !</p>'; } } catch (error) { console.error('Erreur lors du chargement des commentaires:', error); } } // Gérer la soumission du formulaire document.getElementById('comment-form').addEventListener('submit', async function(e) { e.preventDefault(); const formData = { slug: articleSlug, name: document.getElementById('comment-name').value, email: document.getElementById('comment-email').value, message: document.getElementById('comment-message').value }; const submitBtn = this.querySelector('button[type="submit"]'); const originalText = submitBtn.innerHTML; submitBtn.disabled = true; submitBtn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Envoi en cours...'; try { const response = await fetch('/gestion-commentaires/submit-comment.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(formData) }); const result = await response.json(); const messageDiv = document.getElementById('comment-status'); if (result.success) { messageDiv.className = 'mt-4 p-4 bg-green-100 border border-green-400 text-green-700 rounded-lg'; messageDiv.textContent = 'Merci ! Votre commentaire a été soumis et sera publié après modération.'; messageDiv.classList.remove('hidden'); this.reset(); } else { messageDiv.className = 'mt-4 p-4 bg-red-100 border border-red-400 text-red-700 rounded-lg'; messageDiv.textContent = result.message || 'Une erreur est survenue. Veuillez réessayer.'; messageDiv.classList.remove('hidden'); } } catch (error) { const messageDiv = document.getElementById('comment-status'); messageDiv.className = 'mt-4 p-4 bg-red-100 border border-red-400 text-red-700 rounded-lg'; messageDiv.textContent = 'Erreur de connexion. Veuillez réessayer plus tard.'; messageDiv.classList.remove('hidden'); } finally { submitBtn.disabled = false; submitBtn.innerHTML = originalText; } }); // Charger les commentaires au chargement de la page loadComments(); </script> <footer class="bg-gray-950 text-gray-400 py-12"> <div class="container mx-auto px-6"> <div class="flex flex-col md:flex-row justify-between items-center"> <div class="mb-6 md:mb-0 flex items-start gap-4"> <img src="/images/logo.png" alt="Logo VRAIVEX" class="h-32 w-32 md:h-40 md:w-40 object-contain"> <div> <a href="#" class="text-2xl font-bold block"> <span class="gradient-text">VRAIVEX</span> </a> <p class="mt-2 text-sm">Automatisation, IA et SEO au service de la performance e-commerce</p> </div> </div> <div class="flex flex-col items-center md:items-end"> <div class="grid grid-cols-2 md:flex md:flex-wrap gap-3 md:space-x-6 mb-4 text-center md:text-right"> <a href="/#about" class="hover:text-white transition text-sm">À propos</a> <a href="/#services" class="hover:text-white transition text-sm">Services</a> <a href="/#prestations" class="hover:text-white transition text-sm">Prestations</a> <a href="/#bestsellers" class="hover:text-white transition text-sm">Best Sellers</a> <a href="/#brands" class="hover:text-white transition text-sm">Nos marques</a> <a href="/creation-site-ecommerce" class="hover:text-white transition text-sm">Création Sites</a> <a href="/seo-ecommerce" class="hover:text-white transition text-sm">SEO E-commerce</a> <a href="/partenaires" class="hover:text-white transition text-sm">Partenaires</a> <a href="/#contact" class="hover:text-white transition text-sm">Contact</a> </div> <p class="text-sm text-center md:text-right">© 2025 VRAIVEX. Tous droits réservés.</p> </div> </div> </div> </footer> <!-- Back to Top Button --> <button id="backToTop" class="fixed bottom-8 right-8 bg-gradient-to-r from-purple-600 to-blue-600 text-white p-4 rounded-full shadow-lg hover:shadow-xl transform hover:scale-110 transition-all duration-300 z-50 hidden"> <i class="fas fa-arrow-up text-xl"></i> </button> <script> // Header scroll effect window.addEventListener('scroll', function() { const header = document.getElementById('header'); if (window.scrollY > 100) { header.classList.add('header-scrolled'); } else { header.classList.remove('header-scrolled'); } }); // Smooth scrolling for anchor links document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function (e) { e.preventDefault(); document.querySelector(this.getAttribute('href')).scrollIntoView({ behavior: 'smooth' }); }); }); // Mobile menu toggle const mobileMenuButton = document.getElementById('mobileMenuButton'); const mobileMenu = document.getElementById('mobileMenu'); const menuIcon = document.getElementById('menuIcon'); if (mobileMenuButton && mobileMenu) { mobileMenuButton.addEventListener('click', function() { mobileMenu.classList.toggle('hidden'); // Toggle icon between bars and times if (mobileMenu.classList.contains('hidden')) { menuIcon.classList.remove('fa-times'); menuIcon.classList.add('fa-bars'); } else { menuIcon.classList.remove('fa-bars'); menuIcon.classList.add('fa-times'); } }); // Close menu when clicking on a link const mobileLinks = mobileMenu.querySelectorAll('a'); mobileLinks.forEach(link => { link.addEventListener('click', function() { mobileMenu.classList.add('hidden'); menuIcon.classList.remove('fa-times'); menuIcon.classList.add('fa-bars'); }); }); } // Brands Carousel const brandsCarousel = document.getElementById('brandsCarousel'); const brandsContainer = document.getElementById('brandsContainer'); const brandsPrevBtn = document.getElementById('brandsPrevBtn'); const brandsNextBtn = document.getElementById('brandsNextBtn'); const brandsPrevBtnMobile = document.getElementById('brandsPrevBtnMobile'); const brandsNextBtnMobile = document.getElementById('brandsNextBtnMobile'); if (brandsContainer && brandsCarousel) { let currentIndex = 0; const cards = brandsContainer.querySelectorAll('.brand-card'); const cardsPerView = { mobile: 1, tablet: 2, desktop: 3, large: 4 }; function getCardsPerView() { const width = window.innerWidth; if (width >= 1280) return cardsPerView.large; if (width >= 1024) return cardsPerView.desktop; if (width >= 768) return cardsPerView.tablet; return cardsPerView.mobile; } function updateCarousel() { const cardsPerViewCount = getCardsPerView(); const containerWidth = brandsCarousel.offsetWidth; const cardWidth = containerWidth / cardsPerViewCount; const maxIndex = Math.max(0, cards.length - cardsPerViewCount); currentIndex = Math.min(currentIndex, maxIndex); brandsContainer.style.transform = `translateX(-${currentIndex * cardWidth}px)`; // Update button states const isAtStart = currentIndex === 0; const isAtEnd = currentIndex >= maxIndex; if (brandsPrevBtn) { brandsPrevBtn.style.opacity = isAtStart ? '0.5' : '1'; brandsPrevBtn.style.cursor = isAtStart ? 'not-allowed' : 'pointer'; } if (brandsNextBtn) { brandsNextBtn.style.opacity = isAtEnd ? '0.5' : '1'; brandsNextBtn.style.cursor = isAtEnd ? 'not-allowed' : 'pointer'; } if (brandsPrevBtnMobile) { brandsPrevBtnMobile.style.opacity = isAtStart ? '0.5' : '1'; brandsPrevBtnMobile.style.cursor = isAtStart ? 'not-allowed' : 'pointer'; } if (brandsNextBtnMobile) { brandsNextBtnMobile.style.opacity = isAtEnd ? '0.5' : '1'; brandsNextBtnMobile.style.cursor = isAtEnd ? 'not-allowed' : 'pointer'; } } function nextSlide() { const cardsPerViewCount = getCardsPerView(); const maxIndex = Math.max(0, cards.length - cardsPerViewCount); if (currentIndex < maxIndex) { currentIndex++; updateCarousel(); } } function prevSlide() { if (currentIndex > 0) { currentIndex--; updateCarousel(); } } // Event listeners if (brandsNextBtn) brandsNextBtn.addEventListener('click', nextSlide); if (brandsPrevBtn) brandsPrevBtn.addEventListener('click', prevSlide); if (brandsNextBtnMobile) brandsNextBtnMobile.addEventListener('click', nextSlide); if (brandsPrevBtnMobile) brandsPrevBtnMobile.addEventListener('click', prevSlide); // Set responsive width for cards function setCardWidths() { const cardsPerViewCount = getCardsPerView(); const containerWidth = brandsCarousel.offsetWidth; const gap = 24; // 24px gap const cardWidth = (containerWidth - (gap * (cardsPerViewCount - 1))) / cardsPerViewCount; cards.forEach(card => { card.style.width = `${cardWidth}px`; card.style.flexShrink = '0'; }); } // Initialize setCardWidths(); updateCarousel(); // Update on resize let resizeTimeout; window.addEventListener('resize', function() { clearTimeout(resizeTimeout); resizeTimeout = setTimeout(function() { setCardWidths(); currentIndex = 0; updateCarousel(); }, 250); }); } </script> <script> // Header scroll effect window.addEventListener('scroll', function() { const header = document.getElementById('header'); if (window.scrollY > 50) { header.classList.add('header-scrolled'); } else { header.classList.remove('header-scrolled'); } }); // Scroll animations const observerOptions = { threshold: 0.1, rootMargin: '0px 0px -50px 0px' }; const observer = new IntersectionObserver(function(entries) { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.classList.add('visible'); } }); }, observerOptions); // Observe all fade-in-up elements document.querySelectorAll('.fade-in-up').forEach(el => { observer.observe(el); }); // Smooth scroll for anchor links document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function (e) { e.preventDefault(); const target = document.querySelector(this.getAttribute('href')); if (target) { target.scrollIntoView({ behavior: 'smooth', block: 'start' }); } }); }); // Counter animation for stats function animateCounter(element, target, duration = 2000) { let start = 0; const increment = target / (duration / 16); const timer = setInterval(() => { start += increment; if (start >= target) { element.textContent = target + (element.textContent.includes('+') ? '+' : '') + (element.textContent.includes('K') ? 'K€' : ''); clearInterval(timer); } else { element.textContent = Math.floor(start) + (element.textContent.includes('+') ? '+' : '') + (element.textContent.includes('K') ? 'K€' : ''); } }, 16); } // Observe stats section const statsObserver = new IntersectionObserver(function(entries) { entries.forEach(entry => { if (entry.isIntersecting && !entry.target.classList.contains('animated')) { entry.target.classList.add('animated'); const statsCards = entry.target.querySelectorAll('.stats-card'); statsCards.forEach((card, index) => { setTimeout(() => { card.style.opacity = '0'; card.style.transform = 'translateY(20px)'; setTimeout(() => { card.style.transition = 'all 0.6s ease'; card.style.opacity = '1'; card.style.transform = 'translateY(0)'; }, 100); }, index * 100); }); } }); }, { threshold: 0.3 }); const statsSection = document.querySelector('section.bg-gradient-to-r'); if (statsSection) { statsObserver.observe(statsSection); } </script> <script> // Gestion du formulaire de contact const contactForm = document.getElementById('contact-form'); const formMessage = document.getElementById('form-message'); const submitBtn = document.getElementById('submit-btn'); if (contactForm) { contactForm.addEventListener('submit', async function(e) { e.preventDefault(); // Désactiver le bouton pendant l'envoi submitBtn.disabled = true; submitBtn.textContent = 'Envoi en cours...'; // Récupérer les données du formulaire const formData = new FormData(contactForm); try { // Vérifier que les données sont bien dans le FormData const formDataObj = { name: formData.get('name'), email: formData.get('email'), subject: formData.get('subject'), message: formData.get('message') }; console.log('Données du formulaire:', formDataObj); // Vérifier que tous les champs sont remplis if (!formDataObj.name || !formDataObj.email || !formDataObj.subject || !formDataObj.message) { formMessage.classList.remove('hidden'); formMessage.className = 'mb-6 p-4 rounded-lg bg-red-600 text-white'; formMessage.textContent = 'Veuillez remplir tous les champs du formulaire.'; submitBtn.disabled = false; submitBtn.textContent = 'Envoyer le message'; return; } // Essayer d'abord avec JSON (plus fiable) // Si ça ne fonctionne pas, on essaiera avec FormData let response; try { // Méthode 1 : Envoyer en JSON (plus fiable selon les forums) response = await fetch('gestion-formulaire-contact/send-email-json.php', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(formDataObj) }); } catch (jsonError) { console.warn('Erreur avec JSON, essai avec FormData:', jsonError); // Méthode 2 : Fallback avec FormData response = await fetch('send-email.php', { method: 'POST', body: formData }); } // Lire le texte de la réponse d'abord pour déboguer const responseText = await response.text(); console.log('Réponse serveur:', responseText.substring(0, 500)); // Vérifier si la réponse est OK if (!response.ok) { // Essayer de parser le JSON d'erreur try { const errorResult = JSON.parse(responseText); // Afficher le message d'erreur du serveur directement à l'utilisateur formMessage.classList.remove('hidden'); formMessage.className = 'mb-6 p-4 rounded-lg bg-red-600 text-white'; formMessage.textContent = errorResult.message || `Erreur ${response.status}: ${response.statusText}`; submitBtn.disabled = false; submitBtn.textContent = 'Envoyer le message'; return; // Sortir de la fonction pour ne pas continuer } catch (e) { throw new Error(`Erreur HTTP ${response.status}: ${response.statusText}. Réponse: ${responseText.substring(0, 200)}`); } } // Vérifier si PHP n'est pas exécuté (le serveur renvoie le code PHP brut) if (responseText.trim().startsWith('<?php') || responseText.includes('<?php')) { console.error('ERREUR: PHP n\'est pas exécuté par le serveur. Le code PHP est renvoyé brut.'); console.error('Le serveur web n\'est pas configuré pour exécuter PHP.'); // Utiliser la solution de secours : sauvegarder dans localStorage const messageData = { name: formData.get('name'), email: formData.get('email'), subject: formData.get('subject'), message: formData.get('message'), timestamp: new Date().toISOString() }; // Sauvegarder dans localStorage comme solution de secours const savedMessages = JSON.parse(localStorage.getItem('vraivex_messages') || '[]'); savedMessages.push(messageData); localStorage.setItem('vraivex_messages', JSON.stringify(savedMessages)); // Afficher un message spécial formMessage.classList.remove('hidden'); formMessage.className = 'mb-6 p-4 rounded-lg bg-yellow-600 text-white'; formMessage.innerHTML = '⚠️ PHP n\'est pas configuré sur le serveur. Votre message a été sauvegardé localement. <br>Veuillez nous contacter directement à <strong>contact@vraivex.fr</strong> ou consulter les messages sauvegardés dans la console du navigateur.'; // Afficher les messages sauvegardés dans la console console.log('Messages sauvegardés localement:', savedMessages); console.log('Pour consulter les messages, tapez dans la console: JSON.parse(localStorage.getItem("vraivex_messages"))'); return; // Sortir de la fonction } // Essayer de parser le JSON let result; try { result = JSON.parse(responseText); } catch (parseError) { console.error('Erreur de parsing JSON:', parseError); console.error('Réponse reçue:', responseText.substring(0, 500)); throw new Error('Le serveur a renvoyé une réponse invalide. Vérifiez la console pour plus de détails.'); } // Afficher le message de résultat formMessage.classList.remove('hidden'); if (result.success) { formMessage.className = 'mb-6 p-4 rounded-lg bg-green-600 text-white'; formMessage.textContent = 'Message envoyé avec succès ! Nous vous répondrons dans les plus brefs délais.'; contactForm.reset(); } else { formMessage.className = 'mb-6 p-4 rounded-lg bg-red-600 text-white'; let errorMsg = result.message || 'Une erreur est survenue. Veuillez réessayer.'; // Afficher le message de debug en développement (à retirer en production) if (result.debug) { console.error('Erreur détaillée:', result.debug); } formMessage.textContent = errorMsg; } } catch (error) { formMessage.classList.remove('hidden'); formMessage.className = 'mb-6 p-4 rounded-lg bg-red-600 text-white'; // Message d'erreur plus détaillé pour le débogage let errorMsg = 'Une erreur est survenue lors de la communication avec le serveur. '; errorMsg += 'Veuillez réessayer plus tard ou nous contacter directement à contact@vraivex.fr'; // En mode développement, afficher plus de détails if (error.message) { console.error('Erreur détaillée:', error); console.error('Message:', error.message); console.error('Stack:', error.stack); } formMessage.textContent = errorMsg; } finally { // Réactiver le bouton submitBtn.disabled = false; submitBtn.textContent = 'Envoyer le message'; // Masquer le message après 5 secondes setTimeout(() => { formMessage.classList.add('hidden'); }, 5000); } }); } // Back to Top Button functionality const backToTopButton = document.getElementById('backToTop'); // Show/hide button based on scroll position window.addEventListener('scroll', () => { if (window.pageYOffset > 300) { backToTopButton.classList.remove('hidden'); } else { backToTopButton.classList.add('hidden'); } }); // Smooth scroll to top when clicked backToTopButton.addEventListener('click', () => { window.scrollTo({ top: 0, behavior: 'smooth' }); }); </script> </body> </html>