+ Rispondi alla Discussione
Risultati da 1 a 7 di 7

Codice php per evitare la pubblicazione doppia dei tag h1 nelle pagine/articoli

Ultimo Messaggio di Bacca001 il:
  1. #1
    User
    Data Registrazione
    Jul 2017
    Località
    Torino
    Messaggi
    28

    Codice php per evitare la pubblicazione doppia dei tag h1 nelle pagine/articoli

    Ciao a tutti, spero sia la sezione giusta, vorrei sapere cortesemente come fare per evitare la pubblicazione doppia dei tag h1 negli articoli/pagine (per ora l'h2 del 2° blocco l'ho sostituito con h1) partendo da questi blocchi di codice php:

    Codice:
    <?php if ($this->params->get('show_page_heading')) : ?>
        <div class="page-header">
            <h1> <?php echo $this->escape($this->params->get('page_heading')); ?> </h1>
        </div>
    e

    Codice:
    <?php if ($params->get('show_title')) : ?>
                <h2 itemprop="headline">
                    <?php echo $this->escape($this->item->title); ?>
                </h2>
    Grazie

  2. #2
    User
    Data Registrazione
    Jul 2017
    Località
    Torino
    Messaggi
    28
    Ci vorrebbe anche una condizione per cui se un tag h1 viene pubblicato dalle impostazioni menu, categorie ed articoli ne permetta solo uno dei 3.

  3. #3
    User L'avatar di Bacca001
    Data Registrazione
    Jan 2016
    Località
    Ferrara
    Messaggi
    167
    In realtà non ho capito la richiesta..
    Puoi spiegare meglio, con degli esempi magari.

    Parli di WP?
    - Software Web & Application Developer -

  4. #4
    User
    Data Registrazione
    Jul 2017
    Località
    Torino
    Messaggi
    28
    No, mi riferisco a Joomla!, scusami.

    Cerco di spiegarmi dopo che ho rivisto titoli articoli, home e categorie poichè con le varie impostazioni non era possibile senza intervenire direttamente sulla formattazione articoli non pubblicando il titolo e riportarlo nel testo in h1:


    • per default joomla! 3 pubblica i titoli articoli della pagina principale in h1 (non ricordo se anche quelli dai menu top)
    • pubblica i titoli degli articoli in h2
    • i titoli delle categorie sono pubblicati in h1


    ora per ovviare ho eliminato il blocco il 1° blocco:

    Codice:
    <?php if ($this->params->get('show_page_heading')) : ?>
        <div class="page-header">
            <h1> <?php echo $this->escape($this->params->get('page_heading')); ?> </h1>
        </div>
    e lasciando il 2° blocco sostituendo solo il tag h2 con h1 come si vede:

    Codice:
    <?php if ($params->get('show_title')) : ?>
                <h1 itemprop="headline">
                    <?php echo $this->escape($this->item->title); ?>
                </h1>
    Anche per eliminare il logo e descrizione in cima avevo eliminato un pezzo per sistemare come volevo, idem per le info del template, immagino che per tutti e 3 casi ci sia un modo per dire, non pubblicare questo se inserisco/attivo questo altro logo, impostazione h1 su tutto se decido sulle singole impostazioni, non pubblicate le info se inserisco chessò una descrizione personale, insomma per evitare di tagliare a muzzo parti di codice inserendo delle istruzioni/condizioni come gia ci sono per altri parametri.

    Riporto sotto l'index.php originale e quello modificato per così dire, per capire se si può fare e come da nubbio.

    L'originale:

    Codice:
    <?php
    /**
     * @package     Joomla.Site
     * @subpackage  Templates.protostar
     *
     * @copyright   Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
     * @license     GNU General Public License version 2 or later; see LICENSE.txt
     */
    
    defined('_JEXEC') or die;
    
    /** @var JDocumentHtml $this */
    
    $app  = JFactory::getApplication();
    $user = JFactory::getUser();
    
    // Output as HTML5
    $this->setHtml5(true);
    
    // Getting params from template
    $params = $app->getTemplate(true)->params;
    
    // Detecting Active Variables
    $option   = $app->input->getCmd('option', '');
    $view     = $app->input->getCmd('view', '');
    $layout   = $app->input->getCmd('layout', '');
    $task     = $app->input->getCmd('task', '');
    $itemid   = $app->input->getCmd('Itemid', '');
    $sitename = $app->get('sitename');
    
    if ($task === 'edit' || $layout === 'form')
    {
        $fullWidth = 1;
    }
    else
    {
        $fullWidth = 0;
    }
    
    // Add JavaScript Frameworks
    JHtml::_('bootstrap.framework');
    
    // Add template js
    JHtml::_('script', 'template.js', array('version' => 'auto', 'relative' => true));
    
    // Add html5 shiv
    JHtml::_('script', 'jui/html5.js', array('version' => 'auto', 'relative' => true, 'conditional' => 'lt IE 9'));
    
    // Add Stylesheets
    JHtml::_('stylesheet', 'template.css', array('version' => 'auto', 'relative' => true));
    JHtml::_('stylesheet', 'templatepers.css', array('version' => 'auto', 'relative' => true));
    
    // Use of Google Font
    if ($this->params->get('googleFont'))
    {
        JHtml::_('stylesheet', '//fonts.googleapis.com/css?family=' . $this->params->get('googleFontName'));
        $this->addStyleDeclaration("
        h1, h2, h3, h4, h5, h6, .site-title {
            font-family: '" . str_replace('+', ' ', $this->params->get('googleFontName')) . "', sans-serif;
        }");
    }
    
    // Template color
    if ($this->params->get('templateColor'))
    {
        $this->addStyleDeclaration('
        body.site {
            border-top: 3px solid ' . $this->params->get('templateColor') . ';
            background-color: ' . $this->params->get('templateBackgroundColor') . ';
        }
        a {
            color: ' . $this->params->get('templateColor') . ';
        }
        .nav-list > .active > a,
        .nav-list > .active > a:hover,
        .dropdown-menu li > a:hover,
        .dropdown-menu .active > a,
        .dropdown-menu .active > a:hover,
        .nav-pills > .active > a,
        .nav-pills > .active > a:hover,
        .btn-primary {
            background: ' . $this->params->get('templateColor') . ';
        }');
    }
    
    // Check for a custom CSS file
    JHtml::_('stylesheet', 'user.css', array('version' => 'auto', 'relative' => true));
    
    // Check for a custom js file
    JHtml::_('script', 'user.js', array('version' => 'auto', 'relative' => true));
    
    // Load optional RTL Bootstrap CSS
    JHtml::_('bootstrap.loadCss', false, $this->direction);
    
    // Adjusting content width
    if ($this->countModules('position-7') && $this->countModules('position-8'))
    {
        $span = 'span6';
    }
    elseif ($this->countModules('position-7') && !$this->countModules('position-8'))
    {
        $span = 'span9';
    }
    elseif (!$this->countModules('position-7') && $this->countModules('position-8'))
    {
        $span = 'span9';
    }
    else
    {
        $span = 'span12';
    }
    
    // Logo file or site title param
    if ($this->params->get('logoFile'))
    {
        $logo = '<img src="' . JUri::root() . $this->params->get('logoFile') . '" alt="' . $sitename . '" />';
    }
    elseif ($this->params->get('sitetitle'))
    {
        $logo = '<span class="site-title" title="' . $sitename . '">' . htmlspecialchars($this->params->get('sitetitle'), ENT_COMPAT, 'UTF-8') . '</span>';
    }
    else
    {
        $logo = '<span class="site-title" title="' . $sitename . '">' . $sitename . '</span>';
    }
    ?>
    <!DOCTYPE html>
    <html lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>">
    <head>
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <jdoc:include type="head" />
    </head>
    <body class="site <?php echo $option
        . ' view-' . $view
        . ($layout ? ' layout-' . $layout : ' no-layout')
        . ($task ? ' task-' . $task : ' no-task')
        . ($itemid ? ' itemid-' . $itemid : '')
        . ($params->get('fluidContainer') ? ' fluid' : '');
        echo ($this->direction === 'rtl' ? ' rtl' : '');
    ?>">
        <!-- Body -->
        <div class="body" id="top">
            <div class="container<?php echo ($params->get('fluidContainer') ? '-fluid' : ''); ?>">
                <!-- Header -->
                <header class="header" role="banner">
                    <div class="header-inner clearfix">
                        <a class="brand pull-left" href="<?php echo $this->baseurl; ?>/">
                        <div class="header-search pull-right">
                            <jdoc:include type="modules" name="position-0" style="none" />
                        </div>
                    </div>
                </header>
                <?php if ($this->countModules('position-1')) : ?>
                    <nav class="navigation" role="navigation">
                        <div class="navbar pull-left">
                            <a class="btn btn-navbar collapsed" data-toggle="collapse" data-target=".nav-collapse">
                                <span class="element-invisible"><?php echo JTEXT::_('TPL_PROTOSTAR_TOGGLE_MENU'); ?></span>
                                <span class="icon-bar"></span>
                                <span class="icon-bar"></span>
                                <span class="icon-bar"></span>
                            </a>
                        </div>
                        <div class="nav-collapse">
                            <jdoc:include type="modules" name="position-1" style="none" />
                        </div>
                    </nav>
                <?php endif; ?>
                <jdoc:include type="modules" name="banner" style="xhtml" />
                <div class="row-fluid">
                    <?php if ($this->countModules('position-8')) : ?>
                        <!-- Begin Sidebar -->
                        <div id="sidebar" class="span3">
                            <div class="sidebar-nav">
                                <jdoc:include type="modules" name="position-8" style="well" />
                            </div>
                        </div>
                        <!-- End Sidebar -->
                    <?php endif; ?>
                    <main id="content" role="main" class="<?php echo $span; ?>">
                        <!-- Begin Content -->
                        <jdoc:include type="modules" name="position-3" style="xhtml" />
                        <jdoc:include type="message" />
                        <jdoc:include type="component" />
                        <jdoc:include type="modules" name="position-2" style="none" />
                        <!-- End Content -->
                    </main>
                    <?php if ($this->countModules('position-7')) : ?>
                        <div id="aside" class="span3">
                            <!-- Begin Right Sidebar -->
                            <jdoc:include type="modules" name="position-7" style="well" />
                            <!-- End Right Sidebar -->
                        </div>
                    <?php endif; ?>
                </div>
            </div>
        </div>
        <!-- Footer -->
        <footer class="footer" role="contentinfo">
            <div class="container<?php echo ($params->get('fluidContainer') ? '-fluid' : ''); ?>">
                <hr />
                <jdoc:include type="modules" name="footer" style="none" />
            </div>
        </footer>
        <jdoc:include type="modules" name="debug" style="none" />
    </body>
    </html>
    Quello modificato:

    Codice:
    <?php
    /**
     * @package     Joomla.Site
     * @subpackage  Templates.protostar
     *
     * @copyright   Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
     * @license     GNU General Public License version 2 or later; see LICENSE.txt
     */
    
    defined('_JEXEC') or die;
    
    /** @var JDocumentHtml $this */
    
    $app  = JFactory::getApplication();
    $user = JFactory::getUser();
    
    // Output as HTML5
    $this->setHtml5(true);
    
    // Getting params from template
    $params = $app->getTemplate(true)->params;
    
    // Detecting Active Variables
    $option   = $app->input->getCmd('option', '');
    $view     = $app->input->getCmd('view', '');
    $layout   = $app->input->getCmd('layout', '');
    $task     = $app->input->getCmd('task', '');
    $itemid   = $app->input->getCmd('Itemid', '');
    $sitename = $app->get('sitename');
    
    if ($task === 'edit' || $layout === 'form')
    {
        $fullWidth = 1;
    }
    else
    {
        $fullWidth = 0;
    }
    
    // Add JavaScript Frameworks
    JHtml::_('bootstrap.framework');
    
    // Add template js
    JHtml::_('script', 'template.js', array('version' => 'auto', 'relative' => true));
    
    // Add html5 shiv
    JHtml::_('script', 'jui/html5.js', array('version' => 'auto', 'relative' => true, 'conditional' => 'lt IE 9'));
    
    // Add Stylesheets
    JHtml::_('stylesheet', 'template.css', array('version' => 'auto', 'relative' => true));
    JHtml::_('stylesheet', 'templatepers.css', array('version' => 'auto', 'relative' => true));
    
    // Use of Google Font
    if ($this->params->get('googleFont'))
    {
        JHtml::_('stylesheet', '//fonts.googleapis.com/css?family=' . $this->params->get('googleFontName'));
        $this->addStyleDeclaration("
        h1, h2, h3, h4, h5, h6, .site-title {
            font-family: '" . str_replace('+', ' ', $this->params->get('googleFontName')) . "', sans-serif;
        }");
    }
    
    // Template color
    if ($this->params->get('templateColor'))
    {
        $this->addStyleDeclaration('
        body.site {
            border-top: 3px solid ' . $this->params->get('templateColor') . ';
            background-color: ' . $this->params->get('templateBackgroundColor') . ';
        }
        a {
            color: ' . $this->params->get('templateColor') . ';
        }
        .nav-list > .active > a,
        .nav-list > .active > a:hover,
        .dropdown-menu li > a:hover,
        .dropdown-menu .active > a,
        .dropdown-menu .active > a:hover,
        .nav-pills > .active > a,
        .nav-pills > .active > a:hover,
        .btn-primary {
            background: ' . $this->params->get('templateColor') . ';
        }');
    }
    
    // Check for a custom CSS file
    JHtml::_('stylesheet', 'user.css', array('version' => 'auto', 'relative' => true));
    
    // Check for a custom js file
    JHtml::_('script', 'user.js', array('version' => 'auto', 'relative' => true));
    
    // Load optional RTL Bootstrap CSS
    JHtml::_('bootstrap.loadCss', false, $this->direction);
    
    // Adjusting content width
    if ($this->countModules('position-7') && $this->countModules('position-8'))
    {
        $span = 'span6';
    }
    elseif ($this->countModules('position-7') && !$this->countModules('position-8'))
    {
        $span = 'span9';
    }
    elseif (!$this->countModules('position-7') && $this->countModules('position-8'))
    {
        $span = 'span9';
    }
    else
    {
        $span = 'span12';
    }
    
    // Logo file or site title param
    if ($this->params->get('logoFile'))
    {
        $logo = '<img src="' . JUri::root() . $this->params->get('logoFile') . '" alt="' . $sitename . '" />';
    }
    elseif ($this->params->get('sitetitle'))
    {
        $logo = '<span class="site-title" title="' . $sitename . '">' . htmlspecialchars($this->params->get('sitetitle'), ENT_COMPAT, 'UTF-8') . '</span>';
    }
    else
    {
        $logo = '<span class="site-title" title="' . $sitename . '">' . $sitename . '</span>';
    }
    ?>
    <!DOCTYPE html>
    <html lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>">
    <head>
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <jdoc:include type="head" />
    </head>
    <body class="site <?php echo $option
        . ' view-' . $view
        . ($layout ? ' layout-' . $layout : ' no-layout')
        . ($task ? ' task-' . $task : ' no-task')
        . ($itemid ? ' itemid-' . $itemid : '')
        . ($params->get('fluidContainer') ? ' fluid' : '');
        echo ($this->direction === 'rtl' ? ' rtl' : '');
    ?>">
        <!-- Body -->
        <div class="body" id="top">
            <div class="container<?php echo ($params->get('fluidContainer') ? '-fluid' : ''); ?>">
                <!-- Header -->
                <header class="header" role="banner">
                    <div class="header-inner clearfix">
                        <a class="brand pull-left" href="<?php echo $this->baseurl; ?>/">
                        <div class="header-search pull-right">
                            <jdoc:include type="modules" name="position-0" style="none" />
                        </div>
                    </div>
                </header>
                <?php if ($this->countModules('position-1')) : ?>
                    <nav class="navigation" role="navigation">
                        <div class="navbar pull-left">
                            <a class="btn btn-navbar collapsed" data-toggle="collapse" data-target=".nav-collapse">
                                <span class="element-invisible"><?php echo JTEXT::_('TPL_PROTOSTAR_TOGGLE_MENU'); ?></span>
                                <span class="icon-bar"></span>
                                <span class="icon-bar"></span>
                                <span class="icon-bar"></span>
                            </a>
                        </div>
                        <div class="nav-collapse">
                            <jdoc:include type="modules" name="position-1" style="none" />
                        </div>
                    </nav>
                <?php endif; ?>
                <jdoc:include type="modules" name="banner" style="xhtml" />
                <div class="row-fluid">
                    <?php if ($this->countModules('position-8')) : ?>
                        <!-- Begin Sidebar -->
                        <div id="sidebar" class="span3">
                            <div class="sidebar-nav">
                                <jdoc:include type="modules" name="position-8" style="well" />
                            </div>
                        </div>
                        <!-- End Sidebar -->
                    <?php endif; ?>
                    <main id="content" role="main" class="<?php echo $span; ?>">
                        <!-- Begin Content -->
                        <jdoc:include type="modules" name="position-3" style="xhtml" />
                        <jdoc:include type="message" />
                        <jdoc:include type="component" />
                        <jdoc:include type="modules" name="position-2" style="none" />
                        <!-- End Content -->
                    </main>
                    <?php if ($this->countModules('position-7')) : ?>
                        <div id="aside" class="span3">
                            <!-- Begin Right Sidebar -->
                            <jdoc:include type="modules" name="position-7" style="well" />
                            <!-- End Right Sidebar -->
                        </div>
                    <?php endif; ?>
                </div>
            </div>
        </div>
        <!-- Footer -->
        <footer class="footer" role="contentinfo">
            <div class="container<?php echo ($params->get('fluidContainer') ? '-fluid' : ''); ?>">
                <hr />
                <jdoc:include type="modules" name="footer" style="none" />
            </div>
        </footer>
        <jdoc:include type="modules" name="debug" style="none" />
    </body>
    </html>
    Grazie.
    Ultima modifica di gasweb; 15-08-17 alle 20:19

  5. #5
    User L'avatar di Bacca001
    Data Registrazione
    Jan 2016
    Località
    Ferrara
    Messaggi
    167
    Se ho capito bene quello che vuoi fare della index non hai bisogno.
    Ma devi modificare quella porzione di codice che stai incollando:

    Primo passo vai a riaggiungere questo blocco che hai eliminato:
    Codice PHP:
    <?php if ($this->params->get('show_page_heading')) : ?>
        <div class="page-header">
            <h1> <?php echo $this->escape($this->params->get('page_heading')); ?> </h1>
        </div>
    Lasciandolo h1, così quando nel menù lo attivi si vede in h1.


    Secondo passo modificare l'altro blocco così:
    Codice PHP:
            <?php if ($params->get('show_title') && $this->params->get('show_page_heading')): ?>
                <h2 itemprop="headline">
                    <?php echo $this->escape($this->item->title); ?>
                </h2>
            <?php elseif ($params->get('show_title')): ?>
                <h1 itemprop="headline">
                    <?php echo $this->escape($this->item->title); ?>
                </h1>
            <?php endif; ?>
    Primo "if": controlla se entrambi sono attivi, in quel caso genera l'h2 perchè h1 dovrebe già essere il primo.
    "Elseif": se c'è solamente uno allora lo fa in h1.


    Non so se mi sono spiegato bene perchè non era semplice da scrivere ahah
    Fammi sapere
    - Software Web & Application Developer -

  6. #6
    User
    Data Registrazione
    Jul 2017
    Località
    Torino
    Messaggi
    28
    Grazie per la preziosa indicazione, qualcosa però non quadra, ho provato tutte le opzioni disponibili, ho un po di confusionee riproverò, per ora mi risulta così:
    Il titolo h1 delle categorie permane anche se disattivato su menu, su articolo, su categorie e su categorie principali, mi va bene quando visualizzo la categoria con la lista degli articoli dalla voce menu, ma non quando clicco sui singoli articoli no perchè l'h1 della categoria prevale su quella degli articoli in barba alle impostazioni.

    La home da menu top impostato su mostra titolo, pubblica in h2 invece che in h1 a meno che imposto attivo su visualizzazione pagina riportando il titolo articolo e lo fa in h1.


    Vorrei che i titoli di tutti gli articoli fossero in h1 incluso il titolo della categoria richiamata da menu ma appunto quando si va ad aprire uno degli articoli da quella pagina, automaticamente vorrei scomparisse l'h1 titolo categoria in favore dell'h1 dell'articolo.

    Ho fatto degli screenshot per ricordarmi.

  7. #7
    User L'avatar di Bacca001
    Data Registrazione
    Jan 2016
    Località
    Ferrara
    Messaggi
    167
    Se ho capito bene tu vuoi che:

    1) Al visualizzare la categoria con la tabellina degli articoli all'interno il titolo della pagina (nome categoria) sia in <h1>.
    2) Al click su uno degli articoli si entra nella pagina dove a questo punto ad essere <h1> è il titolo dell'articolo stesso non più della categoria, trasformando così quest'ultima in <h2>.
    3) All'apertura di qualsiasi articolo, sia esso pubblicato sul menu principale che link diretto, il suo titolo sia <h1>.


    Se è tutto corretto ciò che ho scritto ecco a te le modifiche da apportare alle stesse righe di codice di prima:

    Il primo blocco:
    Codice PHP:
    <?php if ($this->params->get('show_page_heading')) : ?>
        <div class="page-header">
            <?php $tag = ($this->escape($this->params->get('page_heading')) == $this->item->category_title 'h2' 'h1')  ?>
            <<?php echo $tag?><?php echo $this->escape($this->params->get('page_heading')); ?> </<?php echo $tag?>>
        </div>

    Il Secondo blocco:
    Codice PHP:
    <?php if ($params->get('show_title') && $this->params->get('show_page_heading')): ?>
                <?php $tag = ($this->escape($this->params->get('page_heading')) == $this->item->title 'h2' 'h1')  ?>
                <<?php echo $tag?> itemprop="headline">
                    <?php echo $this->escape($this->item->title); ?>
                </<?php echo $tag?>>
            <?php elseif ($params->get('show_title')): ?>
                <h1 itemprop="headline">
                    <?php echo $this->escape($this->item->title); ?>
                </h1>
            <?php endif; ?>
    Prova così, sono soluzioni arrangiate in quanto non conosco bene il ragionamento tuo, però prova
    - Software Web & Application Developer -

+ Rispondi alla Discussione

Tag per Questa Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.