• Moderatore

    Joomla: inserire un H1

    Vorrei trasformare un titolo in un H1 in home page. Sono un newbie del codice di questo CMS. Su quale file intervenire?

    Grazie, ciao


  • Moderatore

    Ciao bobrock4.
    Il file che ti interessa si trova in una sottocartella di "templates". La struttura di file e cartelle dipende dal template, ma di solito è simile a questa:
    root di Joomla > templates > tuo template > html > com_content > folder > file.

    Il tuo file è quindi in una sottocartella del com_content, quale dipende dalla vista che hai in Home. Potrebbe essere uno dei due:
    featured > default.php
    category > blog.php

    Considera che alcuni template fanno eccezione per l'organizzazione di folder e file: se non riesci a individuare il file specifica per piacere la versione di Joomla, il nome del template e se la conosci la "vista" che c'è in Home. 🙂


  • Moderatore

    Ciao FDA e grazie della risposta.

    Non riesco a capire quale dei 2 file sia quello che comanda la home nel mio caso.

    Le directory e i file che io vedo nel mio sito sono:
    category > blog_item.php
    frontpage > default_item.php

    Ma oltre a quello, una volta aperti entrambi i file per vedere il codice, vedo che a loro volta richiamano altre funzioni.

    Il titolo del quale vorrei modificare il tag è proveniente da un modulo di news che vedo in "gestione articoli" (ID 110).

    Qua, al momento, mi fermo sperando in un input.

    Grazie
    Un saluto


  • Moderatore

    Pensavo si trattasse di un articolo. Se il titolo è dovuto a un modulo di news allora devi modificare il template del modulo.
    Procedi così: entra nel modulo con id=110 e vai nel tab "advanced", tra gli altri trovi nche un menu a tendina con etichetta "header tag" > seleziona h1 invece di h3.
    Con questa procedura dovresti riuscire a inserire l'h1 soltanto sul modulo con id=110 e non su tutti i moduli di questo tipo.
    Fammi sapere se hai risolto. 😉


  • Moderatore

    Se non va neanche così vuol dire che sul template che adotti non è implementata questa funzionalità, quindi devi aprire il file del template del modulo e intervenire a mano, cosa che puoi fare in più modi:

    • inserendo semplicemente l'h1 sul titolo (che poi varrà per tutti i moduli)
    • mettendo una condizione per stampare l'h1 solo in quel caso (più difficile ma ottieni di non modificare in h1 tutti i moduli).

    Su alcuni template il file generale da modificare in questo caso è: root di joomla > templates > tuo template > html > modules.php


  • Moderatore

    Ciao FDA,

    la prima soluzione che mi hai dato non è applicabile. Anche se il pannello di controllo è in italiano in "advanced" non c'è nessuna comando che somigli ad un header tag e con possibilità di modificare i tag header.

    Allora sono andato nel modules.php che mi hai indicato. Anche se ho l'indecisione sul template utilizzato (uno ha accanto a sè nella gestione template la stellina nella colonna "predefinito", l'altro il segno di spunta nella colonna "assegnato" ), uno di essi ha nel nome la variante pagina interna, quindi penso che sia l'altro.

    In ogni caso il contenuto del file modules.php (in entrambi i templates sono identici) a prima e ignorante occhiata non sembra mostrarmi modi di personalizzazione del titolo del modulo. Te lo riporto qui sotto in un quote per ben evidenziarlo.

    /**

    • @version $Id: modules.php 14401 2010-01-26 14:10:00Z louis $
    • @package Joomla
    • @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
    • @license GNU/GPL, see LICENSE.php
    • Joomla! is free software. This version may have been modified pursuant
    • to the GNU General Public License, and as distributed it includes or
    • is derivative of works licensed under the GNU General Public License or
    • other free or open source software licenses.
    • See COPYRIGHT.php for copyright notices and details.
      */

    // no direct access
    defined('_JEXEC') or die('Restricted access');

    /**

    • This is a file to add template specific chrome to module rendering. To use it you would
    • set the style attribute for the given module(s) include in your template to use the style
    • for each given modChrome function.
    • eg. To render a module mod_test in the sliders style, you would use the following include:
    • <jdoc:include type="module" name="test" style="slider" />
    • This gives template designers ultimate control over how modules are rendered.
    • NOTICE: All chrome wrapping methods should be named: modChrome_{STYLE} and take the same
    • two arguments.
      */

    /*

    • Module chrome for rendering the module in a slider
      */
      function modChrome_slider($module, &$params, &$attribs)
      {
      jimport('joomla.html.pane');
      // Initialize variables
      $sliders = & JPane::getInstance('sliders');
      $sliders->startPanel( JText::_( $module->title ), 'module' . $module->id );
      echo $module->content;
      $sliders->endPanel();
      }

    /*

    • Module chrome that allows for rounded corners by wrapping in nested div tags
      */
      function modChrome_jarounded($module, &$params, &$attribs)
      { ?>
      <div class="jamod module<?php echo $params->get('moduleclass_sfx'); ?>" id="Mod<?php echo $module->id; ?>">
      <div>
      <div>
      <div>
      <?php if ($module->showtitle != 0) : ?>
      <?php
      if(isset($_COOKIE['Mod'.$module->id])) $modhide = $_COOKIE['Mod'.$module->id];
      else $modhide = 'show';
      ?>
      <h3 class="<?php echo $modhide; ?>"><span><?php echo $module->title; ?></span></h3>
      <?php endif; ?>
      <div class="jamod-content"><?php echo $module->content; ?></div>
      </div>
      </div>
      </div>
      </div>
      <?php
      }
      ?>

    Grazie
    Ciao


  • Moderatore

    Ciao bobrock4,
    allora dovrebbe trattarsi di un Joomla! 1.5.
    Procedi così:

    1. Nella parte finale del codice che hai postato c'è questa riga:
    
    <h3 class="<?php echo $modhide; ?>"><span><?php echo $module->title; ?></span></h3>
    
    
    1. Modifica h3 in h1 oppure inserisci una condizione per modificare in h1 soltanto il modulo con id=110; non ricordo come si fa in Joomla 1.5, ma se non ci riesci avvertimi qui e faccio una prova. Nota che a seguito di un'ispezione via browser del sorgente potresti vedere ancora il tag h3 vecchio: in questo caso pulisci la cache di Joomla dal pannello amministrativo, in Joomla 1.5 devi andare da menu superiore in Strumenti > Pulisci cache, selezioni tutto e fai clic su Cancella.

    Aggiornaci. 😉


  • Moderatore

    @FDA said:

    1. Modifica h3 in h1 oppure inserisci una condizione per modificare in h1 soltanto il modulo con id=110; non ricordo come si fa in Joomla 1.5, ma se non ci riesci avvertimi qui e faccio una prova.

    Aggiornaci. 😉

    Ciao FDA, l'H1 adesso l'ha preso seguendo il tuo consiglio 🙂 Adesso ve ne sono molti di H1, alcuni dei quali inutili. Vorrei fare in modo, se possibile, di inserirlo in modo condizionato solo a quel modulo. Quando vedo come fai poi lo metto anche ad altri.

    Grazie, un saluto


  • Moderatore

    Ciao FDA,

    ma tu sai da dove si gestiscono le meta description nella versione 1.5? Nella pagina (articolo) ci sono le informazioni metadata, ma non corrispondono alla meta description che vedo nel codice sorgente. Nella mia versione c'è anche installato un plugin che si chiama SEO simple.

    Grazie
    un saluto


  • Moderatore

    Ciao bobrock4,
    in Joomla 1.5 puoi definire un meta description "generale" dal menu superiore (Sito > Configurazione) che si attiva quando non c'è uno specifico meta description definito a livello di articolo. Credo però che dipenda dal plugin.

    Non conosco SEO simple, ma altre estensioni seo/sef permettono di sovrascrivere i valori di meta description e dunque questo potrebbe valere anche per SEO simple. Cerca il menu del plugin e verifica se sovrascrive il meta description, cosa che tra l'altro promette di fare: extensions.joomla.org/extensions/site-management/seo-a-metadata/meta-data/4102

    Per la cosa della condizione su H1 ti faccio sapere, devo smanettarci un attimo. :smile5:


  • Moderatore

    Ciao FDA,

    Il pannello di amministrazione della pagina alla voce "informazioni metadata-->descrizione" consente delle customizzazioni che sono poi visibili anche da SEO boss. E' il meta tag description.

    Ho installato il plugin SEOboss che, anche nella versione free, mi consentirebbe di personalizzare il meta tag description per ogni pagina/articolo. Lui mi conferma che nella pagina la meta tag description è già stata definita dalla informazioni metadata.

    Lo strano è che nella pagina i tool SEO e il sorgente pagina mi fanno vedere un'altra meta tag description, che non so da dove sia stato pescata. Non dalle informazioni metadata. Il testo è corretto, ma è nella lingua sbagliata.

    Hai idea del perchè? Settaggi nelle lingue?

    Grazie
    Ciao


  • Moderatore

    Ciao bobrock4.

    Hai idea del perchè? Settaggi nelle lingue?
    Non ne ho idea, forse è installata un'estensione per il multilingua che non riesce a gestire più lingue sul meta description, oppure può gestire i meta ma non è configurata bene. :bho:


  • Moderatore

    Ok FDA. Grazie della tua risposta. Ciao 🙂


  • Moderatore

    @FDA said:

    Modifica h3 in h1 oppure inserisci una condizione per modificare in h1 soltanto il modulo con id=110; non ricordo come si fa in Joomla 1.5, ma se non ci riesci avvertimi qui e faccio una prova.

    Ciao FDA. Scusa se ritorno sull'argomento, ma ho cercato supporto in altri forum per non richiedertelo, senza però trovare risposta. Hai idea come posso fare per modificare solo quell'H1? Dammi uno spunto magari, poi ci penso io ad approfondire.

    Un saluto
    E Buon Anno a tutti


  • Moderatore

    Ciao bobrock4,
    prendo a esempio il file root di joomla 1.5 > templates > beez > html > modules.php. L'originale è così:

    
    function modChrome_beezDivision($module, &$params, &$attribs)
    {
        $headerLevel = isset($attribs['headerLevel']) ? (int) $attribs['headerLevel'] : 3;
        if (!empty ($module->content)) : ?>
            <div class="moduletable<?php echo $params->get('moduleclass_sfx'); ?>">
                <?php if ($module->showtitle) : ?>
                    <h<?php echo $headerLevel; ?>><?php echo $module->title; ?></h<?php echo $headerLevel; ?>>
                <?php endif; ?>
                <?php echo $module->content; ?>
            </div>
        <?php endif;
    }
    
    

    Puoi modificarlo in qualcosa del genere:

    
    function modChrome_beezDivision($module, &$params, &$attribs)
    {
        $headerLevel = isset($attribs['headerLevel']) ? (int) $attribs['headerLevel'] : 3;
        if (!empty ($module->content)) : ?>
            <div class="moduletable<?php echo $params->get('moduleclass_sfx'); ?>">
                <?php if ($module->showtitle) : ?>
                                    <?php
                                    if ($module->id == 110) {
                                        echo "<h1>" . $module->title . "</h1>";
                                    } else {
                                        echo "<h" . $headerLevel . ">" . $module->title . "</h" . $headerLevel . ">";
                                    }
                                    ?>
                <?php endif; ?>
                <?php echo $module->content; ?>
            </div>
        <?php endif;
    }
    
    

    Al posto di "110" inserisci l'id per il quale vuoi l'h1. Al posto di "h1" puoi sostituire h2, h4 ... .
    Attenzione agli stili CSS.
    Fammi sapere se hai risolto. 🙂

    Francesco


  • Moderatore

    Ciao FDA,

    non trovando lo stesso path ho fatto una ricerca con la stringa $module->showtitle e la sola ricorrenza che ho trovato è questo codice nel file administrator-->template-->system-->html. Non so se è la stessa cosa.

    /*
     * xhtml (divs and font headder tags)
     */
    function modChrome_xhtml($module, &$params, &$attribs)
    {
        if (!empty ($module->content)) : ?>
            <div class="module<?php echo $params->get('moduleclass_sfx'); ?>">
            <?php if ($module->showtitle != 0) : ?>
                <h3><?php echo $module->title; ?></h3>
            <?php endif; ?>
                <?php echo $module->content; ?>
            </div>
        <?php endif;
    }
    
    
    

    Ciao


  • Moderatore

    Ciao bobrock4,
    a occhio il file che hai preso è quello relativo al template di modulo nel back end, mentre a te serve quello nel front end. Dovresti cercare il file module.php all'interno di root > templates > tuotemplate > html. Se non trovi nulla così, allora prova a cercare in root > templates > system > html > module.php (qui però fai una prova, potrei confondermi ;)).


  • Moderatore

    Ciao, seguendo il tuo ultimo path ho sono arrivato al file dove avevo modificato l'h3 in h1 e che aveva funzionato, anche se mi sono trovato 12 h1 nella pagina.

    Ti prendo la porzione di codice che lo riguardava.

    /*
     * Module chrome that allows for rounded corners by wrapping in nested div tags
     */
    function modChrome_jarounded($module, &$params, &$attribs)
    { ?>
            <div class="jamod module<?php echo $params->get('moduleclass_sfx'); ?>" id="Mod<?php echo $module->id; ?>">
                <div>
                    <div>
                        <div>
                            <?php if ($module->showtitle != 0) : ?>
                            <?php
                            if(isset($_COOKIE['Mod'.$module->id])) $modhide = $_COOKIE['Mod'.$module->id];
                            else $modhide = 'show';
                            ?>
                            <h3 class="<?php echo $modhide; ?>"><span><?php echo $module->title; ?></span></h3>
                            <?php endif; ?>
                            <div class="jamod-content"><?php echo $module->content; ?></div>
                        </div>
                    </div>
                </div>
            </div>
        <?php
    }
    ?>
    

    Non ho visto dove potrei intervenire.

    Grazie
    Ciao


  • Moderatore

    Ciao.
    Modifica così:

    
    function modChrome_jarounded($module, &$params, &$attribs)
    { ?>
            <div class="jamod module<?php echo $params->get('moduleclass_sfx'); ?>" id="Mod<?php echo $module->id; ?>">
                <div>
                    <div>
                        <div>
                            <?php if ($module->showtitle != 0) : ?>
                            <?php
                            if(isset($_COOKIE['Mod'.$module->id])) $modhide = $_COOKIE['Mod'.$module->id];
                            else $modhide = 'show';
                            ?>
    
                            <h<?php if ($module->id == 110) {echo '1';} else {echo '3'} ?> class="<?php echo $modhide; ?>"><span><?php echo $module->title; ?></span></h<?php if ($module->id == 110) {echo '1';} else {echo '3'} ?>>
                            <?php endif; ?>
                            <div class="jamod-content"><?php echo $module->content; ?></div>
                        </div>
                    </div>
                </div>
            </div>
        <?php
    }
    ?>
    
    

    Fammi sapere se va. 🙂


  • Moderatore

    Ciao, ho provato ma sul codice

    
    <h<?php if ($module->id == 110) {echo '1';} else {echo '3'} ?> class="<?php echo $modhide; ?>"><span><?php echo $module->title; ?></span></h<?php if ($module->id == 110) {echo '1';} else {echo '3'} ?>>                         <?php endif; ?>
    
    

    mi da un errore, ma riesco a non vederlo più mettendo {echo '3';} al posto di {echo '3'}.

    In ogni caso non mostra sulla pagina live nè l'h1 nè l'h3.

    Grazie del tuo intervento 🙂