web-dev-qa-db-fra.com

Joomla! - Donner des classes de blog catégories

Tout d'abord, je suis PHP noob:/juste pour éviter cela

Mon objectif est de donner à chaque Joomla! classer une classe afin que je puisse pré-modéliser les mises en page pour mon client. Lorsque ce dernier choisit une catégorie, il choisit en gros un style (Blog: Portrait avec flotteur de texte, Blog: Photo de paysage avec texte, Blog: Multi- Pic Layout, etc.)

J'ai trouvé ce fil pour une ancienne version de Joomla, mais j'ai reçu une erreur "Propriété indéfinie" lorsque j'ai ajouté leur code à mon index.php http://forum.joomla.org/viewtopic.php?f=466&t = 406991

J'ai aussi essayé d'ajouter leur code à /components/com_content/views/category/tmpl/blog_item.php

Toute aide serait grandement appréciée, merci!

  • edit: Utilisation du modèle Stock Protostar

Mettre à jour

J'utilise "Articles en vedette" comme type d'élément de menu "Blog". Étant donné que cette liste répertorie tous les articles en vedette, quelle que soit leur catégorie, je souhaite utiliser les catégories (BlogStyle1, 2, etc.) pour créer un style pour les articles en vedette. De cette façon, ma cliente peut simplement choisir comment elle veut que le blog soit stylé, en choisissant une catégorie. Pour être clair, je veux que les articles sur le blog présenté aient des styles différents, en fonction de la catégorie.

2
CSS Apprentice

Pour ajouter une classe "catégorie" spéciale aux articles de l'élément de menu Articles en vedette, vous devez créer un remplacement de modèle.

Copiez simplement le fichier: default.php, Situé dans:

components/com_content/views/featured/tmpl/

à ->:

templates/YOURTEMPLATENAME/html/com_content/featured/

Créez l'un des dossiers ci-dessus (html, com_content, en vedette) s'ils n'existent pas.

Ouvrez ensuite le fichier default.php copié avec un éditeur de texte (bloc-notes) et localisez la ligne 29:

<?php if (!empty($this->lead_items)) : ?>
<div class="items-leading clearfix">
    <?php foreach ($this->lead_items as &$item) : ?>
        <div class="leading-<?php echo $leadingcount; ?><?php echo $item->state == 0 ? ' system-unpublished' : null; ?> clearfix" 
            itemprop="blogPost" itemscope itemtype="http://schema.org/BlogPosting">  

Changer à ceci:

<?php if (!empty($this->lead_items)) : ?>
<div class="items-leading clearfix">
    <?php foreach ($this->lead_items as &$item) : ?>
        <div class="leading-<?php echo $leadingcount ." $item->category_alias";?><?php echo $item->state == 0 ? ' system-unpublished' : null; ?> clearfix" 
            itemprop="blogPost" itemscope itemtype="http://schema.org/BlogPosting">

Cela ajoutera une classe supplémentaire, avec le nom d'alias de la catégorie à laquelle appartient chaque article, à tous les articles principaux de la vue des articles présentés.

De même, vous pouvez faire la même chose pour les intro_items:

Autour de la ligne 61:

<div class="item column-<?php echo $rowcount ." $item->category_alias"; ?>
    <?php echo $item->state == 0 ? ' system-unpublished' : null; ?> span<?php echo round((12 / $this->columns));?>"
itemprop="blogPost" itemscope itemtype="http://schema.org/BlogPosting">
3
FFrewin

Vous avez quelques options, vous pouvez dupliquer votre modèle actuel et le renommer. Vous pouvez ensuite modifier le fichier css et ajouter des classes supplémentaires, puis affecter ce modèle aux pages de catégorie de votre choix. Vous pouvez trouver quelques aide sur comment faire cela ici .

L'option la plus simple (à mon avis) serait d'utiliser un modèle différent pour les sections de catégories. Si vous trouvez un modèle approprié, cela vous fera gagner beaucoup de temps.

Selon votre version de Joomla, les instructions ressemblent à quelque chose.

  1. Accédez au gestionnaire de modèles.

  2. Cliquez sur le nom du modèle pour accéder à l'écran de l'administrateur du modèle ou cochez la case en regard du nom du modèle, puis cliquez sur Modifier dans la barre d'outils en haut de la page.

  3. Cliquez sur l'onglet "Assignation de menu" dans l'écran de configuration.

  4. Vous obtiendrez alors une liste de tous les menus définis sur le site Web et une liste de tous les éléments de menu de chaque menu. Sélectionnez le ou les éléments de menu pour lesquels vous souhaitez affecter cette copie du modèle.

  5. Cliquez sur le bouton "Enregistrer et fermer" pour enregistrer les modifications.

La deuxième façon d’affecter un modèle à un élément de menu spécifique consiste à configurer les éléments de menu eux-mêmes. Cette façon d’affecter un modèle peut être utile lorsque vous avez déjà préparé des copies du modèle requis, comme décrit précédemment.

  1. Créez un nouvel élément de menu dans le gestionnaire de menus.

  2. Recherchez un paramètre de configuration "Style de modèle" dans la configuration des éléments de menu.

  3. Cliquez sur la case de sélection en regard de l'intitulé de ce paramètre pour obtenir une sélection des modèles et copies de modèles disponibles.

  4. Sélectionnez le modèle approprié et cliquez sur le bouton “Enregistrer”.

  5. Cet élément de menu sera affecté à un modèle sélectionné par la suite.

Il ne vous reste plus qu'à trouver un modèle que vous aimez!

J'espère que cela t'aides.

2
jonboy

Il y a un moyen très simple. Dans le gestionnaire de menus, il est possible d'attribuer des classes CSS personnalisées à un élément de menu. Dans Protostar, cette classe de page sera appliquée directement au conteneur de composants, dans ce cas <div class="blog">, qui vous permettra de styler la totalité de la sortie du blog avec votre css personnalisé.

enter image description here

Maintenant, vous pouvez ajouter vos styles en utilisant la classe de page pour fournir la portée, par exemple:

.my-css-scope .page-header {opacity: .1;}

La tête haute! Si vous n'entrez pas d'espace avant votre classe de page, il sera ajouté à la classe de page par défaut, par exemple. .blogmy-css-scope qui, IMO n'est pas si utile. Je recommanderais toujours de saisir un espace de début avant votre classe de page dans l'option de menu. La même chose est vraie ailleurs dans Joomla, comme avec les classes de module personnalisées par exemple.

2
Seth Warburton