Flux instagram sur mon site SPIP

Bonjour à tous,

J’utilise essentiellement SPIP et je n’ai jamais eu a faire à cette demande, mais une cliente veut sont fil d’Instagram sur son site (elle voit ça partout) sauf que je me m’aperçoit que sur SPIP je ne trouve pas pluging, tous les tutos trouvés concernent des autres CMS… comment faire ? Y a-t-il une méthode qui m’échappe ? merci de votre aide .

Tu peux le faire en passant par un intermédiaire comme https://zapier.com, peut être iftt aussi, qui à partir des nouveautés Instagram créera un flux RSS que SPIP pourra syndiquer et que tes squelettes afficheront

Merci JLuc, j’avoue que je suis un peu perdu (n’étant pas programmateur à la base), je me suis créé un compte sur Zapier mais je ne comprends pas bien comment il va me faire le lien avec mon site. il faudrait que je trouve un tuto pour comprendre comment utiliser un flux RSS à cette fin.

Les étapes :

  • sur zapier tu crées un zap : instagram (nouveautés) → flux rss.
    J’imagine que zapier t’indique alors l’url du flux créé.
    OK ?
  • dans l’espace privé de ton site spip, tu crées un nouveau « site » et tu y syndiques le flux créé
  • là où tu veux dans tes squelettes, tu crées la boucle syndic ( doc : La boucle SYNDIC_ARTICLES - SPIP ) qui présente les articles récupérés de ce site syndiqué. Il te faudra donc ici un peu de html et de css.

Merci pour ces précisions, JLuc

J’ai bien réussi a créer un flux RSS à partir de Zap, je saurais faire une boucle SYNDIC dans mon article en question et le personnaliser, mais je bute sur le fait de " créer un nouveau « site » et y syndiquer le site."

Je suis sous SPIP 4.5, dans mon admin, je ne trouve que des indications qui concernent mon site, je ne voie pas où se trouve ses options pour intégrer un site externe, il y a un plugin comme « Flux RSS configurable », c’est de ça qu’il s’agit ? Où il existe une autre solution ?

@Gaston il faut au préalable que tu ailles dans Configuration → Contenu du site → Référencement de sites et syndication et activer la gestion de l’annuaire de sites il me semble.

Merci @bricebou, c’est bon de se coté, je bute sur autre chose, je pense que c’est plutôt du coté de Zap, j’utilise ben la boucle Syndic, j’ai bien le texte, et les hashtags qui apparaissent, mais pas la photo, et il ne m’affiche que le dernier post publié (si je met des critère (0,6) il me met le m^me article a chaque fois), j’ai essayé plusieurs configuration possible, j’arrive a afficher l’url de l’image, mais pas l’image directement, du coté de SPIP, dans les critères de la boucle Syndic, il n’y a rien qui concerne les documents / images, j’ai tenté une boucle document avec un id_syndic mais ça ne marche pas non plus.

Ma boucle `<BOUCLE_un_article(ARTICLES){id_rubrique}>

<BOUCLE_n(SYNDIC_ARTICLES){id_rubrique}{syndication=oui} {par date} {inverse}>

#NOM_SITE [(#TITRE*)] [(#TAGS)]

</BOUCLE_n>
</BOUCLE_un_article>`

une que j’ai trouvé mais j’ai le même souci

`<BOUCLE_articlesyndic(SYNDIC_ARTICLES)
{id_rubrique}{pagination 10}{age<180}{par date}{inverse}>

[(#TITRE*)] [
(#TAGS|afficher_enclosures)
] [(#DATE|affdate_court)][, <:par_auteur:> (#LESAUTEURS)] [ — (#TAGS|afficher_tags)] [
(#DESCRIPTIF|image_reduire{500})
]
[

(#PAGINATION) - #GRAND_TOTAL billets

] `

Dès lors que tu as l’url de l’image tu peux l’afficher en créant un <img src="...l'adresse...">

Sur un site sinon je me sers du filtre suivant que j’applique à #TAGS :

function rss_tags_image(string $tags, int $size=300) {
	$s = array();
	foreach (extraire_balises($tags, 'a') as $tag) {
		if (extraire_attribut($tag, 'rel') == 'enclosure' and $t = extraire_attribut($tag, 'href')) {
			$s[] = image_reduire($t, $size, $size); // Gère bien l'exif avec convert mais pas avec gd2
		}
	}
	return join('&nbsp;/ ', $s);
}

Hello,

je reviens par ici, (un covid entre temps) et je tente de comprendre mais @JLuc quand tu dis

