THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour,

Quelqu'un serait-il m'orienter sur le moyen le plus simple de mettre en place une "fermeture périodique récurrente" ?

Je m'explique, avec un exemple concret : le store (ou à la limite seul l'ajout au panier, peu importe) devrait être accessible seulement du lundi minuit au vendredi 23h59, après quoi (le week-end donc), le client devrait être informé qu'il ne peut plus passer commande et invité à repasser le lundi suivant.
Il ne s'agit donc pas là d'une simple règle statique à mettre en place, mais d'une routine dynamique. Au minimum, seul le blocage d'accès devrait être automatisé et, l'accès pourrait être rétabli manuellement...

Cela vous parait-il compliqué à mettre en place dans Thelia 2.3 ? Une piste ?

Il me semble qu'il n'est pas possible d'aller aussi loin avec un simple .htaccess (pour une redirection), mais je me trompe peut être...

Merci.

Last edited by fujitsuDev (12-12-2017 11:45:58)

Offline


Si tu veux garder la boutique ouverte, tu devrais écrire un petit plugin qui permet d'interdire la mise au panier en dehors des heures d'ouverture, et qui propose une boucle qui 1) permette d'afficher en front officie le message d'invite à revenir aux heures d'ouverture et 2) permette de cacher les boutons de mise au panier.


OpenStudio Toulouse

Offline


Ok, merci... Mais en fait, je me trompais, il est bien possible de faire ça plus simplement à l'aide d'une règle de réécriture avec de multiples conditions. Je choisi donc cette option !

Dans le dossier /web, j'ai ajouté ma page de redirection (closed.html), puis j'ai édité le fichier .htaccess (présent dans ce même dossier) :

Après :

# If thelia is installed in a subdirectory (e.g., thelia2)
# define the RewriteBase below to get a proper URL rewriting
# RewriteBase /thelia2

Et avant :

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php [QSA,L]
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization},last]

J'ai ajouté ma règle (en réalité différente de celle que j'avais présenté en premier post, c'était pour faire plus simple) :

# Boutique fermée du mardi 00h00 au samedi 18h.
# Toute la journée, les Mardis (2), Mercredis (3), Jeudis (4), Vendredis (5).
RewriteCond %{TIME_WDAY} 2 [OR]
RewriteCond %{TIME_WDAY} 3 [OR]
RewriteCond %{TIME_WDAY} 4 [OR]
RewriteCond %{TIME_WDAY} 5 [OR]
# Et les samedis (6), seulement jusqu'à 18h00.
RewriteCond %{TIME_WDAY} 6 
RewriteCond %{TIME_HOUR}%{TIME_MIN} <1800
RewriteRule ^(.*)$ closed.html [QSA,L]

Ce que je galère encore à faire, c'est exclure la route d'accès à l'ACP, pour que seul l'admin puisse avoir un accès en toutes circonstances :

RewriteCond %{REQUEST_URI} !^/web/admin(.*)$

Bien sûr, cette ligne est juste avant la première RewriteCond ci-dessus.

Tu peux me dire ce que j'ai mal fait ?

Merci smile

Last edited by fujitsuDev (12-12-2017 16:06:01)

Offline


Personne pour me donner une idée de comment exclure la route /admin d'une redirection depuis le .htaccess d'origine ? sad

Options +FollowSymlinks -Indexes

AddDefaultCharset UTF-8

<IfModule mod_rewrite.c>
    RewriteEngine On

    # SEO, remove the subdomain www in URL
    # Exemple : http://www.yourdomain.com/contact redirect 301 to http://yourdomain.com/contact
    # To activate uncomment the following two lines
    #RewriteCond %{HTTP_HOST} ^www.yourdomain.com$
    #RewriteRule ^(.*) http://yourdomain.com/$1 [QSA,L,R=301]

    # SEO, add the subdomain www in URL
    # Exemple : http://yourdomain.com/contact redirect 301 to http://www.yourdomain.com/contact
    # To activate uncomment the following two lines
    #RewriteCond %{HTTP_HOST} ^yourdomain.com$
    #RewriteRule ^(.*) http://www.yourdomain.com/$1 [QSA,L,R=301]

    # SEO, to avoid duplicate content with index.php in url
    # Exemple : http://www.yourdomain.com/index.php/contact redirect 301 to http://www.yourdomain.com/contact
    RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
    RewriteRule (.?)index\.php/(.*) /$1$2 [R=301,NE,L]

    # If thelia is installed in a subdirectory (e.g., thelia2)
    # define the RewriteBase below to get a proper URL rewriting
    # RewriteBase /thelia2

    { mes modifs ici }

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^(.*)$ index.php [QSA,L]
    RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization},last]
</IfModule>

Last edited by fujitsuDev (15-12-2017 15:34:55)

Offline


RewriteCond %{REQUEST_URI} !^/web/admin(.*)$

Pourquoi /web/admin ? /admin ça devrait aller.


OpenStudio Toulouse

Offline


Bon ben ça ne fonctionne toujours pas... Je ne vois vraiment pas ce que ça peut être à part un conflit sad
Je tourne en local (XAMPP) avec Apache 2.4. Je précise que le module BackOfficePath est complètement désactivé.

Une fois épuré :

Options +FollowSymlinks -Indexes

AddDefaultCharset UTF-8

<IfModule mod_rewrite.c>
    RewriteEngine On

    [...]

    RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
    RewriteRule (.?)index\.php/(.*) /$1$2 [R=301,NE,L]

    [...]

    RewriteCond %{REQUEST_URI} !^/admin(.*)$
    RewriteRule ^(.*)$ closed.html [QSA,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^(.*)$ index.php [QSA,L]
    RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization},last]
</IfModule>

Même placé en première position, juste après

RewriteEngine On

Last edited by fujitsuDev (15-12-2017 16:41:28)