Problème : concrete5 ne sait pas faire ça. Il sait afficher les pages de manière alphabétique, par date de création, mais aléatoirement, non.
Solution : la voici, la voila.
Créez le fichier /blocks/page_list/templates/aleatoire.php. Vous venez de créer un modèle personnalisé, bien joué. C’est pas tout, il faut y mettre quelque chose.
Voici le contenu du fichier aleatoire.php :
<?php
defined('C5_EXECUTE') or die("Access Denied.");
$nb_pages_aleatoires = 10; // modifiez cette valeur pour mettre le nombre de votre choix
?>
<div id="liste-aleatoire">
<?php
$isFirst = true; //So first item in list can have a different css class (e.g. no top border)
$excerptBlocks = ($controller->truncateSummaries ? 1 : null); //1 is the number of blocks to include in the excerpt
$truncateChars = ($controller->truncateSummaries ? $controller->truncateChars : 0);
$compteur = 0;
shuffle($cArray);
foreach ($cArray as $cobj):
$title = $cobj->getCollectionName();
$link = $nh->getLinkToCollection($cobj);
$firstClass = $isFirst ? 'first-entry' : '';
$isFirst = false;
?>
<div class="page-alea <?php echo $firstClass; ?>">
<?php
// Ici, vous faites ce que vous voulez, vous affichez le titre de la page, un lien vers celle-ci, etc.
?>
</div>
<?php $compteur++; if ($compteur == $nb_pages_aleatoires) break; ?>
<?php endforeach; ?>
</div>
Allez maintenant à l'endroit souhaité sur votre site, ajoutez un bloc Page list.
Dans les paramètres de ce bloc, ne spécifiez rien pour le nombre de pages, c'est géré en dur dans le fichier (je sais, en dur, c'est le mal. Mais concrete5 ne permet pas de gérer ça autrement sans modifier le core).
Pour les autres paramètres, vous faites comme bon vous semble (type de page, où se trouvent les pages dans l'arborescence, etc.).
Modifiez le modèle personnalisé pour affecter le modèle précédemment créé, à savoir Aleatoire.
Voila, c'est fonctionnel, mais le souci, c'est la gestion du nombre de pages directement dans le fichier, dommage.