THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour,

Je découvre Thelia, et je dois vous dire que pour l'instant je suis assez surpris que certaines fonctionnalités soient si peu accessibles.
Je pense déjà au slider. Un CMS qui intègre un slider en dur sans pouvoir l'administrer. Je trouve ça très rudimentaire tout de même.
Ensuite, je cherche à créer une page et la c'est la galère. J'ai vu le système de dossier, est-ce fait pour gérer des pages de contenu ?
Puis, lorsqu'une page est créé, comment est-ce que l'on ajoute cette page au menu ?

Merci d'avance pour votre aide.

Last edited by bill django (06-08-2014 15:09:49)

Offline


Tu n'a pas encore saisi le mode de fonctionnement de Thelia, qui est très différent du fonctionnement par blocs de nombreux CMS.

Thelia est d'une grande souplesse et d'une grande puissance, mais il faut posséder une connaissance minimale du HTML/CSS pour l'exploiter pleinement.

Pour le slider de la page d'accueil, qui est en dur dans le template par défaut, il est très simple de le rendre dynamique, en créant un contenu (note son ID) auquel on attachera autant d'images que nécessaire. On utilisera ensuite une boucle image pour afficher ces images :

{loop type="image" name="slider-images" content="ID_DE_TON_CONTENU" width="1201" height="390" resize_mode="crop"}
    <figure class="item active">
        <img src="{$IMAGE}" alt="{$TITLE}">
    </figure>
{/loop}

Pour créer une page de contenu, il te faut effectivement créer un contenu en back office, et noter son ID. Pour ajouter ce contenu au menu (du haut), il te faut intervenir dans le fichier layout.tpl du template frontOffice, où tu ajouteras autour de la ligne 153 une boucle content :

{loop type="content" name="my_custom_content" id="ID_DE_TON_CONTENU"}
    <li><a href="{$URL}">{$TITLE}</a></li>
{/loop}

Si tu veux ajouter plusieurs contenus au menu, tu créera un dossier "Menu du haut", dans lequel tu rangera tes contenus, et tu l'affichera en front-office là encore avec une boucle content :

{loop type="content" name="my_custom_content" folder="ID_DE_TON_DOSSIER"}
    <li><a href="{$URL}">{$TITLE}</a></li>
{/loop}

En espérant avoir pu aider...


OpenStudio Toulouse

Offline


Merci pour ton aide, j'ai réussi à faire ce que je voulais !

Offline

Offline


Je veux afficher la $DESCRIPTION d'un contenu grâce à cette boucle :

                       {loop type="content" name="my_custom_content" id="4"}
                            <div class="block-heading"><h3 class="block-title">{$TITLE}</h3></div>
                            <div class="block-content">{$DESCRIPTION}</div>
                        {/loop}

Le problème que j'ai c'est que les balises html (ex : strong, h1...) ne sont pas interprétées et dans la description qui s'affiche j'ai donc des <strong><h1> etc...

Avez-vous une idée pour régler cela ?

Merci.

Offline

Offline


J'ai testé la boucle que tu proposes pour le slider des images, cela fonctionne mais j'ai besoin d'ajouter la classe "active" au premier slide et je ne vois pas comment faire ?
J'ai testé {CURRENT}, mais c'est pour les boucles des pages ; j'ai testé d'utiliser la syntax smarty {$smarty.name.index}, mais ça ne fonctionne pas non plus.

Comment puis-je faire ?

Offline


Je publie donc le résultat : pour unr page de contenu ayant la ID=2, voici le slider dynamique de la home.

{loop type="image" name="slider-images" content="2" width="1280" height="500" resize_mode="crop"}
    <figure class="item{if $LOOP_COUNT == 1} active{/if}">
        <img src="{$IMAGE_URL}" alt="{$TITLE}">
    </figure> 
 {/loop}

Offline

Offline


Merci pour ces infos "loop" pour le carousel, j'ai bien appliqué tout ceci mais chez moi pas d'image qui s'affiche....

<section class="carousel-container">
    <div id="carousel" class="carousel slide">
        <div class="carousel-wrapper">
            <div class="carousel-inner">
               {loop type="image" name="slider-images" content="3" width="1280" height="500" resize_mode="crop"}
    <figure class="item{if $LOOP_COUNT == 1} active{/if}">
        <img src="{$IMAGE_URL}" alt="{$TITLE}">
    </figure> 
 {/loop}
            </div>
        </div>
        <a class="left carousel-control" href="#carousel" data-slide="prev"><span class="icon-prev"></span></a>
        <a class="right carousel-control" href="#carousel" data-slide="next"><span class="icon-next"></span></a>
    </div>
</section><!-- #carousel -->

PS: j'ai bien une image en back-office qui a un  ID:3

Cordialement.

Offline


PS: j'ai bien une image en back-office qui a un  ID:3

A la lecture de ta boucle, tu affiches les images du contenu ID=3, et non pas l'image ID=3.


OpenStudio Toulouse

Offline


Autant pour moi, je me suis emmêlé  les pinceaux, entre: content, product , category.....

Cordialement.

Offline


Bonjour,

peux t-on appliquer cette boucle a une catégorie?
j'ai :

 <section class="category-description red">
                {loop name="category.description" type="category" id={$category_id} limit="1" }
                    <h1 id="main-label" class="page-header">{category attr="title"} {$ID}</h1>
                    
                   <div class="carousel-container">
        <div id="carousel red" class="carousel slide">
            <div class="carousel-wrapper">
                <div class="carousel-inner">
                    {loop type="image" name="slider-images" category="$ID"  width="555" height="280" resize_mode="crop" limit="4"}
    <figure class="item {if $LOOP_COUNT == 1} active"{/if}">
        <img src="{$IMAGE_URL}" alt="{$TITLE}"> {$ID}
    </figure> 
 {/loop}
                </div>
            </div>
            <a class="left carousel-control" href="#carousel" data-slide="prev"><span class="icon-prev"></span></a>
        <a class="right carousel-control" href="#carousel" data-slide="next"><span class="icon-next"></span></a>
    </div>
        </div>
    </div><!-- #carousel -->
                    
                    {if $DESCRIPTION}
                    <div class="description text-center">
                        {$DESCRIPTION nofilter}
                    </div>
                    {/if}
                    {if $POSTSCRIPTUM}
                    <div class="postscriptum text-center">
                        {$POSTSCRIPTUM}
                    </div>
                    {/if}
                {/loop}
            </section>

Si je ne mets pas

{if $LOOP_COUNT == 1} active"{/if}"

les images sont les unes sous les autres.
sinon seule la premiere image s'affiche et  je ne peux pas passer de l'une a l'autre.


Merci

Offline


je me répond à moi même:

 <a class="left carousel-control" href="#carousel" data-slide="prev"><span class="icon-prev"></span></a>
        <a class="right carousel-control" href="#carousel" data-slide="next"><span class="icon-next"></span></a>
    

je fais appel à

href="#carousel" 

est ma div s'appelle:

<div id="carousel red"...

après correction cela fonctionne