Dès lors que tu as l’url de l’image tu peux l’afficher en créant un

Ça ne va pas, je chercher a créer une boucle qui va actualiser mon fil insta sur ma page d’un site SPIP.
J’obtiens cet URL à travers #TAGS, je ne trouve pas de #URL_IMAGE (par ex)

Pour le moment avec cette boucle :
<BOUCLE_un_article(ARTICLES){id_rubrique}>
#NOM_SITE

<BOUCLE_n(SYNDIC_ARTICLES){id_rubrique}{syndication=oui} {par date} {inverse}>

[(#TITRE*)]

[(#TAGS)]

</BOUCLE_n>

</BOUCLE_un_article>

j’obtiens un truc comme ça :

J’ai bien mes postes qui s’affichent, j’ai le lien URL de l’image en double, la deuxième est cliquable. Mais je comprends pas comment on affiche l’image dans le site. Les balises pour la syndication sont peu nombreuse, et il n’y a rien qui concerne les #URL_image par ex. Comme dans les boucles spip classique.

Concernant le filtre, je n’ai pas réussi a le faire marcher, il faut le mettre dans mesfonctions.php ?

Oui, comme tous les filtres, ce filtre doit être déclaré dans un fichier de fonctions.
Ensuite tu dois l’appliquer là où tu veux afficher tes images.
Et il convertit « le truc comme ça » en une suite d’images.

<BOUCLE_n(SYNDIC_ARTICLES){id_rubrique}{syndication=oui} {par date} {inverse}>
[(#TAGS|rss_tags_image)]
</BOUCLE_n>

Après il faut le html et les classes pour que ça apparaisse plus précisément comme tu veux.

Hello, je reviens sur ce site laissé de coté,
Merci pour ton aide,
j’ai essayé de mettre le filtre, mais, j’ai une page blanche… il m’annonce :

« Erreur d’exécution squelettes/compositions/rubrique-news.html | File […]/squelettes/mes_fonctions.php Line 7 : Call to undefined function image_reduire() »

Je ne pense pas y arriver…
bien que ce SPIP soit une communauté d’entraide, est-il possible de demander une prestation rénumérée pour le faire ? Si cela t’intéresse @JLuc ?

Là c’est un peu bizarre car la fonction image_reduire fait partie du noyau de spip. C’est comme si ton fichier de fonctions n’était pas lu.
cf Déclarer des fonctions - Programmer avec SPIP 4.0

Peut être pourrais tu essayer de définir un filtre tout simple et à l’appeler dans un squelette tout simple et voir ce qui se passe.

Et tester sans passer par une composition aussi.

Et pour la prestation je laisse ma place à d’autres. :slight_smile:

Ajoute include_spip('inc/filtres_images_mini'); avant l’appel de image_reduire…

J’ai ajouté de cette façon la ligne de code je ne sais pas si j’ai bien fait…
J’ai pris la composition par default pour ne pas passer par composition

"<?php

function rss_tags_image(string $tags, int $size=300) {
$s = array();
foreach (extraire_balises($tags, ‹ a ›) as $tag) {
if (extraire_attribut($tag, ‹ rel ›) == ‹ enclosure › and $t = extraire_attribut($tag, ‹ href ›)) {
include_spip(‹ inc/filtres_images_mini ›);
$s[] = image_reduire($t, $size, $size); // Gère bien l’exif avec convert mais pas avec gd2
}
}
return join(’ / ', $s);
}

?>"

Par moment ma page apparait (sans image) comme la capture plus haut, et par moment j’ai ce message / page blanche

« Erreur d’exécution squelettes/rubrique.html | File […]/squelettes/mes_fonctions.php Line 8 : Call to undefined function image_reduire() »

mes_fonctions.php est bien dans mon dossier squelettes, je vais voir avec un filtre tout simple, déposé dans mes_fonctions.php.

et donc en plaçant un filtre simple comme celui mis en exemple dans mes_fonctions.php :

<?php
function filtre_hello_world($v, $add){
	return "Titre:" . $v . ' // Suivi de: ' . $add;
}
?>

j’ai bien "Titre:titre de l’article // Suivi de : ce texte s’ajoute après " qui apparait,
j’ai mis en dessous ton code, la page s’affiche sans message d’erreur, mais je n’ai toujours pas d’image…

Je reviens par ici pour donner la réponse que @Mathieu_L m’a conseiller:
https://elfsight.com/instagram-feed-instashow/jquery/

ça marche et très simple à mettre en place !

Merci pour votre aide !