Jump to content
mbar

Link D'un Fichier Css Sur Une Seule Page

Recommended Posts

Bonjour,

 

je suis novice sur Prestashop, j'ai encore un peu de mal à réaliser exactement ce que je veux.

J'ai créé un module qui me permet d'afficher sur une page que j'ai créé un formulaire. J'ai donc créé le controller de ma page, le template, j'ai activé l'url etc... ça pas de problème.

Pour la mise en page, de cette fameuse page, je veux linker mon fichier CSS.

J'ai donc ajouté à mon module dans la fonction install()

$this->registerHook('header')

et créé la fonction

public function hookDisplayHeader()
{
    $this->context->controller->addCSS($this->_path.'views/css/display.css', 'all');
}

Problème, le fichier CSS est link sur toutes les pages du site.

Comment pourrais je faire pour qu'il ne soit link que sur la page que j'ai créé ?

 

Merci

Crdlt

Share this post


Link to post
Share on other sites

Bonjour,

 

Question quelle est la taille de ce fichier ?

 

Si il est léger autant le "linker" sur toutes les pages.

 

Pourquoi ? Dès qu'un internaute ira sur cette page il rechargera tous les css et les js car ils ne seront pas en cache

 

Sinon pour répondre à votre question vous avez la solution et des informations ici :

 

https://www.prestashop.com/forums/topic/436748-compression-des-fichiers-js-et-css-wtf

 

3pom

Share this post


Link to post
Share on other sites

Il s'agit d'un petit fichier CSS.

Mais c'était + par sécurité, pour être sur que je ne créé pas une class css qui existe déjà, et donc modifier le style d'un truc que je ne voulais pas.

 

Merci pour le lien :)

Edited by mbar (see edit history)

Share this post


Link to post
Share on other sites

Il suffit de créer un id spécifique 

#monid .ma_classe {}

Sinon pour empêcher d'avoir le ccs par exemple pour ProductController 

if (get_class($this->context->controller) == 'ProductController')
{

$this->context->controller->addJS($this->_path.'views/js/xxxxxx.js');

}

Share this post


Link to post
Share on other sites

mais je comprends pas

Si tu as créé un controller, rien à voir avec le hook d'un module

Dans ton controller setMedia() pour injecter le css, juste quand ce controller se lance

Share this post


Link to post
Share on other sites

mais je comprends pas

Si tu as créé un controller, rien à voir avec le hook d'un module

Dans ton controller setMedia() pour injecter le css, juste quand ce controller se lance

 

Tu as tout à fait compris, c'est juste que je débute, j'ai pas encore toutes les connaissances. Merci ça m'a l'air tout à fait ce que je cherchais :)

public function setMedia()
{
    parent::setMedia()
    Tools::addCSS(_PS_MODULE_DIR_ .'monmodule/page.css');
}

On l'utilise comme ça ?

Share this post


Link to post
Share on other sites

Tools::addCss() est deprecated

$this->addCss() devrait faire l'affaire.

Share this post


Link to post
Share on other sites
public function setMedia()
{
	parent::setMedia();
/*	$this->context->controller->addCSS($this->_path.'views/css/display.css'); */
	$this->addCSS('view/css/display.css');
}

Dans mon controller j'ai rajouté ça. ça ne marche pas... $this->addCSS ne s'utilise pas comme ça ? J'ai essayé plein de path différent rien n'y fait.

Dois-je appeler setMedia dans la fonction initContent de mon controller ? ou autre part dans le controller ?

Share this post


Link to post
Share on other sites

Juste pour être sûr, tu es bien dans un fichier modules/mymodule/controllers/front/XXXXController.php

qui a cette tête en gros

class XXXXXXXController extends ModuleFrontController
{

/// Something

public function setMedia()
{
  parent::setMedia();
  $this->addCSS(__PS_BASE_URI__.'modules/'.$this->module->name.'/mycss.css');
  // ^^ -> modules/mymodule/mycss.css override themes/yyy/css/modules/mymodule/mycss.css
}

//Something

}

J'écris un rien de tête donc fais pas un copier coller de ça

 

Edité pour corriger justement une typo

Edited by doekia (see edit history)

Share this post


Link to post
Share on other sites

modules/myform/controllers/front/display.php

 

display.php

<?php

class myformdisplayModuleFrontController extends ModuleFrontController
{
	public function initContent()
	{
		parent::initContent();
		$this->setTemplate('display.tpl');
	}

	public function postProcess()
	{
		if (Tools::isSubmit('submit'))
		{
			if (Tools::getValue('1') == 'maison')
						$this->context->smarty->assign(array('test' => 'maison'));
			else if (Tools::getValue('1') == 'appartement')
						$this->context->smarty->assign(array('test' => 'appartement'));
			else
						header('Location: index.php');
		}
	}

	public function setMedia()
	{
		parent::setMedia();
		$this->addCSS('modules/myform/view/css/display.css', 'all');
	}

}

?>

le css est dans modules/myform/views/css/display.css

Share this post


Link to post
Share on other sites

Ta question c'est quel chemin mettre dans addCSS,

je te dis de mettre $this->addCSS(__PS_BASE_URI__. ...

et tu réponds en mettant $this->addCSS( ...

 

Ben il en manque un bout,

 

regarde ligne 1301 de classes/controller/FrontController.php

Share this post


Link to post
Share on other sites

J'ai copié mon fichier ici, avant d'essayer ce que tu m'as dit, ça va je suis pas abruti. Et ça ne marche pas de toute façon.

Je débute sur Prestashop, pas besoin d'être aussi hautain. Je suis développeur, je suis pas un gamin de 12ans.

J'ai pas l'habitude de crier au secours comme ça, mais je ne trouve aucune doc officiel sur Prestashop, donc comment connaître les Class et les méthodes qui existent... J'en ai aucune idée, comment connaître leur prototype aucune idée non plus. Donc je viens ici pour apprendre des autres, pas pour me faire traiter de "abruti tu fais pas ce que je te dis".

 

Bref, sinon je bosse avec prestashop 1.6, on sait jamais.

 

 

C'est bon merci, maintenant je sais où aller voir pour avoir le prototype des méthodes. Merci

Edited by mbar (see edit history)

Share this post


Link to post
Share on other sites

hautain ... ?!?

ça ne marche pas de toute façon ??!!??

Quand à lire ce que j'écris tu y mets le ton que tu veux, mais ce n'est pas le ton avec lequel je l'écris.

Si je remets en gros et gras et que je répète c'est pour être sûr que ce ne soit pas justement un lecture un peu rapide qui t'amène à misérer pour une inattention.

 

la doc officielle technique c'est lire le code avec PrestaShop, c'est pas ma faute quand même

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More