Magnet

Le plugin Magnet permet d’aimanter des articles pour les forcer à apparaître en tête dans les listes et sélections d’articles. C’est l’équivalent de l’option « Sticky » des post Wordpress.

Mise en œuvre

Il suffit d’installer le plugin pour qu’il soit opérationnel et utilisable sur un site sans aucune modification des squelettes.

Principe de fonctionnement

Le plugin modifie l’ordre des articles dans les boucles (ARTICLES), en propulsant en premiers résultats les articles aimantés.
Le plugin ne modifie jamais le nombre ni quels articles sont retournés par une boucle. Seul l’ordre est modifié lorsqu’un ou plusieurs articles aimantés sont inclus dans les résultats d’une boucle.

En pratique le plugin permet par exemple de sélectionner les articles qu’on veut voir en home page d’un site SPIP utilisant les squelettes-dist/ sans aucune modification des squelettes.

Une fois activé, le plugin ajoute un bouton d’administration sur les pages articles qui indique si l’article est aimanté ou non.

Au survol, l’action « Aimanter » apparait, et un clic aimante l’article.

Le bouton indique maintenant que l’article est aimanté, au 1er rang. Et voilà, votre article aimanté va apparaître en premier sur la page d’accueil du site, ainsi que dans la rubrique à laquelle appartient.

Un bouton avec une flèche vers le bas permet aussi de le faire descendre d’un rang si plusieurs articles sont aimantés.

Un clic modifie le rang, et fait apparaître un troisième bouton avec une flèche vers le haut pour faire remonter l’article.

Vous n’avez besoin de rien de plus pour commencer à utiliser le plugin sur votre site.

Balise #BOUTONS_ADMIN_MAGNET

Toutefois, vous pouvez aussi utiliser la balise #BOUTONS_ADMIN_MAGNET. Cette balise attrape automatiquement le #ID_ARTICLE de la boucle dans laquelle elle est, et affiche les boutons d’administration du plugin à l’endroit où elle est insérée, pour l’article considéré.
Les boutons d’administration ne sont bien sûr visibles que pour les administrateurs du site !

Ainsi cette balise peut-être ajoutée sur tous les articles de la liste des articles récents en home pour permettre de directement administrer cette liste depuis la home sans aller sur chaque page article.

Critères {magnet} et {ignore_magnet}

Dans le cadre d’une utilisation avancée du plugin, il est possible d’utiliser ces 2 critères pour modifier le comportement des boucles (ARTICLES).

{magnet}
Le critère {magnet} permet de ne sélectionner que les articles aimantés. A contrario, {!magnet} permet de les exclure et donc de ne selectionner que les articles non aimantés.

{ignore_magnet}
Le critère {ignore_magnet} permet lui d’ignorer l’effet magnétique, et de rétablir l’ordre original des articles comme si aucun article n’était aimanté.

Dernière modification de cette page le 14 février 2019

Discussion

