Jump to content

Style spécifique à une page


Recommended Posts

Bonjour :) 

 

J'essai d'appliquer un style css particulier à certaines pages qui commencent par telles ou telles URL, j'ai essayé de mettre le code suivant dans le header.tpl sans succès :

<?php
    $requested_page = $_SERVER['REQUEST_URI'];
    if ($requested_page === "URL" || $requested_page === "URL") {
        echo '<link rel="stylesheet" type="text/css" href="{$css_dir}orders.css">';
    }
?>

La page est bien détectée mais il y a la fin du code Php qui est affiché dans le leader, mais le style spécifique n'est pas appliqué... 

Link to comment
Share on other sites

Bonsoir,

Pourquoi mettre du php dans un tpl ?

 

dans ton header.tpl tu fais du smarty.

 

pour la page order-opc:

{if $page_name == 'order-opc'}

<link rel="stylesheet" type="text/css" href="{$css_dir}orders.css">

{/if}

 

pour connaitre le  nom d une page tu fais:

{$page_name}

 

 

cdt

Link to comment
Share on other sites

Merci pour ce retour !

 

Je savais pas qu'il fallait faire du smarty dans les fichiers tpl :-)

 

En revanche je ne comprends pas bien l'utilisation de {$page_name}

 

En fait, ce que je souhaite faire, c'est appliquer un css particulier à toute les pages liées au tunnel d'achat, c'est à dire toute les pages avec le bandeau des étapes "01. Récapitulatif", "02. Connexion" etc... jusqu'au paiement. 

 

C'est pour cela que je pensais utiliser l'URL pour donner un style avec une fonction Php, mais peut-être avez-vous une autre solution ? :) 

Edited by Yann74 (see edit history)
Link to comment
Share on other sites

La variable smarty {$page_name} indique le nom de la page (logique hein)

Il faut que tu identifie le nom des pages pour ton tunnel (en laissant {$page_name} dans le header ca affichera le nom de la page)

ensuite tu fais une condition:

 

{if $page_name == 'page1'}

<link rel="stylesheet" type="text/css" href="{$css_dir}orders.css">

 

{elseif $page_name == 'page2'}

<link rel="stylesheet" type="text/css" href="{$css_dir}orders.css">

 

 

{elseif $page_name == 'page3'}

 

<link rel="stylesheet" type="text/css" href="{$css_dir}orders.css">

{elseif $page_name == 'page4'}

 

{/if}

Link to comment
Share on other sites

Avec ta méthode, j'ai pu voir le fichier tpl du tunnel  : order-steps.tpl :)

 

Dedans, j'ai directement mis du style : <style></style>, celui-ci s'applique bien sur toute les étapes du tunnel d'achat, sauf une page : si un internaute n'a pas de compte, il en crée un, et au moment de valider son inscription il arrive directement sur la page des adresses pour qu'il en enregistre une afin de continuer l'achat.

 

L'adresse URL de cette page est : mondomaine.com/fr/adresse?back=order.php%3Fstep%3D1

Alors que la même page, sans être entré dans le tunnel d'achat est : mondomaine.com/fr/adresse

 

Une idée ? :)

Edited by Yann74 (see edit history)
Link to comment
Share on other sites

Alors finalement j'ai trouvé une autre solution avec le javascript, voici le script utilisé pour celles et ceux qui seraient intéressés : 

if(window.location.search.substring(1)=="back=order.php%3Fstep%3D1"){
	$('head').append('<link href="{$css_dir}tunnel-order.css" rel="stylesheet" type="text/css" />');
	}
	else{
	}

Par contre impossible de trouver un moyen pour que si l'URL contient uniquement "back=order.php" et pas obligatoirement "back=order.php%3Fstep%3D1" le link s'ajoute quand même...

Pareil, si le Prestashop est paramétré pour charger le Javascript à la fin, celui-ci sera aussi chargé à la fin, en fonction des éléments CSS chargés par le link, cela peut se voir lors du chargement de page par l'internaute. Alors je cherche un moyen pour donner une exception à cette règle de chargement. 

 

Edit : mon Prestashop n'est même pas encore paramètre pour charger le Javascript à la fin et pourtant, quand ma page se charge, les éléments que je souhaite cacher avec le css rajouté avec le javascript s'affichent puis disparaissent. Ce qui est dérangeant c'est qu'ils s'affichent avant de disparaitre, ils devraient même pas s'afficher. Je cherche un moyen pour ça :-)

Edited by Yann74 (see edit history)
Link to comment
Share on other sites

Effectivement, j'aimerais bien... Avec la solution de Alexandre-KM ça aurais été possible, mais le souci c'est que la page qui s'appelle adresse est accessible via deux url :

- mondomaine.com/fr/adresse

et 

- mondomaine.com/fr/adresse?back=order.php%3Fstep%3D1 

 

Pour le premier lien, l'internat va dans son espace client, et clique sur "ajouter une adresse" pour arriver sur cette page, rien à voir avec le tunnel d'achat donc. 

Mais pour le deuxième lien, c'est si un internaute n'a pas d'adresse enregistrée qu'il va arriver sur cette page. Lorsqu'il commence les étapes de la validation de sa commande (les fameuses 5 étapes), s'il n'a pas de page enregistrée, il va arriver sur cette page pour ajouter une adresse. Il est donc bien toujours dans le processus de passation de commande.

 

"Heureusement" les deux liens sont différents. Le premier n'a rien à voir avec le processus de commande, le deuxième a tout à voir avec le processus de commande. 

 

En utilisant le smarty, savez-vous de quelle manière pourrais-je arriver à faire ce que je souhaite ? :-(

Link to comment
Share on other sites

  • 4 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...