{"id":576,"date":"2026-01-16T11:58:52","date_gmt":"2026-01-16T10:58:52","guid":{"rendered":"https:\/\/coutursup.com\/?page_id=576"},"modified":"2026-01-16T14:07:57","modified_gmt":"2026-01-16T13:07:57","slug":"tissus-offre-fevrier-2026","status":"publish","type":"page","link":"https:\/\/coutursup.com\/de\/tissus-offre-fevrier-2026\/","title":{"rendered":"Tissus Offre F\u00e9vrier 2026"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"576\" class=\"elementor elementor-576\">\n\t\t\t\t<div class=\"elementor-element elementor-element-93a1c8d e-flex e-con-boxed e-con e-parent\" data-id=\"93a1c8d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2439adc elementor-widget elementor-widget-html\" data-id=\"2439adc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Boutique Partag\u00e9e<\/title>\n    <style>\n        \/* [VOTRE STYLE RESTE LE M\u00caME QUE PR\u00c9C\u00c9DEMMENT] *\/\n        * { margin: 0; padding: 0; box-sizing: border-box; }\n        body { font-family: sans-serif; background: #f8f9fa; padding: 20px; color: #2c3e50; }\n        .container { max-width: 1400px; margin: 0 auto; }\n        .admin-trigger { position: fixed; bottom: 10px; right: 10px; width: 40px; height: 40px; background: transparent; border: none; cursor: pointer; z-index: 1000; }\n        .admin-modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.8); z-index: 2000; overflow-y: auto; padding: 20px; }\n        .admin-modal.active { display: flex; align-items: center; justify-content: center; }\n        .admin-content { background: white; padding: 30px; border-radius: 12px; width: 100%; max-width: 500px; }\n        .form-group { margin-bottom: 15px; }\n        .form-group label { display: block; margin-bottom: 5px; font-weight: bold; }\n        .form-group input, .form-group textarea { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 6px; }\n        .products-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 20px; margin-bottom: 40px; }\n        .product-card { background: white; border-radius: 12px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,0.1); padding: 15px; }\n        .product-image { width: 100%; height: 200px; object-fit: cover; border-radius: 8px; }\n        .product-price { font-size: 20px; color: #3498db; font-weight: bold; margin: 10px 0; }\n        .btn { padding: 10px 20px; border: none; border-radius: 6px; cursor: pointer; font-weight: bold; }\n        .btn-primary { background: #3498db; color: white; }\n        .checkout-section { background: white; padding: 30px; border-radius: 12px; max-width: 500px; margin: 0 auto; text-align: center; }\n        .admin-product-item { display: flex; justify-content: space-between; background: #eee; padding: 10px; margin-top: 5px; border-radius: 4px; }\n    <\/style>\n<\/head>\n<body>\n\n<div class=\"container\">\n    <div id=\"productsContainer\" class=\"products-grid\"><\/div>\n\n    <div class=\"checkout-section\">\n        <h2 id=\"totalPrice\">Total : 0.00 \u20ac<\/h2>\n        <p style=\"margin: 15px 0; font-size: 0.9em; color: #666;\">Paiement par virement (IBAN affich\u00e9 apr\u00e8s commande)<\/p>\n        <button class=\"btn btn-primary\" style=\"background: #27ae60; width: 100%;\" onclick=\"sendOrder()\">Commander via Email<\/button>\n    <\/div>\n<\/div>\n\n<button class=\"admin-trigger\" ondblclick=\"openAdmin()\"><\/button>\n\n<div class=\"admin-modal\" id=\"adminModal\">\n    <div class=\"admin-content\">\n        <div id=\"loginForm\">\n            <h3>Admin<\/h3>\n            <input type=\"password\" id=\"adminPassword\" placeholder=\"Mot de passe\" style=\"width:100%; padding:10px; margin:10px 0;\">\n            <button class=\"btn btn-primary\" onclick=\"checkPassword()\">Connexion<\/button>\n            <button class=\"btn\" onclick=\"closeAdmin()\">Fermer<\/button>\n        <\/div>\n        <div id=\"adminForm\" style=\"display:none\">\n            <h3>Ajouter un produit<\/h3>\n            <div class=\"form-group\"><input type=\"text\" id=\"productName\" placeholder=\"Nom\"><\/div>\n            <div class=\"form-group\"><input type=\"url\" id=\"productImage\" placeholder=\"Lien image\"><\/div>\n            <div class=\"form-group\"><input type=\"number\" id=\"productPrice\" placeholder=\"Prix\"><\/div>\n            <div class=\"form-group\"><textarea id=\"productDescription\" placeholder=\"Description\"><\/textarea><\/div>\n            <button class=\"btn btn-primary\" onclick=\"addProduct()\">Sauvegarder<\/button>\n            <div id=\"adminProductsList\" style=\"margin-top:20px\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<script>\n    const ADMIN_PASSWORD = 'votre_mot_de_passe'; \n    let products = [];\n    let quantities = {};\n\n    \/\/ CHARGEMENT DEPUIS LE SERVEUR\n    async function loadProducts() {\n        try {\n            \/\/ On essaie de lire le fichier JSON sur le serveur\n            const response = await fetch('products.json?nocache=' + Date.now());\n            if (response.ok) {\n                products = await response.json();\n                renderProducts();\n            }\n        } catch (e) {\n            console.log(\"Pas encore de fichier products.json\");\n        }\n    }\n\n    \/\/ SAUVEGARDE SUR LE SERVEUR\n    async function saveProducts() {\n        try {\n            const response = await fetch('save-products.php', {\n                method: 'POST',\n                headers: { 'Content-Type': 'application\/json' },\n                body: JSON.stringify(products)\n            });\n            if (!response.ok) throw new Error(\"Erreur serveur\");\n            alert(\"Catalogue mis \u00e0 jour pour tous les visiteurs !\");\n        } catch (e) {\n            alert(\"Erreur lors de la sauvegarde : \" + e.message);\n        }\n    }\n\n    function renderProducts() {\n        const container = document.getElementById('productsContainer');\n        if (products.length === 0) {\n            container.innerHTML = \"<p>Aucun produit dans le catalogue.<\/p>\";\n            return;\n        }\n\n        container.innerHTML = products.map(p => `\n            <div class=\"product-card\">\n                <img decoding=\"async\" src=\"${p.image}\" class=\"product-image\" onerror=\"this.src='https:\/\/via.placeholder.com\/300x200?text=Image+Indisponible'\">\n                <h3>${p.name}<\/h3>\n                <div class=\"product-price\">${p.price.toFixed(2)} \u20ac<\/div>\n                <div style=\"display:flex; gap:10px; align-items:center; margin-bottom:10px;\">\n                    <button onclick=\"updateQty(${p.id}, -1)\">-<\/button>\n                    <span>${quantities[p.id] || 0}<\/span>\n                    <button onclick=\"updateQty(${p.id}, 1)\">+<\/button>\n                <\/div>\n                <p style=\"font-size:0.8em; color:#666\">${p.description}<\/p>\n            <\/div>\n        `).join('');\n        updateTotal();\n    }\n\n    function updateQty(id, delta) {\n        quantities[id] = Math.max(0, (quantities[id] || 0) + delta);\n        renderProducts();\n    }\n\n    function updateTotal() {\n        const total = products.reduce((sum, p) => sum + (p.price * (quantities[p.id] || 0)), 0);\n        document.getElementById('totalPrice').textContent = `Total : ${total.toFixed(2)} \u20ac`;\n    }\n\n    function addProduct() {\n        const p = {\n            id: Date.now(),\n            name: document.getElementById('productName').value,\n            image: document.getElementById('productImage').value,\n            price: parseFloat(document.getElementById('productPrice').value),\n            description: document.getElementById('productDescription').value\n        };\n        products.push(p);\n        saveProducts(); \/\/ Sauvegarde sur le serveur\n        renderProducts();\n        loadAdminList();\n    }\n\n    function deleteProduct(id) {\n        products = products.filter(p => p.id !== id);\n        saveProducts();\n        renderProducts();\n        loadAdminList();\n    }\n\n    \/\/ --- Fonctions Admin ---\n    function openAdmin() { document.getElementById('adminModal').classList.add('active'); }\n    function closeAdmin() { document.getElementById('adminModal').classList.remove('active'); }\n    function checkPassword() {\n        if(document.getElementById('adminPassword').value === ADMIN_PASSWORD) {\n            document.getElementById('loginForm').style.display = 'none';\n            document.getElementById('adminForm').style.display = 'block';\n            loadAdminList();\n        }\n    }\n    function loadAdminList() {\n        const list = document.getElementById('adminProductsList');\n        list.innerHTML = products.map(p => `\n            <div class=\"admin-product-item\">\n                <span>${p.name}<\/span>\n                <button onclick=\"deleteProduct(${p.id})\" style=\"color:red\">Supprimer<\/button>\n            <\/div>\n        `).join('');\n    }\n\n    function sendOrder() {\n        const items = products.filter(p => quantities[p.id] > 0)\n                              .map(p => `${p.name} (x${quantities[p.id]})`);\n        if(items.length === 0) return alert(\"Panier vide\");\n        const body = `Commande : ${items.join(', ')}`;\n        window.location.href = `mailto:hello@clemup.com?subject=Commande&body=${encodeURIComponent(body)}`;\n    }\n\n    loadProducts();\n<\/script>\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Boutique Partag\u00e9e Total : 0.00 \u20ac Paiement par virement (IBAN affich\u00e9 apr\u00e8s commande) Commander via Email Admin Connexion Fermer Ajouter [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_jetpack_hide_featured_image":false,"_jetpack_featured_image_duplicate_dismissed":0,"footnotes":""},"class_list":["post-576","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tissus Offre F\u00e9vrier 2026 - Coutursup<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/coutursup.com\/de\/tissus-offre-fevrier-2026\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tissus Offre F\u00e9vrier 2026 - Coutursup\" \/>\n<meta property=\"og:description\" content=\"Boutique Partag\u00e9e Total : 0.00 \u20ac Paiement par virement (IBAN affich\u00e9 apr\u00e8s commande) Commander via Email Admin Connexion Fermer Ajouter [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/coutursup.com\/de\/tissus-offre-fevrier-2026\/\" \/>\n<meta property=\"og:site_name\" content=\"Coutursup\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-16T13:07:57+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data1\" content=\"1\u00a0Minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/coutursup.com\\\/tissus-offre-fevrier-2026\\\/\",\"url\":\"https:\\\/\\\/coutursup.com\\\/tissus-offre-fevrier-2026\\\/\",\"name\":\"Tissus Offre F\u00e9vrier 2026 - Coutursup\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/coutursup.com\\\/#website\"},\"datePublished\":\"2026-01-16T10:58:52+00:00\",\"dateModified\":\"2026-01-16T13:07:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/coutursup.com\\\/tissus-offre-fevrier-2026\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/coutursup.com\\\/tissus-offre-fevrier-2026\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/coutursup.com\\\/tissus-offre-fevrier-2026\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/coutursup.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tissus Offre F\u00e9vrier 2026\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/coutursup.com\\\/#website\",\"url\":\"https:\\\/\\\/coutursup.com\\\/\",\"name\":\"Coutursup\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/coutursup.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/coutursup.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/coutursup.com\\\/#organization\",\"name\":\"Coutursup\",\"url\":\"https:\\\/\\\/coutursup.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/coutursup.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/coutursup.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/cropped-BANNER-SITE-COUTURSUP-1.png\",\"contentUrl\":\"https:\\\/\\\/coutursup.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/cropped-BANNER-SITE-COUTURSUP-1.png\",\"width\":1800,\"height\":600,\"caption\":\"Coutursup\"},\"image\":{\"@id\":\"https:\\\/\\\/coutursup.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tissus Offre F\u00e9vrier 2026 - Coutursup","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/coutursup.com\/de\/tissus-offre-fevrier-2026\/","og_locale":"de_DE","og_type":"article","og_title":"Tissus Offre F\u00e9vrier 2026 - Coutursup","og_description":"Boutique Partag\u00e9e Total : 0.00 \u20ac Paiement par virement (IBAN affich\u00e9 apr\u00e8s commande) Commander via Email Admin Connexion Fermer Ajouter [&hellip;]","og_url":"https:\/\/coutursup.com\/de\/tissus-offre-fevrier-2026\/","og_site_name":"Coutursup","article_modified_time":"2026-01-16T13:07:57+00:00","twitter_card":"summary_large_image","twitter_misc":{"Gesch\u00e4tzte Lesezeit":"1\u00a0Minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/coutursup.com\/tissus-offre-fevrier-2026\/","url":"https:\/\/coutursup.com\/tissus-offre-fevrier-2026\/","name":"Tissus Offre F\u00e9vrier 2026 - Coutursup","isPartOf":{"@id":"https:\/\/coutursup.com\/#website"},"datePublished":"2026-01-16T10:58:52+00:00","dateModified":"2026-01-16T13:07:57+00:00","breadcrumb":{"@id":"https:\/\/coutursup.com\/tissus-offre-fevrier-2026\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/coutursup.com\/tissus-offre-fevrier-2026\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/coutursup.com\/tissus-offre-fevrier-2026\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/coutursup.com\/"},{"@type":"ListItem","position":2,"name":"Tissus Offre F\u00e9vrier 2026"}]},{"@type":"WebSite","@id":"https:\/\/coutursup.com\/#website","url":"https:\/\/coutursup.com\/","name":"Coutursup","description":"","publisher":{"@id":"https:\/\/coutursup.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/coutursup.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/coutursup.com\/#organization","name":"Coutursup","url":"https:\/\/coutursup.com\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/coutursup.com\/#\/schema\/logo\/image\/","url":"https:\/\/coutursup.com\/wp-content\/uploads\/2026\/03\/cropped-BANNER-SITE-COUTURSUP-1.png","contentUrl":"https:\/\/coutursup.com\/wp-content\/uploads\/2026\/03\/cropped-BANNER-SITE-COUTURSUP-1.png","width":1800,"height":600,"caption":"Coutursup"},"image":{"@id":"https:\/\/coutursup.com\/#\/schema\/logo\/image\/"}}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/coutursup.com\/de\/wp-json\/wp\/v2\/pages\/576","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coutursup.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/coutursup.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/coutursup.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/coutursup.com\/de\/wp-json\/wp\/v2\/comments?post=576"}],"version-history":[{"count":9,"href":"https:\/\/coutursup.com\/de\/wp-json\/wp\/v2\/pages\/576\/revisions"}],"predecessor-version":[{"id":588,"href":"https:\/\/coutursup.com\/de\/wp-json\/wp\/v2\/pages\/576\/revisions\/588"}],"wp:attachment":[{"href":"https:\/\/coutursup.com\/de\/wp-json\/wp\/v2\/media?parent=576"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}