Forum CMS Made Simple FR

Version complète : [RESOLU] Ne pas afficher certains sommaires de NEWS
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.11.11
#~ Hébergeur / Soft : OVH
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.11.11
#~ Installed Modules:
#~ CMSMailer: 5.2.2
#~ CMSPrinting: 1.0.5
#~ FileManager: 1.4.5
#~ MenuManager: 1.8.6
#~ MicroTiny: 1.2.7
#~ ModuleManager: 1.5.8
#~ News: 2.14.4
#~ Search: 1.7.11
#~ ThemeManager: 1.1.8
#~ TinyMCE: 2.9.13
#~ FormBuilder: 0.8
#~ Gallery: 2.0.1
#~ CGSimpleSmarty: 1.7.4
#~ GoogleMaps: 0.2.1
#~ CMSDumper: 1.3
#~ Captcha: 0.5.0.137
#~ BackupMySql: 0.3.4
#~ AceEditor: 1.0
#~ CGExtensions: 1.45
#~ CGContentUtils: 1.4.5
#~ CGSmartImage: 1.17.1
#~ CustomGS: 2.1
#~ ExaCSS: 1.3
#~ ECB: 1.6
#~ CMSForms: 1.11.2
#~ MCFramework: 0.0.6
#~ CGGoogleMaps2: 0.99.1
#~ ListIt2: 1.4.1
#~ JQueryTools: 1.3.4
#~ MleCMS: 1.11.4
#~ TemplateExternalizer: 2.1.6
#~ Config Information:
#~ php_memory_limit:
#~ process_whole_template:
#~ max_upload_size: 64000000
#~ url_rewriting: mod_rewrite
#~ page_extension:
#~ query_var: page
#~ image_manipulation_prog: GD
#~ auto_alias_content: true
#~ locale:
#~ default_encoding: utf-8
#~ admin_encoding: utf-8
#~ set_names: true
#~ Php Information:
#~ phpversion: 5.4.34
#~ md5_function: On (Vrai)
#~ gd_version: 2
#~ tempnam_function: On (Vrai)
#~ magic_quotes_runtime: Off (Faux)
#~ E_STRICT: 2048
#~ E_DEPRECATED: 8192
#~ memory_limit: 128M
#~ max_execution_time: 120
#~ output_buffering: 4096
#~ safe_mode: Off (Faux)
#~ file_uploads: On (Vrai)
#~ post_max_size: 64M
#~ upload_max_filesize: 64M
#~ session_save_path: /tmp (0700)
#~ session_use_cookies: On (Vrai)
#~ xml_function: On (Vrai)
#~ xmlreader_class: On (Vrai)
#~ Server Information:
#~ Server Api: cgi-fcgi
#~ Server Db Type: MySQL (mysql)
#~ Server Db Version: 5.1.73
#~ Server Db Grants: Impossible de trouver un privilège "GRANT ALL". Cela peut signifier que vous pourriez avoir des problèmes pour installer ou retirer des modules, ou encore l 'ajout et la suppression d'éléments, y compris les pages.
#~ Server Time Diff: Aucune différence de date du système de fichiers trouvées
#~ ----------------------------------------------
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~


Bonjour,

Avec le module de news de cmsms par défaut, y'a t-il un moyen simple de ne pas afficher certaines catégories ?
Sachant que sur ma page d'accueil par défaut je peux afficher 20 catégories différentes (sommaires).

d'autres catégories comme par exemple "Actu" doivent seulement s'afficher dans le carrousel "NewsSlide" l'unique module que j'ai pus trouvez sur cmsms pour afficher des news en slide.


Donc pour résumer :

Sommaires catégories xxxxxx, afficher en colonne sur ma page d'accueil
Sommaire catégories "Actu" ou autres, seulement dans le slide pas en colonne sur ma page.

J'ai pas vu de paramètre pour inhiber une ou des catégories.

Ce que j'utilise sur ma page d'accueil pour afficher toutes les catégories :
Code :
[== Indéfini ==]
    {news number="24"}

Spécifiques a chaque pages :
Code :
[== Indéfini ==]
{news number='12' category="{$page_alias}" }

Et pour finir le Slide :
Code :
[== Indéfini ==]
{news number='12' summarytemplate="slide_02" category="actu" }

Merci.
Bonjour,
Tu peux tester la présence de la catégorie non désirée dans ton gabarit de sommaire :
Code :
[== Indéfini ==]
{foreach from=$items item=entry}
{if $entry->category != 'actu'}
<div class="NewsSummary">
{...}
{/if}
{/foreach}
Bonjour Jean le Chauve,

Merci pour cette réponse,

Mais y'a pas un moyen comme une variable d'exclusion de catégories ?
Actuellement il y'a le choix de/des catégories à afficher, mais pas l'inverse,

Actuellement toutes catégories (category ="*" ou category ="xx;xx;xx")
il faudrait par exemple (category ="*" catExclusion ="xxx OU xxx;xxx")

Je penses que de rajouter une balise d'exclusion doit-être possible ?

Car même si votre réponse est bonne cela aura pour effet de ne plus afficher ma catégorie "ACTU" aussi dans mon carrousel qui lui doit justement afficher que la catégorie "ACTU"


et le Content de la page toutes les Catégories sauf "ACTU"...

Sinon créer par copie, 2 sommaires (avec et sans "ACTU").

Info : j'ai 30 catégories à afficher donc une seulement à exclure ;)

Merci.
Tu peux demander la feature d'exclusion dans la forge.
Citation :Car même si votre réponse est bonne cela aura pour effet de ne plus afficher ma catégorie "ACTU" aussi dans mon carrousel qui lui doit justement afficher que la catégorie "ACTU"
Tu n'ajoutes l'exclusion {if $entry->category != 'actu'} que dans le gabarit sommaire par défaut, pas dans slide_02.
Une autre méthode aurait été de créer 2 catégories : actu et général et déplacer toutes tes catégories actuelles (sauf actu) en sous-catégorie de général. Mais ceci me semble plus coûteux en temps pour toi que l'exclusion {if $entry->category != 'actu'} car tu devrais toutes les recréer une par une.
Jean le Chauve a écrit :Tu peux demander la feature d'exclusion dans la forge.
Citation :Car même si votre réponse est bonne cela aura pour effet de ne plus afficher ma catégorie "ACTU" aussi dans mon carrousel qui lui doit justement afficher que la catégorie "ACTU"
Tu n'ajoutes l'exclusion {if $entry->category != 'actu'} que dans le gabarit sommaire par défaut, pas dans slide_02.


En effet l'idée est bonne mais limite les choses alors que l'ajout non car passé en paramètre lors de l'appel {xxxx}

car dans votre solution, si j'avais plusieurs catégories à exclure ça demanderait un 'if' avec x exclusions
et qui en plus de cela sera effectif sur toutes les feuilles ou le sommaire serait afficher (par exemple) sauf si création de 2 sommaires ;)

Merci votre réponse résout mon problème pour mon cas.
Mon plus grand plaisir, en tant qu'intégrateur, survient quand je trouve des solutions pour des cas non pré-mâchés, sans quoi je ferais autre chose Wink.
Comme écrit plus haut, tu peux faire une demande pour ajouter cette feature dans la forge. Jusqu'à présent, personne n'a ressenti le besoin d'ajouter ce paramètre, le nombre de caractères à insérer dans le "if" est identique à celui nécessaire dans un paramètre catExclusion. Le temps que tu as mis pour écrire
Citation :En effet l'idée est bonne mais limite les choses alors que l'ajout non car passé en paramètre lors de l'appel {xxxx}

car dans votre solution, si j'avais plusieurs catégories à exclure ça demanderait un 'if' avec x exclusions
et qui en plus de cela sera effectif sur toutes les feuilles ou le sommaire serait afficher (par exemple) sauf si création de 2 sommaires Wink
est peut-être aussi long que de copier-coller un {if} et de cliquer sur "dupliquer un gabarit". De plus, cela te permet d'ajouter des {else} pour une meilleure précision dans l'affichage de tes news au lieu de les limiter comme tu sembles l'affirmer.

Bonne continuation et prend du plaisir avec le développement de ton site Smile
Jean le Chauve a écrit :Mon plus grand plaisir, en tant qu'intégrateur, survient quand je trouve des solutions pour des cas non pré-mâchés, sans quoi je ferais autre chose Wink.
Comme écrit plus haut, tu peux faire une demande pour ajouter cette feature dans la forge. Jusqu'à présent, personne n'a ressenti le besoin d'ajouter ce paramètre, le nombre de caractères à insérer dans le "if" est identique à celui nécessaire dans un paramètre catExclusion. Le temps que tu as mis pour écrire
Citation :En effet l'idée est bonne mais limite les choses alors que l'ajout non car passé en paramètre lors de l'appel {xxxx}

car dans votre solution, si j'avais plusieurs catégories à exclure ça demanderait un 'if' avec x exclusions
et qui en plus de cela sera effectif sur toutes les feuilles ou le sommaire serait afficher (par exemple) sauf si création de 2 sommaires Wink
est peut-être aussi long que de copier-coller un {if} et de cliquer sur "dupliquer un gabarit". De plus, cela te permet d'ajouter des {else} pour une meilleure précision dans l'affichage de tes news au lieu de les limiter comme tu sembles l'affirmer.

Bonne continuation et prend du plaisir avec le développement de ton site Smile

D'accord avec vous, ce que je veux dire c'est de rendre générique l'utilisation. et donc adaptable à tous sans aucune modifications par l'utilisateur qui ne connais pas forcément les méandres du code (moi même pas expert en php et java..) peut pas être bon partout du 1er coup Wink
Il est vrai que je débute dans la conception de site web avec ce type de logiciel CMS et en PHP mais je penses qu'avec un peut plus temps, comme avec les autres langages je saurais tirer mon épingle du jeux.

JE préfère les switch (C#) :p

Et encore merci pour votre temps et vos idées.
Ma solution :

1) ajouté un champ : CategoryExcluded
2) ajouter 2 fichiers dans lib\smarty\libs\plugins\compiler.continue.php et compiler.break.php
qui contient :
Code :
[== PHP ==]
<?php
function smarty_compiler_break($contents, &$smarty){
  return 'break;';
}
?>

//2eme fichier

<?php
function smarty_compiler_continue($contents, &$smarty){
  return 'continue;';
}
?>

