Comment: Un nouveau petit site Yacs
| << Previous | Next >> |
Merci pour ces commentaires...
Voici la suite de mes avantures et découvertes.
Le souhait: avoir dans le menu les boites: Records de Visites, Records de téléchargement, Records de clics, Au hazard.
Cela est facile car cela ce régle dans les paramétrages standard de la configuration de l'accueil..
Cependant le souhait est de ne pas avoir 7 liens par boite de menu. Car ceci ralonge le menu est donc le complexifie...
Ils souhaiteraient avoir:
- 3 liens dans la boite record de visites
- 3 liens dans la voite record de clics
- 5 liens dans la boite au hazard
Premier constat: Tien c'est pas une option standard... Celà aurait été cool d'avoir dans la page de configuration de la page d'acceil, pour chaque boite, une valeur à saisir donnant le nombre d'éléments par boites...
Aprés des recherches:
- Je me suis apperçu que c'est un paramétre qui est passé aux fonctions "COMPACT_LIST_SIZE", mais toujours le même... et qu'il est utilisé à plein d'autres endroit....
- Je m'apperçois aussi que ce paramêtre est mis à 7 dans le script skins\skin_skeleton.php donc pas ajustable pour chaque skin différents.... NB: Pourquoi pas imaginer des skins avec des compacts list limité à uniquement 5 items et un autre skin toujours sur le même site avec des compacts lists de 9 éléments...?
Bon ce paramêtre est global et en l'état de mes compétences une trés grosse lumiére rouge s'allume est me dit: "Touches pas à ça petit con"...
Ma solution est brutale mais efficace et corespond à ce que je veux:
Je ne veux pas changer le defaut de COMPACT_LIST_SIZE sur tout le site, et j'ai besoin d'autres valeurs spécifiquements pour certaines boites. Alors je vais mettre en dure dans le code mes valeurs (en attendant que des gurus Yacs nous ponde cette possibilité dans une prochaine version
)
Les modification ce feront dans le fichier yacs\index.php.
Lignes 1062 à 1093 localiser ce code:
<br />
// list most recent peering servers<br />
if(isset($context['home_with_peering_servers']) && ($context['home_with_peering_servers'] == 'Y')) {<br />
include_once $context['path_to_root'].'servers/servers.php';<br />
if($items = Servers::list_by_date(0, COMPACT_LIST_SIZE, 'compact'))<br />
$text .= Skin::build_box(i18n::s('Peers'), Skin::build_list($items, 'compact'), 'navigation', 'recent_servers');<br />
}<br />
<br />
// list most popular articles<br />
if(isset($context['home_with_top_articles']) && ($context['home_with_top_articles'] == 'Y')) {<br />
if($items = Articles::list_by_hits(0, COMPACT_LIST_SIZE, 'compact'))<br />
$text .= Skin::build_box(i18n::s('Popular Pages'), Skin::build_list($items, 'compact'), 'navigation', 'popular_articles');<br />
}<br />
<br />
// list most popular files<br />
if(isset($context['home_with_top_files']) && ($context['home_with_top_files'] == 'Y')) {<br />
include_once $context['path_to_root'].'files/files.php';<br />
if($items = Files::list_by_hits(0, COMPACT_LIST_SIZE, 'compact'))<br />
$text .= Skin::build_box(i18n::s('Popular Files'), Skin::build_list($items, 'compact'), 'navigation', 'popular_files');<br />
}<br />
<br />
// list most popular links<br />
if(isset($context['home_with_top_links']) && ($context['home_with_top_links'] == 'Y')) {<br />
include_once $context['path_to_root'].'links/links.php';<br />
if($items = Links::list_by_hits(0, COMPACT_LIST_SIZE, 'compact'))<br />
$text .= Skin::build_box(i18n::s('Popular Links'), Skin::build_list($items, 'compact'), 'navigation', 'popular_links');<br />
}<br />
<br />
// list random articles<br />
if(isset($context['home_with_random_articles']) && ($context['home_with_random_articles'] == 'Y')) {<br />
if($items = Articles::list_by('random', 0, COMPACT_LIST_SIZE, 'compact'))<br />
$text .= Skin::build_box(i18n::s('Random Pages'), Skin::build_list($items, 'compact'), 'navigation', 'random_articles');<br />
}<br />
Remplacer COMPACT_LIST_SIZE par la valeur souhaité dans mon cas cela vas donner:
<br />
// list most recent peering servers<br />
if(isset($context['home_with_peering_servers']) && ($context['home_with_peering_servers'] == 'Y')) {<br />
include_once $context['path_to_root'].'servers/servers.php';<br />
if($items = Servers::list_by_date(0, 3, 'compact'))<br />
$text .= Skin::build_box(i18n::s('Peers'), Skin::build_list($items, 'compact'), 'navigation', 'recent_servers');<br />
}<br />
<br />
// list most popular articles<br />
if(isset($context['home_with_top_articles']) && ($context['home_with_top_articles'] == 'Y')) {<br />
if($items = Articles::list_by_hits(0, 3, 'compact'))<br />
$text .= Skin::build_box(i18n::s('Popular Pages'), Skin::build_list($items, 'compact'), 'navigation', 'popular_articles');<br />
}<br />
<br />
// list most popular files<br />
if(isset($context['home_with_top_files']) && ($context['home_with_top_files'] == 'Y')) {<br />
include_once $context['path_to_root'].'files/files.php';<br />
if($items = Files::list_by_hits(0, 3, 'compact'))<br />
$text .= Skin::build_box(i18n::s('Popular Files'), Skin::build_list($items, 'compact'), 'navigation', 'popular_files');<br />
}<br />
<br />
// list most popular links<br />
if(isset($context['home_with_top_links']) && ($context['home_with_top_links'] == 'Y')) {<br />
include_once $context['path_to_root'].'links/links.php';<br />
if($items = Links::list_by_hits(0, 3, 'compact'))<br />
$text .= Skin::build_box(i18n::s('Popular Links'), Skin::build_list($items, 'compact'), 'navigation', 'popular_links');<br />
}<br />
<br />
// list random articles<br />
if(isset($context['home_with_random_articles']) && ($context['home_with_random_articles'] == 'Y')) {<br />
if($items = Articles::list_by('random', 0, 5, 'compact'))<br />
$text .= Skin::build_box(i18n::s('Random Pages'), Skin::build_list($items, 'compact'), 'navigation', 'random_articles');<br />
}<br />
Ensuite un nouveau besoin est apparus: Changer l'ordre de ces menus, pour ne pas favoriser de trops les pages les plus vues, mais plutôt proposer en premier les pages aux hazards, et mettre les liens externes en bas du menu.
Solution: Inverser les lignes en fonction de vos priorités dans le script yacs\index.php
Voici l'exemple pour moi...
<br />
// list random articles<br />
if(isset($context['home_with_random_articles']) && ($context['home_with_random_articles'] == 'Y')) {<br />
if($items = Articles::list_by('random', 0, 5, 'compact'))<br />
$text .= Skin::build_box(i18n::s('Random Pages'), Skin::build_list($items, 'compact'), 'navigation', 'random_articles');<br />
}<br />
<br />
// list most popular articles<br />
if(isset($context['home_with_top_articles']) && ($context['home_with_top_articles'] == 'Y')) {<br />
if($items = Articles::list_by_hits(0, 3, 'compact'))<br />
$text .= Skin::build_box(i18n::s('Popular Pages'), Skin::build_list($items, 'compact'), 'navigation', 'popular_articles');<br />
}<br />
<br />
// list most popular files<br />
if(isset($context['home_with_top_files']) && ($context['home_with_top_files'] == 'Y')) {<br />
include_once $context['path_to_root'].'files/files.php';<br />
if($items = Files::list_by_hits(0, 3, 'compact'))<br />
$text .= Skin::build_box(i18n::s('Popular Files'), Skin::build_list($items, 'compact'), 'navigation', 'popular_files');<br />
}<br />
<br />
// list most popular links<br />
if(isset($context['home_with_top_links']) && ($context['home_with_top_links'] == 'Y')) {<br />
include_once $context['path_to_root'].'links/links.php';<br />
if($items = Links::list_by_hits(0, 3, 'compact'))<br />
$text .= Skin::build_box(i18n::s('Popular Links'), Skin::build_list($items, 'compact'), 'navigation', 'popular_links');<br />
}<br />
<br />
// list most recent peering servers<br />
if(isset($context['home_with_peering_servers']) && ($context['home_with_peering_servers'] == 'Y')) {<br />
include_once $context['path_to_root'].'servers/servers.php';<br />
if($items = Servers::list_by_date(0, 3, 'compact'))<br />
$text .= Skin::build_box(i18n::s('Peers'), Skin::build_list($items, 'compact'), 'navigation', 'recent_servers');<br />
}<br />
Et voilà tout est possible simplement avec Yacs....
Maintenant ce que je me serai attendu à trouver dans Yacs, c'est dans la page de configuration de la page d'index, pour chacune de ces sections: la possibilité de mettre un nombre d'éléments et un rang comme pour les autres boites de menu.
Il est vrais que l'on peux aussi ce créé des menus personalisé avec les codes Yacs dynamique comme read, published, edited, etc... mais toujours avec uniquement 7 items...
Ce serait cool aussi que les code yacs prennent un paramétre suplémentaire comme le nombre d'élément...
Un truc du genre:
- Read done 7 éléments le defaut
- Read,3 done que 3 éléments
- Avec biensûre les read=section:<id>,12
En faite pour être complet vous pouvez auusi remonter dans le fichier Index.php et personnaliser certaine taille de boite extra qui seront sinon toujours limité à maximum 7 éléments (à cause du bon vieux paramétres COMPACT_LIST_SIZE)
Exemple pour l'affichage des anciens articles:
<br />
// list older articles<br />
if(isset($context['home_with_older_articles']) && ($context['home_with_older_articles'] == 'Y')) {<br />
<br />
if($items = Articles::list_by_date($items_per_page, COMPACT_LIST_SIZE+1, 'compact')) {<br />
<br />
// more at the index page<br />
if(count($items) > COMPACT_LIST_SIZE) {<br />
@array_splice($items, COMPACT_LIST_SIZE);<br />
<br />
$items['articles/'] = i18n::s('More pages').MORE_IMG;<br />
}<br />
<br />
$text .= Skin::build_box(i18n::s('Recent Pages'), Skin::build_list($items, 'compact'), 'navigation');<br />
}<br />
}<br />
<br />
// list older articles<br />
if(isset($context['home_with_older_articles']) && ($context['home_with_older_articles'] == 'Y')) {<br />
<br />
if($items = Articles::list_by_date($items_per_page, 6, 'compact')) {<br />
<br />
// more at the index page<br />
if(count($items) > 5) {<br />
@array_splice($items, 5);<br />
<br />
$items['articles/'] = i18n::s('More pages').MORE_IMG;<br />
}<br />
<br />
$text .= Skin::build_box(i18n::s('Recent Pages'), Skin::build_list($items, 'compact'), 'navigation');<br />
}<br />
}<br />
etc... je pense que vous avez compris comme moi, que pour l'instant, pour les boites de menu vous pouvez changer la valeur par defaut de chaque boite dans index.php
Actuellement cela fonctionne sur mon site local, je vais monter les modifs dés que ma connection FTP fonctionnera surement dans la soiré et vous pourez voir le résultat sur www.rananiger.info si les modifs ne sont pas en place de lors visite revenez plus tard... C'est que mon FTP continue à me jouer des tours...
Au passage: quel beau code ce Yacs.... je n'avait pas encore soulever le capot... mais c'est claire, ultra documenté, que du bonheur...
This comment has inspired:
by Pat on Feb. 21