9 discussions

  • 1

    bonjour, merci pour ce super plugin mais... j’ai plusieurs erreurs de ce type, une par objet, qui plantent l’ajax d’un formulaire, une idée ? merci de votre aide
    2019-09-10 09:22:04 195.88.84.110 (pid 25161) :Pub:ERREUR : Erreur 1064 de mysql : You have an error in your SQL syntax ; check the manual that corresponds to your MariaDB server version for the right syntax to use near ’0) as magnet
    FROM `thailand`.spip_articles AS `articles`
    WHERE (articles.stat’ at line 1
    in /ecrire/public/composer.php L1005 [sql_select(),calculer_select(),select(),__construct(),create(),f_calculer_langues_utilisees_articles_1568100124_1486213737(),eval(),calculer_langues_utilisees(),calculer_rubriques_if(),objet_editer_heritage(),objet_instituer(),objet_modifier(),formulaires_editer_message_traiter_dist(),traiter_formulaires_dynamiques(),include()]
    SELECT DISTINCT lang, FIELD(articles.,0) as magnet
    FROM `synthailand`.spip_articles AS `articles`
    WHERE (articles.statut = ’publie’)
    ORDER BY magnet DESC

    • précision : le formulaire en question c’est editer_message de l’organiseur, qui fonctionne très bien sans magnet en public, très pratique pour partager des agendas...

    Répondre à ce message

  • 6

    Bonjour,
    merci pour ce plugin bien pratique.
    J’essaye d’afficher pour repérer dans l’espace privé les articles aimantés avec le critère magnet
    Or voici la réponse

    Unknown column 'magnet' in 'having clause'
    SELECT articles.id_article, articles.titre, articles.id_rubrique, articles.id_article, articles.lang FROM spip_articles AS `articles` WHERE (articles.statut = 'publie') AND (articles.id_rubrique > "0") HAVING (magnet <> 0)

    Une idée pourquoi having ne passe pas ici alors que cela fonctionne sur le site public ?

    • Hmm ça semble un bug parce que normalement dans l’espace privé on ajoute bien le select nécessaire si on met le critère {magnet}
      https://zone.spip.net/trac/spip-zone/browser/spip-zone/_plugins_/magnet/trunk/magnet_fonctions.php#L132

      Tu peux donner l’exemple de la boucle qui ne marche pas ?

    • Ah oui, même problème de mon côté avec un objet appelé Topics (et SPIP 3.2.3 SVN [24237])

      la boucle :

      1. <BOUCLE_liste_topics(TOPICS){id_topic?}{magnet}{id_rubrique?}{id_secteur?}{id_mot?}{id_auteur?}{where?}{statut?}{recherche?}{tri #ENV{par,num titre},#GET{defaut_tri}}{par titre}{pagination #ENV{nb,10}}>

      le message

      Erreur SQL 1054
      Unknown column 'magnet' in 'having clause'
      SELECT topics.id_topic, 0 as points, '', topics.titre, topics.statut, topics.id_rubrique, topics.titre AS titre_rang, topics.date FROM spip_topics AS `topics` WHERE (topics.id_rubrique = 14) GROUP BY topics.id_topic HAVING (magnet <> 0) ORDER BY 0+topics.titre, topics.titre
    • Curieux : la boucle suivante

      <BOUCLE_sujets(TOPICS){magnet}{id_rubrique=14}>
      <p>#TITRE - #ID_TOPIC</p>
      </BOUCLE_sujets>

      …marche dans l’espace publique, mais pas dans l’espace privé.

      Dans l’espace publique, cela renvoi le SQL suivant :

      SELECT topics.titre, topics.id_topic, FIELD(topics.id_topic,3) as magnet
      FROM spip_topics AS `topics`
      WHERE (topics.statut = 'publie')
              AND (topics.id_rubrique = 14)
      HAVING (magnet <> 0)
      ORDER BY magnet DESC

      Dans l’espace prive

      Unknown column 'magnet' in 'having clause'
      SELECT topics.titre, topics.id_topic FROM spip_topics AS `topics` WHERE (topics.statut = 'publie') AND (topics.id_rubrique = 14) HAVING (magnet <> 0)
    • Je crois que j’ai jeté le code, mais ça devait être quelque chose de très simple (je vérifie avant de poster en général) du type
      <BOUCLE_arts(ARTICLES){magnet}>#TITRE</BOUCLE_arts>
      avec 3 articles magnétisés.
      C’est le magnétiseur ou le marabout, au choix :)

    • Cool. Merci Cerdic

    Répondre à ce message

  • G é n i a l !

    Et cela marche avec n’importe quel objet éditorial. La grande grande classe :)

    Very mucho danke schön

    Répondre à ce message

  • Bonjour,
    Super plug-in, et simple voir très simple a installer et utiliser.

    Je cherche un moyen de styliser l’article ainsi Magnétisé, comment faire puisqu’aucune ID ou class n’est rajouté au code ?
    Merci

    Répondre à ce message

  • Vous n’avez besoin de rien de plus pour commencer à utiliser le plugin sur votre site.

    Si vider le cache car le bouton recalcul ne semble servir à rien...
    Faudrait peut être le préciser dans l’article car je pense que c’est aussi le problème rencontré par davduf, (mais à la désactivation du plugin au lieu de son activation)
     :-))

    Répondre à ce message

  • Le « Pin to top » revu et corrigé ! Et en toute beauté ! Merci :-)

    Répondre à ce message

  • Magnifique cerdic !

    La simplicité de mise en oeuvre est une merveille ! Et merci à wp :-P

    Répondre à ce message

  • Vraiment superbe plugin.

    Une suggestion : si je désactive le plugin, le magnet n’a plus de rôle (là, les articles « magnétisés » restent épinglés.

    Un besoin : est-il possible de ne pas avoir l’icone « magnet » dans les boutons admins (il me cache trop de chose, le petit loustic :-)

    Encore bravo !

    Répondre à ce message

  • 2

    J’ai magnétisé les articles 26 et 27. Erreur SQL :

    Erreur SQL 1054
    Unknown column 'magnet' in 'where clause' 
    SELECT rand() AS alea, articles.id_article, FIELD(articles.id_article,26,27) as magnet, articles.lang, articles.titre FROM spip_articles AS `articles` WHERE (articles.statut = 'publie') AND (magnet <> 0) AND (articles.lang = 'fr') ORDER BY magnet DESC, alea LIMIT 0,1

    L’appel de la boucle :

    1. <BOUCLE_art(ARTICLES){magnet}{par hasard}{0,1}{lang=#ENV{lang}}>

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?
  • [Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom