Comment DedeCMS détermine-t-il si le titre abrégé est vide puis affiche le titre complet ?
Préface
Je crois que tout le monde l'a rencontré lorsque nous utilisons le programme système DedeCMS pour développer des sites Web, nous rencontrerons de nombreuses limitations dues à la mise en page des pages Web. design. La largeur du titre de l'article nécessite une limite de mots. La méthode habituelle consiste à ajouter un attribut de titre à la balise a afin que le titre complet soit affiché lorsque la souris est placée dessus.
Mais le titre est incomplet car certains caractères ont été coupés. Voici plusieurs autres façons d'appeler le titre. Par exemple, lors du jugement du titre, DedeCMS affichera le titre complet lorsqu'il jugera que le titre abrégé. est vide.
Apprentissage recommandé : Dreamweaver cms
La méthode spécifique est la suivante :
Méthode 1 :
{dede:field name='array' runphp='yes'} if (@me['shorttitle']=='') @me=@me['title'];else @me=@me['shorttitle'];{/dede:field}
Méthode 2 :
[field:array runphp='yes'] if (@me['shorttitle']=='') @me=@me['title'];else @me=@me['shorttitle'];[/field:array]
Cette méthode peut être appliquée dans la balise {dede:arclist}.
Méthode 3 :
Parfois, le titre est trop long et tout afficher entraînera une confusion dans la mise en page et affectera l'apparence. Mais la partie affichage affecte l’expérience utilisateur. Nous espérons que lorsque le titre se situe dans une certaine plage de longueur, le titre complet sera affiché. Lorsque le titre est obsolète, seule une certaine longueur sera affichée, suivie de points de suspension, puis lorsque la souris est déplacée vers le haut, tout le contenu du titre sera affiché. Cela n'affectera pas la mise en page. La mise en page affiche également tout le contenu du titre.
Voici une méthode qui ne nécessite pas de modifier le programme, seulement de modifier le modèle. Par exemple, dans la liste de titres ci-dessous, le titre le plus long fait 50 octets, et seuls 30 octets sont affichés. Le code du modèle est le suivant :
<ul> {dede:arclist titlelen='50' row='10'} <li><a title="[field:title /]" href="[field:filename /]">[field:title function='( strlen("@me")>30 ? cn_substr("@me",30)."..." : "@me" )'/]</a></li> {/dede:arclist} </ul>
Évidemment, la clé pour résoudre le problème. le problème est d'utiliser [field :title function='( strlen("@me")>34 ? cn_substr("@me",30)."..." : "@me" ) ' /] remplace l'original [field:title / ] , il y a un processus de jugement supplémentaire lors de la sortie du titre. Tout d'abord, jugez si le titre est supérieur à 34 octets. S'il est supérieur à 34 octets, seule la longueur de 30 octets sera affichée. des points de suspension seront ajoutés. Title="[field:title /]" ne sera pas affecté et tout le contenu du titre sera affiché lorsque la souris sera déplacée vers le haut.
Méthode 4 :
En plus des méthodes ci-dessus de modification des modèles, il existe également des méthodes de programmation ou CSS. Mais pour les problèmes pouvant être résolus à l’aide de modèles, la programmation n’est pas nécessaire. La méthode CSS est la suivante :
<a style="width:120px; text-overflow:ellipsis; white-space:nowrap; overflow:hidden;" title="DedeCMS2007即将发布" href=" " >DedeCMS2007即将发布</a>
Explication : width:120px; longueur limitée, text-overflow:ellipsis : lorsque le texte dans l'objet déborde, la marque d'omission s'affiche.. ., white-space : nowrap : force l'affichage du texte sur une seule ligne, overflow:hidden : le contenu du débordement est masqué. Pour plus de conseils d'utilisation associés, vous pouvez vous référer à cet article : https://www.jb51.net/article/50258.htm
La méthode CSS est plus simple que de modifier le modèle. Malheureusement, l'attribut text-overflow:ellipsis n'a aucun effet dans Firefox. Utilisons donc la méthode ci-dessus pour modifier le modèle.
J'ai aussi découvert un autre problème récemment, dede title link, s'il peut être lié, sinon, il ne sera pas connecté Voici la solution :
{dede:list pagesize='15' orderby='weight' orderway='desc'} <dl> <dt>[field:pubdate function='strftime("%Y/%m/%d",@me)'/]</dt> <dd> [field:array runphp='yes'] if (@me['body']=='') @me=@me['title'];else{ @me = '<a href="'.@me['arcurl'].'" title="'.@me['description'].'" target="_blank">'.@me['title'].'</a>';}[/field:array] </dd> </dl> {/dede:list}
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!