Version 19 — Décembre 2008 — 193.252.xx.xx
dites moi, vous avez une idée pour trouver si un plugin est là?
<marcimat> 1.9.2 ou 1.9.3, php ou squelette ?
<touti> dans un squelette 1.9.2c
<marcimat> [(#EVAL{DIR_PLUGIN_PREFIX}|?{' ',”}) Mon action ]
<marcimat> ou _DIR...
<touti> arf, et en php ?...
<marcimat> if (defined('_DIR_PLUGIN_XXX')){ ... }
<touti> génial merci
<marcimat> pour 1.9.2
<marcimat> en 1.9.3, c'est un poil simplifié tout ça
<touti> ah?
<marcimat> [(#PLUGIN{XXX}) Mon action ]
Une syntaxe plus jolie avec SPIP 2
|?{' ',''})
devient
|oui)
|?{'',' '})
devient
|non)
Quand on crée une balise, on peut vouloir récupérer des variables du contexte. Il y a un article déjà sur contrib qui explique cela.
Mais quand on veut trouver le type de boucle du contexte, faut aller chercher dans la pile $p
.
Voilà comment :$p->boucles[$p->id_boucle]->id_table
Le critère fusion permet de faire un GROUPBY,
exemple sur un fil RSS, pour éviter des articles de même nom, on peut faire
<BOUCLE_syndic(SYNDIC_ARTICLES){fusion titre} {0,10}>
Une syntaxe plus jolie pour tester l’existence d’un élément, la ligne + indique la modification (merci kent)
-[(#PLUGIN{ABONNEMENT}|?{' ',''})
+[(#PLUGIN{ABONNEMENT}|oui)
#INCLURE{fond=inc/menu_abonnement}
]
-[(#PLUGIN{ABONNEMENT}|?{'',' '})
+[(#PLUGIN{ABONNEMENT}|non)
#INCLURE{fond=prive/menu_inscription2}
]
Le critère ajax permet de recharger uniquement le morceau de noisette appellé, utilisé en SPIPV2 avec pagination
<INCLURE{fond=inc-manoisette}{ajax}>
Mais comment faire fonctionner le callback ? et hop :
$(document).ready(function() {
var fonction_a_rappeller=function(){
...
}
if(typeof onAjaxLoad=='function')onAjaxLoad(fonction_a_rappeller);
if(window.jQuery)jQuery(document).ready(function(){
fonction_a_rappeller.apply(document);
});
});
Empêcher l’apparition des boutons de recalcul sur une page en particulier, à plaçer en première ligne :
[(#HTTP_HEADER{Content-type: text/html[; charset=(#CHARSET)]})]
Se servir de <code>#NOOP</code code>#REM</code > par exemple pour image_typo cela donnerait une image avec la police victor de Actuellement
<cadre class=« spip »>[(#NOOP class=« spip »>[(#REM |==’’| ?Actuellement|image_typopolice=Victor.ttf,taille=14,largeur=150)]
Créer un lien vers l’article 54 en se passant de boucle
<a href="#URL_ARTICLE{54}">lien</a>
Créer un lien vers la page « site » avec la variable id_syndic=xx , à mettre dans une boucle de syndication
[(#URL_PAGE{site}|parametre_url{id_syndic})]
Afficher les articles ayant le mot clef truc
<BOUCLE_articles(ARTICLES){titre_mot=truc}>#TITRE</BOUCLE_articles>
Utiliser un array, le déclarer précédemment, puis le remplir dans une boucle incrémenté par le compteur.
#SET{articles,#ARRAY}
<BOUCLE_articles_rub(ARTICLES){id_rubrique}>
#SET{articles,#GET{articles}|array_merge{#ARRAY{#COMPTEUR_BOUCLE,#ID_ARTICLE}}}
</BOUCLE_articles_rub>
[(#REM) test du tableau faire [(#GET{articles}|print_r)] ]
cela permet de récupérer des variables.
[(#REM) dans la page monstyle.html et en première ligne ]
#HTTP_HEADER{'Content-Type: text/css'}
.couleurdefond{
background-color:green;
[(#ENV{id_article}|={33}|?{
background-color:pink;
})]
}
Appeler la CSS dans une page SPIP
[(#REM) dans la page article.html par exemple cela retournera /?page=styles&id_article=33]
<link rel="stylesheet" type="text/css" href="[(#URL_PAGE{monstyle}|parametre_url{id_article,[(#ENV{id_article})] )]" />
<div class="couleurdefond"> change ici la couleur de fond en rose si article=33 </div>
[(#AUTORISER{modifier,article,#ENV{id_article}}) vous pouvez modifier l'article ]
Voir la doc
classiquement et sans variable on utilise
<INCLURE{fond=monsquelette}> ou les [(#INCLURE{fond=monsquelette})]
pour envoyer et récupérer la variable
#SET{mavariable,#INCLURE{fond=monsquelette}{monparam=#ENV{monparam}}}
cf http://comments.gmane.org/gmane.com...
$type_urls = 'arbo';
define('_SET_HTML_BASE',1); // ajoute aux pages html une directive
<base..> et traite les ancres des pages produites
Aller directement dans la base pour modifier ou supprimer, par exemple lorsque vous avez 2000 sites qui encombrent, un gros coup de balai peut être nécessaire ! La méthode rapide est donc de lançer une commande directement depuis MYSQL (par exemple via l’interface phpmyadmin)
sélectionner les sites en proposition
SELECT * FROM <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3BpcF9zeW5kaWM8L2NvZGU+"></span> WHERE <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3RhdHV0PC9jb2RlPg=="></span> = CONVERT(_utf8 'prop' USING latin1) COLLATE latin1_swedish_ci
Supprimer les sites en proposition
DELETE FROM <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3BpcF9zeW5kaWM8L2NvZGU+"></span> WHERE <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3RhdHV0PC9jb2RlPg=="></span> = CONVERT(_utf8 'prop' USING latin1) COLLATE latin1_swedish_ci
Supprimer les syndications trop anciennes
Vous avez beaucoup de sites syndiqués et ils ne possèdent pas toutes l’option effacer au bout de 2 mois
Voici la requête pour effacer toutes les vieux articles syndiqués (modifier la date avec vos besoins)
DELETE FROM <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3BpcF9zeW5kaWNfYXJ0aWNsZXM8L2NvZGU+"></span> WHERE date < '2007-12-31 10:00:00'
http://adresse_spip/?var_profile
(SPIP V2) permet d’afficher les requêtes SQL que fait SPIP pour créer la page ainsi que les temps de calcul pour chaque boucle et inclusion.
http://adresse_spip/?var_mode=inclure
(SPIP V2) Afficher les noisettes d’un squelette SPIP