THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

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

Offline

#1 Similaire à multi-boutiques

(13-01-2015 12:54:10)


Hello la compagnie!

Afin de faire évoluer au mieux une boutique, mon client aimerait mettre en place 3 accès sur sa boutique.
- Accès "Grand Public"
- Accès "Pro"
- Accès "collectivités"

Grand Public -> Boutique actuellement en ligne à la racine
Pro -> Restriction faite via l'admin (module créé) , dossier virtuel "pro", template "pro"
Collectivité -> Restriction faite via l'admin (module créé), dossier virtuel "collectivité", template "collectivité"

La "boutique pro" ne pose pas de problème car elle ne présentera pas de produit mais juste du contenu (processus de commande différent)

Par contre, les produits de la boutique "grand public" et "collectivités" peuvent être dans l'une, dans l'autre ou dans les deux... avec descriptif différent ou non (je peux gérer ça...)

Par contre, au niveau des urls ça se complique... les redirections (404, connexion...) ne vont pas aux bons endroits, ça repart à la racine....

Et c'est surtout ça qui me pose problème... pareil au niveau des #REWRITEURL des rubriques, produits, dossiers, contenus...

Donc je voulais savoir s'il existait un plugin qui faisait ce genre de choses ou sensiblement la même chose..?

Merci d'avance! smile

Last edited by Elyos (13-01-2015 17:47:43)


Aide les autres, ils t'aideront en retour.

Offline


En 1.5, tu peux gérer toi-même les redirections des formulaires :

            <input type="hidden" name="urlok" value="#URLPAGERET" />
            <input type="hidden" name="urlerr" value="#URLFOND(connexion,errform=1)" />

OpenStudio Toulouse

Offline


ça je sais ^^ mais celles qui se font toutes seules?
via #PARAM_FOND_securise=1 par exemple

Last edited by Elyos (13-01-2015 14:53:07)


Aide les autres, ils t'aideront en retour.

Offline


Tu stockes initialementy dans une variable en session (via #SET_SESSION) la boutique sur laquelle tu est. Puis dans les pages cibles des redirections standard, tu teste cette variable, et tu rediriges (via #HEADER) vers la page adéquate, ou tu inclus le code adéquat.

C'est assez tordu, mais ça devrait marcher.


OpenStudio Toulouse

Offline


Ouep, ça devrait marcher wink

Par contre, j'ai un souci avec mes URLs...

Bon nombre des #REWRITEURL incorpore l'url du site... faut que j'arrive à caler mes dossiers virtuels dans l'url...


Aide les autres, ils t'aideront en retour.

Offline


Tu peux écrire un filtre pour ça, qui analyse l'URL et y place tes dossiers virtuels. Par contre, ça ne va sans doute pas marcher avec le système de ré-écriture de base.


OpenStudio Toulouse

Offline


Bon, j'ai réussi tant bien que mal à faire ce que je voulais :

http://www.domaine.com => boutique normale
http://www.domaine.com/collectivite/ => boutique collectivités
http://www.domaine.com/pro/ => boutique pro

Après réflexion, j'aurais préféré avoir :
http://www.domaine.com => boutique normale
http://collectivite.domaine.com => boutique collectivités
http://pro.domaine.com => boutique pro
http://blog.domaine.com => blog (à venir)

Mais je me retrouve coincé au niveau des redirections...

Sur l'admin 1and1, j'ai créé mes sous-domaines :
blog.domaine.com => Espace Web /blog
collectivite.domaine.com => Espace Web /.
pro.domaine.com => Espace Web /.

Dans mon .htaccess à la racine, j'ai mis :

RewriteCond %{HTTP_HOST} !^(www|blog|collectivite|pro).domaine.com$
RewriteRule ^(.*) http://www.domaine.com/$1 [L,R=301]

Pour rediriger, vers le www quand celui-ci n'y est pas et qu'on est pas sur "www", "collectivite", "pro" ou "blog".

Mais... ça marche  pas...='(
En fait, si je saisis l'adresse :
- http://pro.domaine.com/une-url.html => ça marche
- http://pro.domaine.com/ => ça redirige vers http://www.domaine.com/

Pareil pour "collectivite" et "blog" (qui pourtant, ce dernier, pointe vers un dossier existant)

Une idée du pourquoi du comment?

Sinon, après il faut que je fasse en sorte que toutes les urls "www", "collectivite" et "pro" renvoie en $_REQUEST['sd'] la bonne valeur => possible ?
Et éviter les doublons de ressources scripts et images entre les divers sous-domaines...

ça à l'air beaucoup plus simple de laisser tout ça en "dossier" qu'en sous-domaine non?

Mon .htaccess au complet :

# MOD_DEFLATE COMPRESSION
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-javascript application/x-httpd-php

# BEGIN Expire headers
<IfModule mod_expires.c>
 ExpiresActive On
 ExpiresDefault "access plus 7200 seconds"
 ExpiresByType image/jpg "access plus 2592000 seconds"
 ExpiresByType image/jpeg "access plus 2592000 seconds"
 ExpiresByType image/png "access plus 2592000 seconds"
 ExpiresByType image/gif "access plus 2592000 seconds"
 AddType image/x-icon .ico
 ExpiresByType image/ico "access plus 2592000 seconds"
 ExpiresByType image/icon "access plus 2592000 seconds"
 ExpiresByType image/x-icon "access plus 2592000 seconds"
 ExpiresByType text/css "access plus 2592000 seconds"
 ExpiresByType text/javascript "access plus 2592000 seconds"
 ExpiresByType text/html "access plus 7200 seconds"
 ExpiresByType application/xhtml+xml "access plus 7200 seconds"
 ExpiresByType application/javascript A259200
 ExpiresByType application/x-javascript "access plus 2592000 seconds"
 ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
</IfModule>
# END Expire headers

# BEGIN Cache-Control Headers
<IfModule mod_headers.c>
 <FilesMatch "\\.(ico|jpe?g|png|gif|swf|gz|ttf)$">
 Header set Cache-Control "max-age=2592000, public"
 </FilesMatch>
 <FilesMatch "\\.(css)$">
 Header set Cache-Control "max-age=2592000, public"
 </FilesMatch>
 <FilesMatch "\\.(js)$">
 Header set Cache-Control "max-age=2592000, private"
 </FilesMatch>
<filesMatch "\\.(html|htm)$">
Header set Cache-Control "max-age=7200, public"
</filesMatch>
# Disable caching for scripts and other dynamic files
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>
</IfModule>
# END Cache-Control Headers

# KILL THEM ETAGS
Header unset ETag
FileETag none

Options -Indexes +FollowSymlinks

ErrorDocument 401 /
ErrorDocument 403 http://www.domaine.com/
ErrorDocument 404 /

AddDefaultCharset UTF-8

<IfModule mod_rewrite.c>
RewriteEngine on

RewriteBase /

RewriteCond %{HTTP_HOST} !^(www|blog|collectivite|pro).domaine.com$
RewriteRule ^(.*) http://www.domaine.com/$0 [L,R=301]

SetEnv SESSION_USE_TRANS_SID 0

##########################
#ANCIENNES PAGES DU SITE
#TRAITEES DANS PLUGIN REWRITEURLS
##########################

##########################
#NOUVELLES PAGES DU SITE
RewriteRule	^pro/$ /index.php?sd=pro  [NC,QSA,L]
RewriteRule	^collectivite/$ /index.php?sd=collectivite  [NC,QSA,L]
RewriteRule	^pro/(.*)\.html$ /index.php?url=$1.html&sd=pro  [NC,QSA,L]
RewriteRule	^collectivite/(.*)\.html$ /index.php?url=$1.html&sd=collectivite  [NC,QSA,L]
RewriteRule	^pro/sitemap.xml$ /index.php?url=sitemap.xml&sd=pro  [NC,QSA,L]
RewriteRule	^collectivite/sitemap.xml$ /index.php?url=sitemap.xml&sd=collectivite  [NC,QSA,L]
RewriteRule	^pro/(.*)$ /$1  [NC,QSA,L]
RewriteRule	^collectivite/(.*)$ /$1  [NC,QSA,L]
##########################

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule	^(.*) /index.php?url=$1  [NC,QSA,L]
##########################
</IfModule>

Aide les autres, ils t'aideront en retour.