[plugin] MySocialButtons (twitter, facebook, google+1)

245

Réponses

  • JosJos Member
    A la rigueur tu peu récupérer le code html des boutons, et les coller dans static.php à l'endroit ou tu souhaite qu'ils apparaissent.
  • SvenSven Member
    janvier 2012 modifié
    1 mois + tard je reprends mon code… (permalien et raccourcissement de l’URL, par contre je n’utilise plus le plugin)
    et ça marche : http://goo.gl/t84Tr

    Les instructions sont dans le billet vers lequel pointe l’URL au-dessus.
  • Je viens de faire l'install sur pluxml 5.1.2 et j'ai une belle page blanche au lieu de mon blog ! ^^

    Obligé de désactiver le plugin pour revenir a la normale, j'ai vu que c’était compatible 5.1.3 mais pour des raisons pratique je n'ai pas fait la mise a jour, c'est surement du a ça...
  • bg62bg62 Member
    pour la dernière version : GG+, ok twitter,ok mais facebook n'apparait pas !!!
    code :
    <div class="art-chapo"><?php eval($plxShow->callHook('MySocialButtons')) ?><?php $plxShow->artContent(); ?>
    dans article.php
    il y a eu des changements depuis ou autre chose à modifier ?
  • aruhunoaruhuno Member
    octobre 2012 modifié
    Bon alors comme je le faisais remarquer, le plugin n'est pas compatible W3C.
    J'ai donc modifier le code de sorte à ce qu'il soit W3C !


    Le code à mettre dans plxMySocialButtons.php ici : http://pastebin.fr/25727
    Et voici ce que ça donne :
    1351097319.png


    Bon c'est merveilleux, mais en fait, c'est compatible et valable uniquement avec du HTML5 ! D'ailleurs, le warning qu'on à avec le W3C c'est parce que le validateur HTML5 est expérimental.


    En gros, dans le header faut remplacer :
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php $plxShow->defaultLang() ?>" lang="<?php $plxShow->defaultLang() ?>">
    


    Par :
    <!DOCTYPE html>
    <html lang="<?php $plxShow->defaultLang() ?>">
    


    En espérant que ma modif. fasse partie intégrante de la prochaine version du plugin (attention je ne gère que le français !).
  • StéphaneStéphane Member, Former PluXml Project Manager
    ## Version 1.3 (13/11/2012) ##

    Validation html5 (contribution aruhuno)

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Merci beaucoup Stéphane pour cette mise à jour !
  • YacineYacine Member
    janvier 2013 modifié
    Salut !
    Bon d'abord le plugin est super :D
    Ensuite j'ai quelques remarques concernant le bouton "tweeter" et peut être des améliorations.


    Mon premier point concerne le MyTwitterID.
    Quand on clique dessus ça envoie pré-écrit un tweet de la forme : balise meta description de l'article - le titre du blog URL-DE-L-ARTICLE @MyTwitterID


    Je suis allé jeter un oeil dans le fichier plxMySocialButtons.php du plugin. Plus précisément dans le la partie qui concerne la méthode "Méthode qui affiche les boutons sociaux".


    Intéressons nous à la ligne qui correspond à twitter que voici:
      <div><a href="https://twitter.com/share" class="twitter-share-button" data-via="LeShadowBlog" data-url="<?php echo  "<?php echo \$plxShow->artUrl() ?>" ?>" data-lang="fr" data-count="none">Tweeter</a></div>
    

    Comme vous pouvez le voir j'ai changé le data-via qui est par défaut à MyTwitterID à "LeShadowBlog". Ce serait cool de pouvoir le configurer via le panneau de configuration :D


    Mon deuxième point concerne l'URL de l'article.
    Vous savez tous très bien qu'un tweet est limité à 140 caractères. Or le lien de l'article en question peut prendre énormément de place.
    De ce fait beaucoup de service dit d'URL shortner qui permettent de raccourcir l'URL existent. Exemple tinyurl.com ou encore goo.gl.


    Ces derniers proposent des API qui permettent de le faire assez facilement.


    J'ai pensé à intégré le service de tinyurl dans le fichier plxMySocialButtons.php


    Voila comment ce que j'ai ajouté pour l'instant :
    <?php
    function createTinyUrl($strURL) {
        $tinyurl = file_get_contents("http://tinyurl.com/api-create.php?url=".$strURL);
        return $tinyurl;
    }
    ?>
    

    Mon but étant de remplacer l'URL du blog par celle générée par cette fonction. J'ai donc remplacé le <?php echo \$plxShow->artUrl() ?> par un echo( createTinyUrl($plxShow->artUrl()) )
    Mais ça me renvoie une belle erreur une fois que j'appuie sur le bouton tweeter :D

    sachant que si je fais un test comme celui ci ça marche :
    data-url="<?php echo "<?php echo(file_get_contents('http://tinyurl.com/api-create.php?url=http://shadowblog.fr')) ?>" ?>"
    

    Auriez vous une idée de ce qui pose ce problème ?


    Une autre idée que l'on pourrait ajouter à ce plugin dans le panel configuration est de proposer plusieurs services qui permettent de raccourcir les URL (celui de goo.gl ou de tinyurl par exemple) l'utilsateur pourrait ainsi en choisir l'un d'entre eux (ce qui ferait appel à la fonction qui permet de faire la transformation) ou ne pas les activer.


    Si jamais j'ai du temps je pourrais éventuellement plonger dedans. Ca me permettera de mieux comprendre le fonctionnement de des plugins et plus généralement de pluxml.
    Merci.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour Yacine
    Tes propositions sont excellentes. Je suis à 100% pour intégrer le raccourci d'url.
    Sais-tu comment appeler l'api de goo.gl ou d'autres services...
    Je ferais les modifs du plugin quand j'aurais toutes les infos

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • YacineYacine Member
    janvier 2013 modifié
    Concernant goo.gl voici le lien pour les développeurs qui explique absolument tout : https://developers.google.com/url-shortener/


    L'utilisation de l'API de Google est un peu moins simple parce qu'il faut utiliser une clé d'authenfication. Il faut donc au préalable s'inscrire sur leur site afin de la demander. Puis l'utiliser à chaque demande. (Ca ressemble un peu à la clé d'authentification du plugin myAkismet). De plus, le retour de l'utilisation de leur API est au format JSON. Il faut donc traiter les données reçues pour en extraire l'URL raccourcis.


    Donc je pense qu'il vaut mieux commencer par un service simple comme celui de tinyurl.com. Mais étant donné que j'ai déjà dépoussiéré pas mal du côté de goo.gl. Voici ce que j'ai fait:
    <?php
        define('GOOGLE_API_KEY', '[Clé à insérer ici]');
        define('GOOGLE_ENDPOINT', '[url]https://www.googleapis.com/urlshortener/v1[/url]');
     
        function shortenUrlGoogle($longUrl)
        {
            // Initialise la connexion cURL 
            $ch = curl_init(
                sprintf('%s/url?key=%s', GOOGLE_ENDPOINT, GOOGLE_API_KEY)
            );
     
            // Demande à cURL de nous retourner les données
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     
            // Les données sons transformées en JSON afin que l'API puisse les comprendre et les lire.
            $requestData = array(
                'longUrl' => $longUrl
            );
     
            // La requête est changé en type POST
            curl_setopt($ch, CURLOPT_POST, true);
     
            // Adaptation du contenu au format JSON 
            curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
     
            // Le post est encodé en JSON
            curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($requestData));
     
            // Execute la requête
            $result = curl_exec($ch);
            curl_close($ch);
     
            // decode Décode et renvoie la réponse de JSON 
            return json_decode($result, true);
        }
     
        $response = shortenUrl('http://shadowblog.fr');
     
        echo sprintf(
            '%s was shortened to %s',
            $response['longUrl'],
            $response['id']
        );
    ?>
    

    Bon alors j'ai bien commenté pour que le code soit assez compréhensible. Je pense donc que l'on pourrait rajouter une fonction par service. Et selon le service que l'utilisateur veut et qu'il choisira dans le panel configuration du plugin on fait appel à la fonction du service voulu, sachant qu'elles retourneront toute l'URL raccourcis en output et qu'elles prendront l'URL longue en input.
  • En ce qui concerne la création de la clé pour l'utilisation de l'API de goo.gl voici les étapes à suivre :


    Il faut aller sur ce site : https://code.google.com/apis/console


    Entrer dans la console, puis créer un nouveau projet. Qui porte par exemple le nom de votre blog. Se rendre sur le menu "Services" et activer l'API qui porte le nom "URL Shortener API". C'est vers le bas de la liste.


    Enfin clicker sur le menu "API Access". La clé devrait simplement apparraitre dans un encadré. A droite de "API key".


    C'est cette clé qu'il faudra renseigner lors de l'utilisation de la fonction que j'ai mentionné plus haut.
  • StéphaneStéphane Member, Former PluXml Project Manager
    en regardant l'appel des api google et tinyurl, le raccourci d'url ne fonctionnera pas chez tout le monde car ça utilises l'extension curl (pour google) qui n'est pas active chez tous les hébergeurs et file_get_contents vers une url (pour tinyurl) qui est interdit également chez certains hébergeurs pour des raisons de sécurité.
    faut juste le savoir.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Ah! Merci pour ces précisions.

    De toute façons je n'arrive toujours pas à faire fonctionner tinyurl. Qui est le seul que j'ai testé pour l'instant.

    Quand j'essaie ça :
    echo(file_get_contents('http://tinyurl.com/api-create.php?url=http://shadowblog.fr'))
    

    ça marche ! Mais pas ça :
    echo(file_get_contents('http://tinyurl.com/api-create.php?url='.$plxShow->artUrl()))
    

    En gros, c'est le $plxShow->artUrl() qui me pose problème. Quelqu'un aurait une idée du problème ? Je ne suis pas encore très à laise avec les plxShow.
  • StéphaneStéphane Member, Former PluXml Project Manager
    oui c'est normal que cela ne fonctionne pas
    si tu regardes dans le fichier core/lib/class.plx.show.php la fonction artUrl, tu verras qu'il y a un echo.
    or toi il te faudrait une fonction qui fait un return, pour concaténer la valeur dans la chaine de caractères qui va te servir pour appeler l'api de tinyurl

    en gros dans ton code il faut y aller par étape (je te donne le code en direct live sans tester)
    $id = intval($plxShow->plxMotor->plxRecord_arts->f('numero'));
    $url = $plxShow->plxMotor->plxRecord_arts->f('url');
    $url = $plxShow->plxMotor->urlRewrite('?article'.$id.'/'.$url);
    echo(file_get_contents('http://tinyurl.com/api-create.php?url='.$url))
    

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Merci Stéphane!
    Malheureusement, je n'arrive pas trop à faire marcher ton code.
    le numéro ou l'url sont ils des paramètres que je dois ajouter ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    dans le fichier plxMySocialButtons.php, essaye en remplaçant la fonction MySocialButtons par celle-ci

        public function MySocialButtons() {?>
    	
    		$plxMotor = plxMotor::getInstance();
    	
    		$id = intval($plxMotor->plxRecord_arts->f('numero'));
    		$url = $plxMotor->plxRecord_arts->f('url');
    		$url = $plxMotor->urlRewrite('?article'.$id.'/'.$url);
    		$url = file_get_contents('http://tinyurl.com/api-create.php?url='.$url);
    		
    		?>
    		<div class="social-buttons">
    			<div id="fb-root"></div>
    			<div><div class="g-plus" data-action="share" data-annotation="none" data-href="<?php echo $url ?>"></div></div>
    			<div><a href="https://twitter.com/share" class="twitter-share-button" data-url="<?php echo $url ?>" data-lang="fr" data-count="none">Tweeter</a></div>
    			<div class="fb-like" data-href="<?php echo $url ?>" data-send="false" data-layout="button_count" data-width="20" data-show-faces="false"></div>
    		</div>
    		<?php
    	}
    

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Super! Ça marche du tonnerre !


    J'avais fait la même chose mais j'avais tout bonnement oublié d'instancier l'objet plxMotor.
    J'ai d'ailleurs une question. Avons-nous exactement les mêmes méthodes pour plxMotor et plxShow ? Auquel cas nous pourrions faire plxMotor-> artUrl() ? Sans passer par la recomposition de l'url de l'article à partir de son id et de son nom ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    Non. Le rôle de plxShow et plxMotor n'est pas le meme. on ne retrouve pas les mêmes fonctions

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Bon à force de regarder dans les entrailles de PluXml j'en perds en productivité au travail :D

    Merci pour ton aide en tout cas Stéphane!
  • chilperikchilperik Member
    juin 2013 modifié
    Bonjour,
    Je repasse sur le sujet avec une demande en forme de UP pour le sujet des URL raccourcis :) Existe il maintenant une solution viable et "officielle" ?

    Autre souci avec le plugin, le bouton twetter chez moi ne revoit aucun lien .... C'est dommage surtout que ça fonctionne pour google+ et FB ^^'

    une petite capture : mini_287877capture.png
  • Bonjour,

    Effectivement, lorsque j'ai contribuer, je n'ai pas pu tester puisque je n'avais pas de compte.
    Visiblement, lorsqu'on à pas de compte, ça fonctionne :
    1372417140.png

    Peux-tu essayer s'il te plait ? (même si je ne vois pas trop l'incidence).

    Pour ma part c'est avec Facebook que j'ai un problème... je regarderais ça quand j'aurais un peu de temps.
  • AirWAirW Member
    Pour moi twitter et FB marchent...
  • bon, je ne suis pas une lumière en programmation, alors mes question paraîtront sans doute idiotes :8 mais
    1) Il n'y a rien à installer à la différence des plugins "ordinaires" c'est ça ? Seulement la ligne à coller ??
    2) où faut-il coller la ligne de code dans le fichier "article.php" (si c'est bien là qu'il faut le mettre !!) ? J'utilise le thème Nostalgiev42b et je ne comprends pas grand chose à la signification des différentes lignes, donc j'ai essayé, au hasard, de coller la ligne à deux ou trois endroits mais rien n'apparaît.
    3) puisqu'on en parle : les autres utilisateurs du thème Nostalgie42b (qui a l'air populaire), savent-ils comment on peut corriger le bug de la fonction de recherche (qui ne marche pas du tout !!) ou, si ce n'est pas possible, comment la supprimer ? Je sais cette dernière question est hors sujet mais bon, on ne sait jamais !
  • bg62bg62 Member
    octobre 2013 modifié
    bonjour ;)
    dans article.php il faut que tu aies ceci :
    [== PHP ==]
    			<article role="article" id="post-<?php echo $plxShow->artId(); ?>">
    
    				<header>
    					<div class="social-buttons">
    					<?php eval($plxShow->callHook('MySocialButtons')) ?>
    					</div>
    					<h1>
    						<?php $plxShow->artTitle(''); ?>
    					</h1>
    
    par exemple , mais tu peux le placer ailleurs si tu veux ... :)

    pour le reste attention ce thème est pour le 5.1.3 .... donc quelle version as-tu ?
  • Merci pour la réponse mais comme je le disais, je suis vraiment une bille avec les lignes de code... Donc je ne comprends pas forcément où je dois intégrer les lignes en question dans ceci (j'ai essayé au début mais rien ne se passe) :
    [== Indéfini ==]
    <?php include(dirname(__FILE__).'/header.php'); ?>
    
    			
    	<div id="section">
    
    		<div id="content">
            <div id="breadcrumbs">		
    <?php $plxShow->mainTitle('link'); ?> <span class="sep">&#9658;</span> Blog <span class="sep">&#9658;</span> <?php $plxShow->artCat(); ?>  <span class="sep">&#9658;</span> 	<?php $plxShow->artTitle(''); ?>				
                            </div> 
                            <div class="article">
                                   
    				<h2 class="art-title"><?php $plxShow->artTitle(''); ?></h2>
                                    <div class="art-topinfos">                              
    <p class="art-cat">
    <?php $plxShow->artDate('le #num_day #month #num_year(4)'); ?> 
    <?php $plxShow->lang('WRITTEN_BY') ?> <?php $plxShow->artAuthor() ?>
    ,
    <?php $plxShow->lang('CLASSIFIED_IN') ?> : <?php $plxShow->artCat(); ?>
     [ <?php $plxShow->artNbCom('#nb'); ?> ]
    </div>                              
    				<div class="art-chapo"><?php $plxShow->artContent(); ?>
    				<hr />
                                        <span class="art-tags"><?php $plxShow->lang('TAGS') ?> : <?php $plxShow->artTags(); ?></span>
                                 <hr />
    							                      		<h2>&agrave; voir aussi :</h2>
        <ul>
        <?php include(dirname(__FILE__).'/suggestion.php'); ?>
        </ul>
    							   
    							   
    				<div class="author-infos"><?php $plxShow->artAuthorInfos('#art_authorinfos'); ?></div>
    				</div>
         </div>
       
    			<?php include(dirname(__FILE__).'/commentaires.php'); ?>
    		</div>
    
    		<?php include(dirname(__FILE__).'/sidebar.php'); ?>
    
    	</div>
    
    <?php include(dirname(__FILE__).'/footer.php'); ?>
    

    Pour l'autre point (la fonction recherche dans Nostalgie), j'utilise la dernière version de Pluxml (5.2) mais la fonction "recherche" ne marchait pas non plus dans les versions précédentes. Si tu as une idée là-dessus, je suis preneur !
  • pour le premier point, il te faut metttre ceci :
    [== Indéfini ==]
    					<div class="social-buttons">
    					<?php eval($plxShow->callHook('MySocialButtons')) ?>
    					</div>
    
    là où tu veux que ça apparaissent ... commence JUSTE avec la ligne du milieu pour tester ;)
    pour le second point
    il suffit de télécharger le plugin " plxMySearch ", de l'activer et de suivre les instructions pour le faire fonctionner
    :)
  • Pour la fonction recherche, elle marche en effet après activation du plugin mais cela entraîne l'impossibilité d'afficher les articles (ils apparaissent dans le fil de la page d'accueil mais quand on en sélectionne un : page blanche ! :( Du coup, j'ai désactivé le plugin et je peux à nouveau afficher les articles entier... étrange, non ?).
    Pour la fonction partager, ça y est tout fonctionne ! Merci ! Juste un point : on peut partager seulement depuis l'article seul (en pleine page), pas depuis la page d'accueil. Comment faire pour que ce soit aussi possible (si c'est possible !)... J'imagine qu'il faut ajouter la ligne sur un autre fichier php... Peux-tu me dire lequel ?
  • websyyswebsyys Member
    octobre 2013 modifié
    Bonjour, j'ai développé un plugin similaire dont l'avantage est de pouvoir fonctionner sans javascript. Le plugin utilise des images à héberger directement dans le serveur. Comment intégrer ces icônes directement dans le plugin ?

    Option 1 : je crée un dossier images contenant les icones dans le repertoire du plugin.
    Quelle url indiquer dans le code ? <img src="???∕facebook.png>

    Option 2 : je crée un dossier images indépendant du plugin, donc 2 archives à uploader... :/

    Je pense que je mettrai à disposition une première version du plugin en fin d'après midi.
    Merci pour vos réponses.
  • StéphaneStéphane Member, Former PluXml Project Manager
    @websyys:
    <?php
    echo '<img src="'.PLX_PLUGINS.'nomduplugin/images∕facebook.png" alt="" />';
    ?>
    

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • websyyswebsyys Member
    octobre 2013 modifié
    Merci Stephane, je découvre le script depuis une journée à peine :8
    Est-ce qu'on peut récupérer, l'url et le titre de l'article sous forme de variable dans le fichier du plugin ? exemple : $url_article et $titre_article

    Edit: c'est bon merci :D
Connectez-vous ou Inscrivez-vous pour répondre.