Skip to main content Help Control Panel

 

support «   Besoin d'aide «  

Lien vers un article suivi de son introduction [Solved]

PreviousNextIndex

Je cherche à afficher un lien vers un article avec son titre et son introduction.

OwnerJmarc
Progress80%
WorkflowSupport request
StatusA solution has been made available
  • Submission on Jan. 29 2010 by Jmarc
  • Qualification on Jan. 30 2010
  • Action on Jan. 30 2010 by Jmarc

Est-ce qu'il y aurait un code du genre de [article.description=id] mais qui permette d'afficher uniquement le titre (avec le lien vers la page) et l'introduction ?

réponse d'Alexis :  non. Par contre il y a peu être un autre moyen d'obtenir ce que tu souhaites, suivant le contexte.

Quelqu'un aurait une idée ?


Alexis Raimbault
on Feb. 1 2010

m'enfin il y a des <p> </p> partout. tu as fait un "coller" dans tinymce ?




Alexis Raimbault webmaster free-lance

Alexis Raimbault
on Feb. 1 2010

il faut ziper les .php avant de les envoyer.

je regarde ça bientôt




Alexis Raimbault webmaster free-lance

Jmarc
on Feb. 1 2010

Alexis : je pense que c'est bien mon layout qui est utilisé car je vois apparaitre les intro derrière mes titres.

Pour joindre le fichier à cet article, j'ai l'impression que je n'ai pas les droits pour le faire (je peux uniquement joindre des images).

je place donc ici le code du fichier layout_articles_as_compact2.php que j'ai utilisé :

<p><?php
/**
 * layout articles as a compact2 list
 *
 * @see articles/articles.php
 *
 * @author Bernard Paques
 * @author GnapZ
 * @author Thierry Pinelli (ThierryP)
 * @reference
 * @license <a href="http://www.gnu.org/copyleft/lesser.txt">http://www.gnu.org/copyleft/lesser.txt</a> GNU Lesser General Public License
 */
Class Layout_articles_as_compact2 extends Layout_interface {</p>
<
p/**
  * the preferred number of items for this layout
  *
  * @return int the optimised count of items for this layout
  */
 
function items_per_page() {
  return 
100;
 }</
p>
<
p/**
  * list articles
  *
  * @param resource the SQL result
  * @return array
  *
  * @see skins/layout.php
 **/
 
function &amp;layout(&amp;$result) {
  global 
$context;</p>
<
p>  // we return an array of ($url => $attributes)
  
$items = array();</p>
<
p>  // empty list
  
if(!SQL::count($result))
   return 
$items;</p>
<
p>  // flag articles updated recently
  
if($context['site_revisit_after'] < 1)
   
$context['site_revisit_after'] = 2;
  
$dead_line gmstrftime('%Y-%m-%d %H:%M:%S'mktime(0,0,0,date("m"),date("d")-$context['site_revisit_after'],date("Y")));</p>
<
p>  // process all items in the list
  
include_once $context['path_to_root'].'comments/comments.php';
  include_once 
$context['path_to_root'].'overlays/overlay.php';
  
$now gmstrftime('%Y-%m-%d %H:%M:%S');
  while(
$item =&ampSQL::fetch($result)) {</p>
<
p>   // get the related overlay
   
$overlay Overlay::load($item);</p>
<
p>   // get the anchor
   
$anchor =&ampAnchors::get($item['anchor']);</p>
<
p>   // the url to view this item
   
$url =&ampArticles::get_permalink($item);</p>
<
p>   // build a title
   
if(is_object($overlay))
    
$title Codes::beautify_title($overlay->get_text('title'$item));
   else
    
$title Codes::beautify_title($item['title']);
    
   
//Jmarc the full introductory text
   
$intro '';
   if(
is_object($overlay))
    
$intro Codes::beautify_introduction($overlay->get_text('introduction'$item));
   if(
$item['introduction'])
    
$intro .= Codes::beautify_introduction($item['introduction']);
   if (
$intro)
    
$intro ' ('.$intro.')';
   
//$title .= ' '.$intro;</p>
<p>   // initialize variables
   
$prefix $suffix '';</p>
<
p>   // flag articles that are dead, or created or updated very recently
   
if(($item['expiry_date'] > NULL_DATE) &amp;&amp; ($item['expiry_date'] <= $now))
    
$prefix .= EXPIRED_FLAG;</p>
<
p>   // signal articles to be published
   
if(($item['publish_date'] <= NULL_DATE) || ($item['publish_date'] > $now))
    
$prefix .= DRAFT_FLAG;</p>
<
p>   // signal restricted and private articles
   
if($item['active'] == 'N')
    
$prefix .= PRIVATE_FLAG;
   elseif(
$item['active'] == 'R')
    
$prefix .= RESTRICTED_FLAG;</p>
<
p>   // count related comments, if any
   
if($count Comments::count_for_anchor('article:'.$item['id'], TRUE))
    
$suffix .= ' ('.$count.')';</p>
<
p>   // flag articles updated recently
   
if($item['create_date'] >= $dead_line)
    
$suffix .= NEW_FLAG;
   elseif(
$item['edit_date'] >= $dead_line)
    
$suffix .= UPDATED_FLAG;</p>
<
p>   // the hovering title
   
if($item['introduction'] &amp;&amp; ($context['skins_with_details'] == 'Y'))
    
$hover strip_tags(Codes::beautify_introduction($item['introduction']));</p>
<
p>   // add a link to the main page
   
else
    
$hover i18n::s('View the page');</p>
<
p>   // help members to reference this page
   
if(Surfer::is_member())
    
$hover .= ' [article='.$item['id'].']';</p>
<
p>   // list all components for this item
   
$items[$url] = array($prefixSkin::strip($title.$intro30), $suffix'basic'NULL$hover);</p>
<
p>  }</p>
<
p>  // end of processing
  
SQL::free($result);
  return 
$items;
 }</
p>
<
p>}</p>

