Jump to content

CSS et <img> qui ne fonctionne pas


Samos

Recommended Posts

Bonjour a tous,

Je viens vous écrire aujourd'hui pour vous faire part d'un problème que je rencontre lié au controllers de mon module.

Le css ainsi que la balise img de mon tpl ne fonctionne pas je ne comprend pas vraiment pourquoi...

<?php

class sa_modtaskModuleFrontController extends ModuleFrontController
{
  public function __construct()
  {
    parent::__construct();
  }

  public function setMedia()
  {
    parent::setMedia();
    $this->path = __PS_BASE_URI__.'modules/sa_mod/';
    $this->context->controller->addCSS($this->path.'views/css/style.css', 'all');
  }

  public function init()
  {
    parent::init();
  }

  public function initContent()
  {
    parent::initContent();
    $this->setTemplate('module:sa_mod/views/templates/front/task.tpl');
  }
}

Voila comment j'essaye d’intégrer mon css dans mon controller. (bien évidemment j'ai mon fichier style.css au bon endroit)

Pour mon .tpl je fais une simple balise <img> avec le bon chemin, cependant il ne trouve pas l'image et n'affiche que le alt.

Merci. :) 

Link to comment
Share on other sites

Bonjour,

Pour le CSS, dans votre public function setMedia :
Essayez : $this->context->controller->addCSS($this->_path.'views/css/style.css', 'all');
Ou bien :
$this->path_myroot   = _PS_BASE_URL_SSL_.__PS_BASE_URI__.'modules/sa_modtask/'; // Ou "sa_mod" suivant nom du dossier.
$this->context->controller->addCSS($this->path_myroot.'views/css/style.css');

Pour l'image, vérifiez sur la page l'affichage de l'attribut src de la balise image. Le chemin n'est probablement pas correct.

Link to comment
Share on other sites

Merci énormément pour votre réponse, cependant ça ne fonctionne pas.

Je vous met l'arborescence de mon module et la balise src de mon tpl. C'est normalement le bon chemin.

arbo.thumb.png.ed8f4f7c994df61d9bf244c5caadd846.png

task.tpl :

<img src="../../img/entete.png" alt="logo">

logo.png.6fb642c37d8abdf73b92b95908e0279d.png Voici pourtant ce qui est affiché.

Encore merci pour votre aide ! :D   

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

Le chemin relatif de votre image affiche quoi ?

src="../../img/entete.png"

Regardez le code source pour le savoir.

Vous pouvez également utiliser un chemin absolu exemple : src="{$my_img|escape:'htmlall':'UTF-8'}" en ayant assigné la variable $my_img à Smarty ou encore src="{$base_dir}/suite du chemin"

Link to comment
Share on other sites

8 minutes ago, YopixelAE said:

Le chemin relatif de votre image affiche quoi ?

modules/samod/views/img/entete.png

11 minutes ago, YopixelAE said:

Vous pouvez également utiliser un chemin absolu exemple : src="{$my_img|escape:'htmlall':'UTF-8'}" en ayant assigné la variable $my_img à Smarty

Dans mon controller dans initContent() :

$this->context->smarty->assign('my_img', ($this->module->path).'/views/img/entete.png')

peut être que je m'y prend mal car ca ne marche pas?

16 minutes ago, YopixelAE said:

src="{$base_dir}/suite du chemin"

Non 😢

Merci de votre aide

Link to comment
Share on other sites

Toujours rien...

1 hour ago, YopixelAE said:

return $this->display($this->templateFile);

La page ne se charge pas avec display, en le changeant par setTemplate elle se charge mais toujours pas d'image ni de css.

Link to comment
Share on other sites

Mettez-en ligne à télécharger votre module au format .zip
Ce sera plus clair.
Sur PrestaShop 1.7 vous pouvez aussi insérer votre CSS de cette façon :
$this->context->controller->registerStylesheet('modules-sa', 'modules/' . $this->name . '/views/css/style.css', ['position' => 'bottom', 'priority' => 150]);
Pour l'image, je pense que le chemin affiché en front-office n'est pas complet.

Link to comment
Share on other sites

Ci-dessous un fichier controllers>front>task.php fonctionnel
Image et CSS chargés (sans utiliser le setMedia)
Ajoutez dans votre task.tpl :
<img src="{$_IMGfolder}entete.png" alt="logo"></img>
Et en fin de fichier task.tpl :
<link rel="stylesheet" href="{$_CSSpath}/style.css" type="text/css">

Fichier task.php :

<?php

class SamodTaskModuleFrontController extends ModuleFrontController
{
  public function __construct()
  {
    parent::__construct();
  }

  public function init()
  {
    parent::init();
  }

  public function initContent()
  {
    parent::initContent();
	
	$this->path_myroot   = _PS_BASE_URL_SSL_.__PS_BASE_URI__;
    $this->context->smarty->assign(array(
        '_IMGfolder' => $this->path_myroot.'modules/samod/views/img/',
		'_CSSpath' =>   $this->path_myroot.'modules/samod/views/css/'
      )
    );
    $this->templateFile = 'module:samod/views/templates/front/task.tpl';
    $this->setTemplate($this->templateFile);
  }
}

Résultat :

result.jpg.944b241b8e3bf14e3ce51d11a9458dd5.jpg

  • Thanks 1
Link to comment
Share on other sites

2 hours ago, YopixelAE said:

Ci-dessous un fichier controllers>front>task.php fonctionnel
Image et CSS chargés (sans utiliser le setMedia)
Ajoutez dans votre task.tpl :
<img src="{$_IMGfolder}entete.png" alt="logo"></img>
Et en fin de fichier task.tpl :
<link rel="stylesheet" href="{$_CSSpath}/style.css" type="text/css">

 

Merci infiniment, je pensais que c'était peine perdue. Je vais de suite essayer ! Mille merci ! 😁😮

Link to comment
Share on other sites

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...