Jump to content

Insérer du JS dans .tpl (Prestashop 1.7)


cocof

Recommended Posts

Pour insérer du JS dans un template de PS 1.7, est-ce que l'ajout de {literal} suffit?

<script type="text/javascript">
{literal} 
(function () {
	var headertext = [];
	var headers = document.querySelectorAll("thead");
	var tablebody = document.querySelectorAll("tbody");
	
	for(var i = 0; i < headers.length; i++) {
		headertext[i]=[];
		for (var j = 0, headrow; headrow = headers[i].rows[0].cells[j]; j++) {
		  var current = headrow;
		  headertext[i].push(current.textContent.replace(/\r?\n|\r/,""));
		  }
	} 
	
	if (headers.length > 0) {
		for (var h = 0, tbody; tbody = tablebody[h]; h++) {
			for (var i = 0, row; row = tbody.rows[i]; i++) {
			  for (var j = 0, col; col = row.cells[j]; j++) {
			    col.setAttribute("data-th", headertext[h][j]);
			  } 
			}
		}
	}
} ());
{/literal}
</script>
Edited by cocof (see edit history)
Link to comment
Share on other sites

  • 2 years later...

Bonjour,

essaie comme ça :

Quote

{literal} 
<script type="text/javascript">

(function () {
	var headertext = [];
	var headers = document.querySelectorAll("thead");
	var tablebody = document.querySelectorAll("tbody");
	
	for(var i = 0; i < headers.length; i++) {
		headertext[i]=[];
		for (var j = 0, headrow; headrow = headers[i].rows[0].cells[j]; j++) {
		  var current = headrow;
		  headertext[i].push(current.textContent.replace(/\r?\n|\r/,""));
		  }
	} 
	
	if (headers.length > 0) {
		for (var h = 0, tbody; tbody = tablebody[h]; h++) {
			for (var i = 0, row; row = tbody.rows[i]; i++) {
			  for (var j = 0, col; col = row.cells[j]; j++) {
			    col.setAttribute("data-th", headertext[h][j]);
			  } 
			}
		}
	}
} ());
</script>
{/literal}

 

Link to comment
Share on other sites

il y a 34 minutes, koogar a dit :

En effet sur le 1.6 et 1.7 ca ne fonctionne pas, aucun soucis sur les versions antérieurs a 1.6

Ah bon, pourquoi ?

car j'utilise très souvent et cela marche très bien. Mais bon, je préfère utiliser les balises smarty {ldelim} et {rdelim} à la place des accolades.

https://www.smarty.net/docsv2/fr/language.function.ldelim.tpl

Link to comment
Share on other sites

Je suis en train de modifier des footers, et je te promet que sur les 1.6 ca ne fonctionne pas, la page s'affiche mais le JS n'est pas interprété. Je vais essayer avec les balises smarty {ldelim} et {rdelim} à la place des accolades et je re @demain

Link to comment
Share on other sites

Si tu le dit, perso sur mon site j'ai les 2 écritures dans le header ou dans le footer et pas le moindre soucis de traitement.

Je précise que hje suis bien en 1.6.

Pour la 1.7 le soucis vient d’ailleurs mais logiquement avec du js pur cela devrait passer.

Link to comment
Share on other sites

Testé a l'instant sur la 1.6.1.4

Dans le footer.tpl

La date ne s'affiche pas :

<script type="text/javascript">
{ldelim}  document.write(new Date().getFullYear());{rdelim}</script>

<script type="text/javascript">
{literal}  document.write(new Date().getFullYear());{/literal}
</script>

Sur la 1.5 aucun souci

 

 

Link to comment
Share on other sites

Dans un premier temps, savez vous pourquoi on utilise literal ou ldelim ?

Car dans votre code cela ne sert à rien.

Si je colle ce code :

<script type="text/javascript">document.write(new Date().getFullYear());</script>

<script type="text/javascript">document.write(new Date().getFullYear());</script>

Dans mon PS 1.6.1.22 j'obtiens bien le résultat

image.png.cf329866a1f2eff4a649eddd7baed1fa.png

Link to comment
Share on other sites

1° Pour la 1.6.1.4

Tout en bas dans le footer: http://import.nc/

le code <div class="text-center">2015  - <script type="text/javascript">document.write(new Date().getFullYear());</script> <a href="https://phpsources.net/" ><b>PHP SOURCES</b>

Si on regarde le source de la page en ligne, le JS a disparu

 

2° Voir le footer, ici ca fonctionne avec balise, c'est une version 1.5.4

http://grossiste.nc/

 

3° Je viens de le mettre a l'instant sur la 1.7, sans aucune balise, et comme tu l'as indiquer ca fonctionne :

http://hempline.fr/

 

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

O temps pour moi,  je n'avais pas vu qu'il s’était glissé dans le coin a gauche, mais alors pourquoi le JS va s’interpréter en dehors du div... mystère pour moi.

so, merci pour ton aide

{dateFormat date=$smarty.now|date_format:'%Y' full=0}

donne une erreur 500

 

Link to comment
Share on other sites

heu document.write() ? On est plus dans les années 70 les gars

un document.write dans un js qui va être maltraité par le chargement asynchrone et la compression ccc je sais pas ce que ça va donner mais surement rien de très bon au final

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