très utile pour continuer à l'item suivant de tableau ou bien sortir d'une boucle comme (C#)


dans mon gabarit du sommaire qui sert pour la page (pas le slide)

Code :
[== Indéfini ==]
...
{foreach from=$items item=entry}

    {assign var='Isexclu' value=''} <!-- variable de sortie -->
    {assign var='Category' value=$entry->category} <!-- categorie -->
    {assign var='CategoryExcludedlist' value=$entry->fieldsbyname.CategoryExcluded->value}<!-- liste separe par ';' -->
    {assign var='CategoryExcludedwords' value=';'|explode:$CategoryExcludedlist}<!-- creation du tableau des categories exclu.. -->
    <!-- parcours la liste et si trouve sort de suite -->
    {foreach from=$CategoryExcludedwords item=CategoryExcludedword}
        {if $CategoryExcludedword == $Category}
            {assign var='Isexclu' value=$Category}
            {break}
        {/if}    
    {/foreach}

    <!-- Continue a l'item suivant car renseigne, une exclusion qui correspond a la categorie en cours -->
    {if $Isexclu !=''}
        {continue}
    {/if}    
...
Je vois que tu t'es bien amusé Smile
Tes 2 fonctions montrent que tu as rapidement pris la main sur php et smarty Smile, juste que tu as réinventé la roue : http://www.smarty.net/docs/en/language.f...ruct.break, mais à qui n'est-ce pas déjà arrivé et en l'améliorant.

Ce champs que tu as rajouté, c'est bien dans l'onglet définition de champs ? Et il faut remplir ce champs avec le nom des différentes catégories exclues séparées par un ; ? Et cela pour chaque article ?
Si oui, cela me semble aller à l'encontre de ton but "de rendre générique l'utilisation, et donc adaptable à tous sans aucune modifications par l'utilisateur qui ne connait pas forcément les méandres du code".
De toutes façons, je ne trouve pas sécurisé le fait d'obliger un rédacteur à modifier des paramètres dans une balise d'appel de module comme tu le souhaitais.

Si tu veux que l'utilisateur puisse choisir lui-même si une catégorie doit être ajoutée ou retirée de la liste des exclusions, et, pourquoi pas, améliorer le principe en lui offrant de faire apparaître l'un ou/et l'autre des différents sommaires dans telle ou telle page, je t'orienterais plutôt dans la création de {content_block} dans le gabarit de page pour recueillir ces paramètres et ainsi les avoir à disposition si le modules news doivent être affichés dans la dite page.
Je t'invite à regarder ce post qui va certainement te donner des idées pour ta personnalisation. Si cela peut t'aider, tu as les vidéos 9 et 11 de cette playlist qui donnent des exemples d'amélioration de l'interface utilisateur.
héhé Smile

Qui veut le peux..

En cherchant à droite et à gauche en se documentant sur les balises ont fini par arriver au but rechercher.
J'ai la chance d'être développeur en .NET donc j'aime bien si cela me plaît de trouver des solutions.

Malgré le faite que PHP et SMARTY pour moi c'est le domaine de l'inconnu...

J'aurais pus faire de sorte que si champ (supplémentaire) dans article (qui aurait été mieux placé directement au niveau de Category donc dans l'appel de la balise news en argument) si vide alors affichage (mode standard) si différent de vide alors pas d'affichage, car il est vrai qu'à ce niveau cela oblige à renseigner tous les articles du faite qu'Actu ne doit pas être afficher ce qui est un peut bourrin..

En passant j'ai remarqué des lacunes de protection concernant par exemple le module Slide (pour mon actu)
qui par défaut est fait de telle sorte que s'il y'a présence de champs complémentaires, il les affiches (fichier ou texte)
et donc si type file mais vide je me retrouve avec l'affichage d'un lien cassé etc..

Mais cela est quand même d'un grand service !!
A la personne si elle le désire de mettre les mains dans le code pour l'optimisation et le faire partager Smile

Je vais regarder tes propositions et je t'en remercie pour cela
claudetom a écrit :En passant j'ai remarqué des lacunes de protection concernant par exemple le module Slide (pour mon actu)
qui par défaut est fait de telle sorte que s'il y'a présence de champs complémentaires, il les affiches (fichier ou texte)
et donc si type file mais vide je me retrouve avec l'affichage d'un lien cassé etc..

Je me réponds à moi-même Wink mais qui servira à d'autres je pense.
dans le cas d'affichage de news ou autre..
comportant des champs supplémentaires pour affichage image ou textes,
Dans mon cas pour certains articles je ne renseigne pas les champs et donc le résultat à l'affichage était moche, car affichage de liens brisés.
j'ai donc modifié le code de la boucle comme ceci et plus de problèmes même si vide..

adaptable à d'autres cas...

Code :
[== Indéfini ==]
  <!-- Parcours les champs supplémentaires et affiche en fonction de leurs types -->
  {foreach from=$entry->fields item='field'}
     <div class="NewsSummaryField">
        
        {if $field->type == 'file'}
            <!-- ajout affiche seulement si le fichier (value) est renseigné -->
            {capture name='image'}{$field->value}{/capture}
            {if ($smarty.capture.image ne '')}
                <img src="{$entry->file_location}/{$field->value}"/>
            {/if}
        {else}
            <!-- ajout pour éviter ce champ -->
            {if $field->name != 'CategoryExcluded' && $field->name != 'Author'}
                {$field->name}:&nbsp;{eval var=$field->value}
           {/if}
        {/if}
        
     </div>
  {/foreach}