La Gestion de Contenu Simplifiée
Petits Tags entre amis
Aujourd'hui on parle de Balises Utilisateur (en anglais UDT), pour l'occasion j'ai compilé les meilleurs morceaux glanées sur les forums, les Wiki et ailleurs.
Rappel Général
Une Balise Utilisateur (ci dessous UDT par simplification) est un code PHP que l'on prépare en dehors de tout contenu et que l'on appellera plus loin dans le site au travers d'une page ou carrément d'un gabarit.
Une UDT s'appelle toujours par son nom entourée de crochets : {toto}
Le nom d'un UDT ne peut contenir de tiret ! ainsi {mon_UDT99} est valable alors que {mon-UDT99} est incorrect.
Comme tout code PHP, vous n'êtes jamais à l'abri d'une fausse manip qui provoquera une destruction de donnée (en plus de tuer des bébés phoques pour certaines d'entre elles). Conclusion : si vous aimez les bébés phoques testez toujours le code en local sur une copie de votre site original ! Ne mettez jamais un code en production directement.
L'ensemble des codes ci dessous ont été testé pour vous et reste à disposition sur cette page pour que vous puissiez constater le résultat. Le Wiki francophone a été mis à jour en même temps afin de ne pas perdre ces codes ultérieurement.
Afficher les 10 dernières pages modifiées dans votre site
echo '<div class=""nav""><div class=""heading"">10 Dernières pages mises à jour</div>';
echo ' <ul class=""links"">';
$hm = cmsms()->GetHierarchyManager();
$db = cmsms()->GetDb();
// Get list of 10 most recently updated pages excluding the home page
$q = ""SELECT * FROM "".cms_db_prefix().""content WHERE (type='content' OR type='link')
AND default_content != 1 AND active = 1 AND show_in_menu = 1
ORDER BY modified_date DESC LIMIT 10"";
$dbresult = $db->Execute( $q );
if( !$dbresult)
{
echo 'Erreur bdd durant la remontée des infos<br/>';
}
while ($updated_page = $dbresult->FetchRow())
{
$curnode =& $hm->getNodeById($updated_page['content_id']);
$curcontent =& $curnode->GetContent();
echo <<<REQUETE
<li class=""updated"">
<a href={$curcontent->GetURL()}>{$updated_page['content_name']}</a><br />
{$updated_page['titleattribute']}<br />
Modifié le : {$updated_page['modified_date']}
</li>
REQUETE;
}
echo '</ul></div>';
Donnera :
Afficher la date de dernière modification de votre site
$hm = cmsms()->GetHierarchyManager();
$db = cmsms()->GetDb();
// Get the most recently updated page excluding the home page
$q = ""SELECT modified_date FROM "".cms_db_prefix().""content WHERE (type='content' OR type='link')
AND default_content != 1 AND active = 1 AND show_in_menu = 1
ORDER BY modified_date DESC LIMIT 1"";
$updated_page = $db->getOne($q);
if(!$updated_page)
{
echo 'DB error durant la récupération de la date<br/>';
break;
}
echo date(""d/m/Y"",strtotime ($updated_page));
Donnera tout bêtement :
Faire une redirection maison par alias de page
Appelons notre udt redirection_maison. Il faudra l'appeler ainsi :
{redirection_maison alias='tata'}
ce qui provoquera une redirection transparente pour tous les visiteurs ET pour les moteurs de recherches vers la page possédant l'alias tata. Si aucune page n'existe avec l'alias tata une erreur sera générée.
Le code de cet UDT
if (! isset($params['alias']))
{
echo ""param alias non renseigné"";
return;
}
$page = $params['alias'];
$manager =& cmsms()->GetHierarchyManager();
$node =& $manager->sureGetNodeByAlias($page);
if (! isset($node))
{
echo ""alias '.$page.' inexistant"";
return;
}
$content =& $node->GetContent();
if (isset($content) && is_object($content))
{
if ($content->GetURL() != '')
{
redirect($content->GetURL());
}
}
else
{
echo ""alias pointant vers une non-page"";
return;
}