11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
sur certaines page de mon site je doit faire afficher les photos de notre compte Flickr, pour ce faire j'utilise un script jquery jFlickrfeed.

Je cherche à afficher seulement les photos lié au produits présenté. Sur Flickr, elles sont toute classé par album et avec des tags.

Voilà, dans mon script il y a ça:
$(document).ready(function(){

	$('#basicuse').jflickrfeed({
		limit: 16,
		qstrings: {
			id: '118198957@N08'
		},
		itemTemplate: '<li><a href="{{image_b}}"><img src="{{image_m}}" alt="{{title}}" /></a></li>'
	});
	.....
});


Je veux ajouté le tag du produits:
$(document).ready(function(){

	$('#basicuse').jflickrfeed({
		limit: 16,
		qstrings: {
			id: '118198957@N08',
			tags: 'produit'
		},
		itemTemplate: '<li><a href="{{image_b}}"><img src="{{image_m}}" alt="{{title}}" /></a></li>'
	});
	.....
});


Seulement ce tags change selon le produit pr/sent/, je doit donc récupérer l'info php qui est stocké dans $produits en début de page... et je doit donc éjecter ça dans mon code js... Smiley sweatdrop

J'ai fait quelques recherche et trouvé un truc comme ça, mais ça ne fonctionne pas... Je suis peut-être à côté de la plaque?
$(document).ready(function(){

	var album = <?php echo $produits; ?>;

	$('#basicuse').jflickrfeed({
		limit: 16,
		qstrings: {
			id: '118198957@N08',
			tags: album
		},
		itemTemplate: '<li><a href="{{image_b}}"><img src="{{image_m}}" alt="{{title}}" /></a></li>'
	});
	.....
});


Une idée???
Modérateur
Salut Julie, Smiley smile

Je passe en coup de vent pour te dire que ta manière de faire me parait bonne. J'aurais fait légèrement différemment mais ça reste la même idée.


$(function(){

	$('#basicuse').jflickrfeed({
		limit: 16,
		qstrings: {
			id: '118198957@N08',
			tags: <?php echo $produits; ?>
		},
		itemTemplate: '<li><a href="{{image_b}}"><img src="{{image_m}}" alt="{{title}}" /></a></li>'
	});
	.....
});


Est ce que tu obtiens bien une valeur à $produits ?. Si tu écris quelque chose en dur à la place de echo $produits, est ce que tu obtiens un résultat convaincant ?
J'ai essayé de cette façon et ça ne fonctionne pas...

ma valeur $produits renvoie bien la bonne info dans ma page php, mais ne renvoi rien via le code js (alert())
Modifié par juliesunset (03 Aug 2015 - 21:21)
Bonsoir,

C'est peut être idiot, mais ce ne serait pas tout simplement juste un oubli de quotes autour du tag, vu qu'une chaîne est apparemment attendue ?

$(function(){

	$('#basicuse').jflickrfeed({
		limit: 16,
		qstrings: {
			id: '118198957@N08',
			tags: '<?php echo $produits; ?>' // <---- LÀ.
		},
		itemTemplate: '<li><a href="{{image_b}}"><img src="{{image_m}}" alt="{{title}}" /></a></li>'
	});
	.....
});
Re,
Question encore plus stupide mais bon on ne sait jamais… tu te trouve bien sur un fichier .php et pas .js ? Smiley biggol
Smiley biggol Oui! Smiley cligne
Donc, mais page est en php et j'appel les fichiers jquery qui me permet de récupérer les images de Flickr. Et c'est dans l'un des fichier .js que je doit récupérer la valeur $produits qui est déjà dans la pas php.
juliesunset a écrit :
Et c'est dans l'un des fichier .js que je doit récupérer la valeur $produits


ceci est impossible. tu ne peux pas appeler une variable PHP ($) dans un fichier portant l'extension .js Smiley mur
Modérateur
JENCAL a écrit :


ceci est impossible. tu ne peux pas appeler une variable PHP ($) dans un fichier portant l'extension .js Smiley mur


+1 ou sinon tu fais une requête ajax pour aller chercher la variable. mais c'est pas top (requete serveur)

Je ne comprends paas bien où tu te trouves : ce code est bien dans un fichier php ?

$(function(){

	$('#basicuse').jflickrfeed({
		limit: 16,
		qstrings: {
			id: '118198957@N08',
			tags: <?php echo $produits; ?> // <---- LÀ.
		},
		itemTemplate: '<li><a href="{{image_b}}"><img src="{{image_m}}" alt="{{title}}" /></a></li>'
	});
	.....
});
Ce code est dans le fichier js qui est appelé dans la page php.

Ajax, j'y avais pensé... mais je ne connait pas du tout...
Modérateur
En fait j'ai mieux à te proposer. l'Ajax n'est pas une bonne solution. Tu feras une requête serveur pour pas grand chose. Or tu peux surement stocker la variable à un endroit du DOM. Tu peux la glisser dans un noeud avec cet attribut par exermple :

<div id="unDiv" data-flicker="<?php echo $produits ?>">
<!-- etc. -->
</div>


$('#basicuse').jflickrfeed({
		limit: 16,
		qstrings: {
			id: '118198957@N08',
			tags: $('#unDiv').data('flicker')
		},
		itemTemplate: '<li><a href="{{image_b}}"><img src="{{image_m}}" alt="{{title}}" /></a></li>'
	});

Modifié par niuxe (04 Aug 2015 - 17:25)
euh comment dire.... Smiley eek
Ça marche!

Merci cher ami!!!! Smiley prie J'aurais jamais trouvé cette solution qui est pourtant si simple!
Modérateur
Pour information, l'attribut data-flicker est valide seulement html5. En html5, lorsque tu souhaites créer un attribut exotique, tu préfixes par "data-". Ainsi tu seras valide et tu éviteras de ce fait, les bogues potentiels.

La méthode de jcuicui pour accéder plus rapidement à un attribut exotique, tu peux utiliser .data(). Si cette méthode n'a qu'un seul arguement, cela te renverra la valeur de ton attribut. Si cette méthode a deux arguements, le premier sera le nom de l'attribut et le deuxième sera la valeur de ce dernier.

Tu peux aussi accéder à un attribut exotique via la méthode .attr(). Ça fonctionne bien sûr de la même manière. Par contre, il faudra cibler l'attribut en toute lettre ('data-flikr'). Cette manière de faire est apparemment moins performante.

En JS natif, il faudra utiliser l'ancienne méthode pour récupérer la valeur de data-flikr :
document.getElementById('unDiv').getAttribute('data-flikr')

Modifié par niuxe (04 Aug 2015 - 20:36)