Alexis Raimbault - on Feb. 1 2010

Jmarc : dans /section/view.php

ligne 1298, le traitement de la liste d'articles envoyée par le layout.

valable que si le layout renvoi un tableau, comme compact justement : on affiche les articles avec une liste "compact" que si le layout est "compact" sinon c'est une liste "decorated".

si le layout envoie une chaine, pas de pb.

il suffit donc de transformer la toute fin de ton layout :

$result Skin::build_list($items'compact');    
  return 
$result;



Alexis Raimbault webmaster free-lance

Alexis Raimbault
on Feb. 1 2010

le gros icone flèche c'est du decorated ça.

t'es sur d'afficher le bon layout ? si oui, peux-tu joindre ton fichier ici ?




Alexis Raimbault webmaster free-lance

Jmarc
on Jan. 30 2010

Alexis : voilà, j'ai tout fait comme tu as dit et j'en ai profité pour illustrer dans la doc : Créer un nouveau layout d'article

Par contre, je ne comprend pas pourquoi je me retrouve avec un gros icone devant chacune de mes lignes :

alors que le layout d'origine (compact) affichait juste des petits >> :

Une idée ?


Jmarc
on Jan. 30 2010

Alexis :

Excellent, ça répond parfaitement à mes 2 besoins !

Merci Alexis

Alexis Raimbault - on Jan. 30 2010

Jmarc : ah super alors !

Bon, reste à dériver "compact". Regarde dans un autre layout comment on récupère l'intro (il faut gérer aussi le cas d'articles overlayés qui customisent leur intro)




Alexis Raimbault webmaster free-lance

Jmarc
on Jan. 30 2010

Alexis : ben, il faut aussi le titre de la page, en plus de l'intro...

Dans un premier temps, c'est pour faire une liste de lien "titre + intro" à la main.

Dans un second temps, il devrait être possible d'utiliser le même principe pour ajouter un type de liste automatique basé dessus (par exemple, le style "compact" mais avec l'intro derrière le titre).

L'idée, c'est de renseigner uniquement le n° de l'article, sans devoir chercher et taper le titre et l'intro. Et que le label du lien se change automatiquement le jour où l'on change le titre ou l'intro de l'article.

Alexis Raimbault - on Jan. 30 2010

Jmarc :

tu peux dériver le layout compact pour ajouter l'intro, ensuite tu associes les articles à lister à une même catégorie créé pour cette usage, et enfin tu affiches le contenu de cette liste par code yacs en appelant ton layout.

[published.mylayout=category:<id>]


Alexis Raimbault webmaster free-lance

Jmarc
on Jan. 29 2010

Alexis : j'ai une liste de lien vers des pages dont les titres ne sont pas très parlant si l'on ne rajoute l'introduction de la page derrière.

par exemple, au lieu d'afficher :

toc

j'aimerais avoir :

toc Table des matières (sommaire déroulant)

(où Table des matières (sommaire déroulant) est l'intro de ma page toc)

Alexis Raimbault - on Jan. 30 2010

Jmarc : et comme ça ?

Table des matières (sommaire déroulant)

tu fais tes liens à la main ou c'est une liste automatique ?

dans quel contexte affiches-tu cette liste ?

 

 




Alexis Raimbault webmaster free-lance

Alexis Raimbault
on Jan. 29 2010

c'est donc que tu veux afficher le lien et l'intro en plein milieu d'un autre texte ?




Alexis Raimbault webmaster free-lance

PreviousNextIndex