C'est énorme ! MERCIIIIII
ça fonctionne impec et sur mon mur l'info apparait :
Jérôme aime http://www.jeromegillesphoto.com/galler … P_9626.jpg sur jeromegillesphoto.com.
Merci a tout le monde !
Hors ligne
jéjé a écrit:
ça fonctionne impec et sur mon mur l'info apparait :
Moi, je ne vois pas sur le mien... je vais remettre mes lunettes ;-)
Des que le plugin officiel sera sorti, il faudra supprimer ce code pour éviter les erreurs de double déclaration de fonctions.
Voici la version par XFBML:
function fbp_AddSocial($content, &$smarty) { // iframe implementation /* $fbp_content = ' <iframe src="http://www.facebook.com/plugins/like.php?href={$SRC_IMG}&layout=standard&show_faces=true&width={$WIDTH_IMG}&action=like&colorscheme=light&height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:{$WIDTH_IMG}px; height:80px;" allowTransparency="true"></iframe> ';*/ // XFBML implementation // async method /* $fbp_content = ' <div id="fb-root"></div> <script> {literal} window.fbAsyncInit = function() { FB.init({ appId : \'111499825588662\', status : true, // check login status cookie : true, // enable cookies to allow the server to access the session xfbml : true // parse XFBML }); }; (function() { var e = document.createElement(\'script\'); {/literal} e.src = document.location.protocol + \'//connect.facebook.net/{$language}/all.js\'; {literal} e.async = true; document.getElementById(\'fb-root\').appendChild(e); }()); {/literal} </script> ';*/ // sync method $fbp_content = ' <div id="fb-root"></div> <script src="http://connect.facebook.net/en_US/all.js"></script> <script> FB.init({ldelim} appId : \'111499825588662\', status : true, // check login status cookie : true, // enable cookies to allow the server to access the session xfbml : true // parse XFBML {rdelim}); </script> <script src="http://connect.facebook.net/{$language}/all.js#xfbml=1"></script> '; $fbp_content .= ' <fb:like href="{$SRC_IMG}" show_faces="true" width="{$WIDTH_IMG}"></fb:like> '; return $content.$fbp_content; } function fbp_loc_begin_picture() { global $template, $user; // set prefilter $template->set_prefilter('header', 'fbp_header'); $template->set_prefilter('default_content', 'fbp_AddSocial'); // Always use full url for FB social plugin set_make_full_url(); // define language $template->assign('language', $user['language']); } function fbp_loc_end_picture() { // Restore url unset_make_full_url(); } function fbp_header($content, &$smarty) { $search = '#<html #'; $replacement = '<html xmlns:fb="http://www.facebook.com/2008/fbml" '; return preg_replace($search, $replacement, $content); } add_event_handler('loc_begin_picture', 'fbp_loc_begin_picture'); add_event_handler('loc_end_picture', 'fbp_loc_end_picture');
Synchrone ou asynchrome, l'implementation XFBML me permet aussi de gérer la langue du 'like' (en iframe, il prend celle du navigateur) et ca me permet aussi de déclarer l'application Piwigo.
Hors ligne
rub a écrit:
jéjé a écrit:
ça fonctionne impec et sur mon mur l'info apparait :
Moi, je ne vois pas sur le mien... je vais remettre mes lunettes ;-)
J'ai vu les miens ;-)
Par contre, je fais porte le 'like' sur la photo et pas sur la page. Ca sera sans doute une option que je vais mettre.
L'avantage de la photo, c'est que si la photo est utilisé sur plusieurs sites en sites distants ou pas catégorie virtuel, ca sera les mêmes infos. L'inconvénient, en cliquant sur les activités sur mur, on tombe sur la photo directement.
Sur la page, l'avantage, c'est en cliquant sur les activités du mur, on tombe sur la page de la galerie, inconvénient, compteur différents pour les sites distants...
Je poste une version avec la page pour voir ce que ca donne...
Hors ligne
directement sur la photo on passe outre les histoires de catégories privés non ?? alors que sur la page si on a pas les droits on vas arriver sur une page "Vous n'êtes pas autorisé à accéder à la page demandée"
Hors ligne
jéjé a écrit:
directement sur la photo on passe outre les histoires de catégories privés non ?? alors que sur la page si on a pas les droits on vas arriver sur une page "Vous n'êtes pas autorisé à accéder à la page demandée"
Aussi en effet.
Voici le code avec la page en link like. C'est le code le plus court existant pour l'image sur le site => doit fonctionner avec les catégories virtuelles:
function fbp_AddSocial($content, &$smarty) { // iframe implementation /* $fbp_content = ' <iframe src="http://www.facebook.com/plugins/like.php?href={$SRC_IMG}&layout=standard&show_faces=true&width={$WIDTH_IMG}&action=like&colorscheme=light&height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:{$WIDTH_IMG}px; height:80px;" allowTransparency="true"></iframe> ';*/ // XFBML implementation // async method /* $fbp_content = ' <div id="fb-root"></div> <script> {literal} window.fbAsyncInit = function() { FB.init({ appId : \'111499825588662\', status : true, // check login status cookie : true, // enable cookies to allow the server to access the session xfbml : true // parse XFBML }); }; (function() { var e = document.createElement(\'script\'); {/literal} e.src = document.location.protocol + \'//connect.facebook.net/{$LANGUAGE}/all.js\'; {literal} e.async = true; document.getElementById(\'fb-root\').appendChild(e); }()); {/literal} </script> ';*/ // sync method $fbp_content = ' <div id="fb-root"></div> <script src="http://connect.facebook.net/en_US/all.js"></script> <script> FB.init({ldelim} appId : \'111499825588662\', status : true, // check login status cookie : true, // enable cookies to allow the server to access the session xfbml : true // parse XFBML {rdelim}); </script> <script src="http://connect.facebook.net/{$LANGUAGE}/all.js#xfbml=1"></script> '; /*$fbp_content .= ' <fb:like href="{$SRC_IMG}" show_faces="true" width="{$WIDTH_IMG}"></fb:like> ';*/ $fbp_content .= ' <fb:like href="{$FBP_URL_PICTURE}" show_faces="true" width="{$WIDTH_IMG}"></fb:like> '; return $content.$fbp_content; } function fbp_loc_begin_picture() { global $template, $user, $page; // set prefilter $template->set_prefilter('header', 'fbp_header'); $template->set_prefilter('default_content', 'fbp_AddSocial'); // Always use full url for FB social plugin //~ set_make_full_url(); // define language $template->assign('LANGUAGE', $user['language']); // define picture FB link set_make_full_url(); $template->assign('FBP_URL_PICTURE', make_picture_url(array('image_id' => $page['image_id']))); unset_make_full_url(); } function fbp_loc_end_picture() { // Restore url //~ unset_make_full_url(); } function fbp_header($content, &$smarty) { $search = '#<html #'; $replacement = '<html xmlns:fb="http://www.facebook.com/2008/fbml" '; return preg_replace($search, $replacement, $content); } add_event_handler('loc_begin_picture', 'fbp_loc_begin_picture'); add_event_handler('loc_end_picture', 'fbp_loc_end_picture');
J'ai activé ce code sur la demo piwigo.net
Hors ligne
Sur la page de piwigo ça fonctionne nikel, en revanche sur mon site lorsque je clic :
Vous aimez ça.Je n’aime plus · Page d’administration · ErreurJérôme Gilles aime ça.Soyez le premier de vos amis à indiquer que vous aimez ça.Je n’aime plus · Page d’administration · Erreur
si je clic sur "erreur" (sur la page de mon site) me dis :
La page à l’adresse http://www.jeromegillesphoto.com/picture.php?%2F4791 n’est pas accessible.
et sur ma page fb :
Jérôme aime http://www.jeromegillesphoto.com/picture.php?%2F4791. mais le lien fonctionne !!
Hors ligne
jéjé a écrit:
Sur la page de piwigo ça fonctionne nikel, en revanche sur mon site lorsque je clic :
Vous aimez ça.Je n’aime plus · Page d’administration · ErreurJérôme Gilles aime ça.Soyez le premier de vos amis à indiquer que vous aimez ça.Je n’aime plus · Page d’administration · Erreur
si je clic sur "erreur" (sur la page de mon site) me dis :
La page à l’adresse http://www.jeromegillesphoto.com/picture.php?%2F4791 n’est pas accessible.
et sur ma page fb :
Jérôme aime http://www.jeromegillesphoto.com/picture.php?%2F4791. mais le lien fonctionne !!
C'est surement parce que ta page est privée et que facebook ne peut pas y accéder...
Je vais voir ce que je peux faire, ca doit être possible de rediriger les interrogations de FB... sinon, il faut passer par un lien image comme initialement...
Hors ligne
je viens de tester c'est bien ça ! je vais repasser avec ton premier code !
et merci encore pour tout c'est vraiment cool.
Hors ligne
jéjé a écrit:
je viens de tester c'est bien ça ! je vais repasser avec ton premier code !
et merci encore pour tout c'est vraiment cool.
Par contre, faut que je trouve une solution avec la page car un autre avantage, c'est qu'il affiche le titre de la page/photo.
Hors ligne
Pourrais-tu essayer ce code? Il permet d’accéder au contenu de la page photo pour les ips de facebook.
J'ai testé en local mais pas sur site avec images privées. Ca sera plus rapide et simple, si tu pouvais tester sur ta configuration ;-)
function fbp_AddSocial($content, &$smarty) { // iframe implementation /* $fbp_content = ' <iframe src="http://www.facebook.com/plugins/like.php?href={$SRC_IMG}&layout=standard&show_faces=true&width={$WIDTH_IMG}&action=like&colorscheme=light&height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:{$WIDTH_IMG}px; height:80px;" allowTransparency="true"></iframe> ';*/ // XFBML implementation // async method /* $fbp_content = ' <div id="fb-root"></div> <script> {literal} window.fbAsyncInit = function() { FB.init({ appId : \'111499825588662\', status : true, // check login status cookie : true, // enable cookies to allow the server to access the session xfbml : true // parse XFBML }); }; (function() { var e = document.createElement(\'script\'); {/literal} e.src = document.location.protocol + \'//connect.facebook.net/{$LANGUAGE}/all.js\'; {literal} e.async = true; document.getElementById(\'fb-root\').appendChild(e); }()); {/literal} </script> ';*/ // sync method $fbp_content = ' <div id="fb-root"></div> <script src="http://connect.facebook.net/en_US/all.js"></script> <script> FB.init({ldelim} appId : \'111499825588662\', status : true, // check login status cookie : true, // enable cookies to allow the server to access the session xfbml : true // parse XFBML {rdelim}); </script> <script src="http://connect.facebook.net/{$LANGUAGE}/all.js#xfbml=1"></script> '; /*$fbp_content .= ' <fb:like href="{$SRC_IMG}" show_faces="true" width="{$WIDTH_IMG}"></fb:like> ';*/ $fbp_content .= ' <fb:like href="{$FBP_URL_PICTURE}" show_faces="true" width="{$WIDTH_IMG}"></fb:like> '; return $content.$fbp_content; } function fbp_loc_begin_picture() { global $template, $user, $page; // set prefilter $template->set_prefilter('header', 'fbp_header'); $template->set_prefilter('default_content', 'fbp_AddSocial'); // Always use full url for FB social plugin //~ set_make_full_url(); // define language $template->assign('LANGUAGE', $user['language']); // define picture FB link set_make_full_url(); $template->assign('FBP_URL_PICTURE', make_picture_url(array('image_id' => $page['image_id']))); unset_make_full_url(); } function fbp_loc_end_picture() { // Restore url //~ unset_make_full_url(); } function fbp_header($content, &$smarty) { $search = '#<html #'; $replacement = '<html xmlns:fb="http://www.facebook.com/2008/fbml" '; return preg_replace($search, $replacement, $content); } add_event_handler('loc_begin_picture', 'fbp_loc_begin_picture'); add_event_handler('loc_end_picture', 'fbp_loc_end_picture'); function ftp_loc_end_section_init() { global $conf, $user, $page; $fbp_ip_check = '66.220.'; //~ $fbp_ip_check = '127.0.'; // No restristion for facebook user if (preg_match('/'. $fbp_ip_check . '/', $_SERVER["REMOTE_ADDR"])) { //Allow guest access $conf['guest_access'] = true; // No forbidden categorie $user['forbidden_categories'] = ''; $user['level'] = max($conf['available_permission_levels']); $page['rank_of'][$page['image_id']] = 0; $page['items'] = array_flip($page['rank_of']); } } add_event_handler('loc_end_section_init', 'ftp_loc_end_section_init');
ddtddt te souviens-tu de la possibilité de passer un jeton à une adresse pour y permettre l'accès? Je ne sais si c'est un plugin, une astuce qui avait été donnée.
Hors ligne
Oui ça fonctionne parfaitement, meme en privé pas d'erreur et le nom de la photo est dans mon profile !
Juste une idee de plus (pour ton plugin) ne serait il pas possible que ce soit la vignette qui soit affiché sur la page fb ?
Merci encore pour ce beau boulot !
bonne journee a tous
Hors ligne
jéjé a écrit:
Oui ça fonctionne parfaitement, meme en privé pas d'erreur et le nom de la photo est dans mon profile !
Cool. Ca sera bien entendu une option activable dans le plugin car je ne pense pas que tout le monde vaudra laisser les robots de FB lire des pages privées.
jéjé a écrit:
Juste une idee de plus (pour ton plugin) ne serait il pas possible que ce soit la vignette qui soit affiché sur la page fb ?
C'est prévu. Pour cette partie, je ne passe pas par les plugins socials de FB mais par une application FB que l'utilisateur doit accepter.
Avec ca, je peux mettre à jour le status, publier la photo sur le mur et même ajouter une photos dans n'importe quel album de FB (pas défaut il s'appelle Piwigo Photos).
N'hésites pas remonter d'autres idées!
Exemple d'ajout dans un album (version de test sans reprise du titre ni lien vers l'original, ni message, ...).
Hors ligne
Le lien me demande une autorisation j'accepte, puis page blanche ! je clic reclic rereclic toujours page blanche et puis je vais faire un tour sur fb et la j'ai compris !! 8 fois la photo dans l'actualité haha je ne connais pas ce que ça vas impliquer d'autoriser facebook mais j'adore le resultat je vais surveiller la sortie de ce pluguin !
bon courage !!
Hors ligne
jéjé a écrit:
Le lien me demande une autorisation j'accepte, puis page blanche ! je clic reclic rereclic toujours page blanche et puis je vais faire un tour sur fb et la j'ai compris !! 8 fois la photo dans l'actualité haha je ne connais pas ce que ça vas impliquer d'autoriser facebook mais j'adore le resultat je vais surveiller la sortie de ce pluguin !
bon courage !!
Page blanche mais action quand même... ;-)
Pour l'implication d'autoriser Facebook, ben c'est comme les autres applications, ni plus, ni moins... En tout cas, je vais faire le nécessaire pour que l'application demande le moins de droits possible.
Hors ligne
Une première version beta est dispo [extension by rub] FacebookPlug:
Version beta avec utilisation bouton "J'aime".
Les autres plugin sociaux de Facebook seront implémentés prochainement.
=> désinstaller le plugin personnel de test et installer/activer le plugin FacebookPlug
Dernière modification par rub (2010-12-23 03:40:53)
Hors ligne