• User Attivo

    Inserimento Banner Adsense nella pagina di Categoria

    salve, a tutti come da titolo la mia esigenza è quella di inserire un Banner Adsense nella pagina di Categoria,
    di seguito vi riporto il codice php che compone la pagina di categoria:

    [PHP]<?php /* Loop Template Layout 1 used for index/archive/search */
    $options = get_option('mh_options');
    $excerpt_length = empty($options['excerpt_length']) ? '175' : $options['excerpt_length'];
    ?>
    <article <?php post_class(); ?>>
    <div class="loop-wrap loop-layout1 clearfix">
    <header class="loop-data">
    <h3 class="loop-title"><a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a></h3>
    <?php mh_loop_meta(); ?>
    </header>
    <div class="loop-thumb">
    <a href="<?php the_permalink(); ?>">
    <?php if (has_post_thumbnail()) { the_post_thumbnail('loop'); } else { echo '<img src="' . get_template_directory_uri() . '/images/noimage_174x131.png' . '" alt="No Picture" />'; } ?>
    </a>
    </div>
    <?php mh_excerpt($excerpt_length); ?>
    </div>
    </article>[/PHP]

    ho provato ad inserire il codice di adsense in una qualsiasi parte del codice riportato sopra, ma il risultato che ottengo è la duplicazione infinita del banner adsense in tutta la pagina di categoria e dato che più di 3 banner per pagina non si possono avere, visualizza i 3 banner e poi il resto sono tutti spazi vuoti.

    La mia esigenza è solo quella di inserire un banner subito sotto il nome della categoria.

    Vi posto anche quest'altra parte di codice che fa sempre riferimento alle pagine di categoria:

    [PHP]<?php /* Loop Slider Template used for category archives */
    $options = get_option('mh_options');
    $category = single_cat_title("", false);
    $cat_id = get_cat_ID($category);
    $cat_meta = get_option("category_$cat_id");
    $cat_postcount = isset($cat_meta['slider_postcount']) ? $cat_meta['slider_postcount'] : '5';
    $cat_posts = new WP_Query('showposts=' . intval($cat_postcount) . '&cat=' . $cat_id);
    $layout = isset($options['loop_slider']) ? $options['loop_slider'] : 'layout1'; ?>
    <div class="sb-widget">
    <div id="slider-loop" class="flexslider loop-slider slider-<?php echo esc_attr($layout); ?>">
    <ul class="slides">
    <?php while($cat_posts->have_posts()) : $cat_posts->the_post(); $do_not_duplicate[] = $post->ID; ?>
    <li>
    <article class="slide-wrap">
    <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"> <?php
    if (has_post_thumbnail()) {
    if (isset($options['site_width']) && $options['site_width'] == 'large' && isset($options['sidebars']) && $options['sidebars'] != 'two' || isset($options['sidebars']) && $options['sidebars'] == 'no') {
    the_post_thumbnail('slider');
    } else {
    the_post_thumbnail('content');
    }
    } else {
    if (isset($options['site_width']) && $options['site_width'] == 'large' && isset($options['sidebars']) && $options['sidebars'] != 'two' || isset($options['sidebars']) && $options['sidebars'] == 'no') {
    echo '<img src="' . get_template_directory_uri() . '/images/noimage_940x400.png' . '" alt="No Picture" />';
    } else {
    echo '<img src="' . get_template_directory_uri() . '/images/noimage_620x264.png' . '" alt="No Picture" />';
    }
    } ?>
    </a>
    <div class="slide-caption">
    <div class="slide-data">
    <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><h2 class="slide-title"><?php the_title(); ?></h2></a>
    <?php mh_excerpt(); ?>
    </div>
    </div>
    </article>
    </li>
    <?php endwhile; ?>
    </ul>
    </div>
    </div>[/PHP]

    questo codice risiede in un'altro file php.

    Grazie in anticipo a tutti coloro che vogliono fornimi una soluzione


  • Moderatore

    Ti basterà inserire il codice, al di fuori del ciclo while, altrimenti te lo duplica per quanti risultati ci sono in una pagina.


  • User Attivo

    @Ultima said:

    Ti basterà inserire il codice, al di fuori del ciclo while, altrimenti te lo duplica per quanti risultati ci sono in una pagina.

    ciao, dove esattamente nel primo o nel secondo file ???

    ho provato in tutte le parti del codice me lo duplica sempre, potresti gentilmente indicarmi dove andrebbe inserito, grazie mille


  • Moderatore

    Io ti ho scritto, prima del ciclo while!!!
    Il secondo file da te indicato lo devi completamente tralasciare...quello è quello che fa muovere la slideshow di flex-slider
    Il primo file è quello che estrae un singolo articolo al'interno di un ciclo while, presente su un'altro documento.
    Te devi avere un file chiamato: archive.php. Aprilo
    All'interno di quel file, prima del ciclo while, inserisci il tuo banner adsense


  • User Attivo

    @Ultima said:

    Io ti ho scritto, prima del ciclo while!!!
    Il secondo file da te indicato lo devi completamente tralasciare...quello è quello che fa muovere la slideshow di flex-slider
    Il primo file è quello che estrae un singolo articolo al'interno di un ciclo while, presente su un'altro documento.
    Te devi avere un file chiamato: archive.php. Aprilo
    All'interno di quel file, prima del ciclo while, inserisci il tuo banner adsense

    in tutti i file che compongono il tema non c'è nessun file archive.php, che in genere si usa per gestire le categorie, ma in questo caso non c'è e viene gestito da un'altro file che non riesco a capire quale sia, ti posso fare
    un elenco dei file che compongono il tema ? cosi magari riesci ad dirmi da quale file è gestito.....grazie


  • Moderatore

    fai pure un elenco


  • User Attivo

    @Ultima said:

    fai pure un elenco

    questi sono i file nella root principale del tema

    Author
    Comments
    Contact
    Content
    content-attachment
    content-none
    Footer
    Fuctions
    Header
    HomePage
    Index
    Page
    Page-Full
    Searchform
    sidebar
    sitemap

    poi c'è una cartella chiamata templates dove ci sono altri file che forse potrebbero gestire le categorie

    loop-layout1
    loop-layout2
    loop-layout3
    loop-layout4
    loop-slider


  • Moderatore

    Visto che non hai il file archive.php ( non capisco il motivo ), tutto viene gestito dal file index.php, quindi: tag, archivi, categorie etc
    Sicuramente all'interno di index, avrai dei richiami alla cartella templates.
    Individuato il loop di layout corretto non ti rimane che scrivere una piccola condizione:

    
    if( is_category() && !is_home() && !is_single() && !is_archive() ) : 
    // inserisci banner o fai quello che vuoi
    endif;
    
    

  • User Attivo

    @Ultima said:

    Visto che non hai il file archive.php ( non capisco il motivo ), tutto viene gestito dal file index.php, quindi: tag, archivi, categorie etc
    Sicuramente all'interno di index, avrai dei richiami alla cartella templates.
    Individuato il loop di layout corretto non ti rimane che scrivere una piccola condizione:

    >
    if( is_category() && !is_home() && !is_single() && !is_archive() ) : 
    // inserisci banner o fai quello che vuoi
    endif;
    
    >```
    
    ho provato quasi in tutti i file del tema ma nulla non funziona....ci rinuncio....
    
    ti ringrazio tanto per la tua disponibilità ed il tempo dedicato al mio Topic ;-)

  • Moderatore

    È impossibil3 non trovare una soluzione. Che template stai utilizzando? Se posso scaricarlo ti mostro esattamente come fare


  • User Attivo

    @Ultima said:

    È impossibil3 non trovare una soluzione. Che template stai utilizzando? Se posso scaricarlo ti mostro esattamente come fare

    il tema è questo:

    mhthemes.com/lite/?theme=magazine_lite

    questa è la versione lite liberamente scaricabile io ho la versione premium che ha più opzioni ma tutto il resto è uguale...

    ti ringrazio per la disponibilità....


  • Moderatore

    Dunque, sperando il template cambi di poco, alla riga 195 del file functions.php trovi questo codice:

    [PHP]
    if (!function_exists('mh_page_title')) {
    function mh_page_title() {
    if (!is_front_page()) {
    echo '<div class="page-title-top"></div>' . "\n";
    echo '<h1 class="page-title">';
    if (is_archive()) {
    if (is_category() || is_tax()) {
    single_cat_title();
    } elseif (is_tag()) {
    single_tag_title();
    } elseif (is_author()) {
    global $author;
    $user_info = get_userdata($author);
    printf(_x('Articles by %s', 'post author', 'mh'), esc_attr($user_info->display_name));
    } elseif (is_day()) {
    echo get_the_date();
    } elseif (is_month()) {
    echo get_the_date('F Y');
    } elseif (is_year()) {
    echo get_the_date('Y');
    } else {
    _e('Archives', 'mh');
    }
    } else {
    if (is_home()) {
    echo get_the_title(get_option('page_for_posts', true));
    } elseif (is_404()) {
    _e('Page not found (404)', 'mh');
    } elseif (is_search()) {
    printf(('Search Results for %s', 'mh'), esc_attr(get_search_query()));
    } else {
    the_title();
    }
    }
    echo '</h1>' . "\n";
    }
    }
    }
    add_action('mh_before_page_content', 'mh_page_title');
    [/PHP]
    Io l'ho editato in questo modo:
    [PHP]
    if (!function_exists('mh_page_title')) {
    function mh_page_title() {
    if (!is_front_page()) {
    echo '<div class="page-title-top"></div>' . "\n";
    echo '<h1 class="page-title">';
    if (is_archive()) {
    if (is_category() || is_tax()) {
    single_cat_title();
    echo 'div class="banner">';
    echo 'inserisci qui il tuo codice banner';
    echo '</div>';
    } elseif (is_tag()) {
    single_tag_title();
    } elseif (is_author()) {
    global $author;
    $user_info = get_userdata($author);
    printf(_x('Articles by %s', 'post author', 'mh'), esc_attr($user_info->display_name));
    } elseif (is_day()) {
    echo get_the_date();
    } elseif (is_month()) {
    echo get_the_date('F Y');
    } elseif (is_year()) {
    echo get_the_date('Y');
    } else {
    _e('Archives', 'mh');
    }
    } else {
    if (is_home()) {
    echo get_the_title(get_option('page_for_posts', true));
    } elseif (is_404()) {
    _e('Page not found (404)', 'mh');
    } elseif (is_search()) {
    printf(
    ('Search Results for %s', 'mh'), esc_attr(get_search_query()));
    } else {
    the_title();
    }
    }
    echo '</h1>' . "\n";
    }
    }
    }
    add_action('mh_before_page_content', 'mh_page_title');
    [/PHP]

    Prova così e vedi se ora funziona 🙂
    Ovviame dove io ho scritto inserisci qui il tuo codice, dovrai inserire il codice di adsense, stando attendo alla punteggiatura, visto che lo stai facendo scrivere a PHP


  • User Attivo

    inserisco il codice adsense solo ? gli apici li lascio o vanno rimossi ???


  • Moderatore

    hai un po' di dimestichezza con PHP?
    dovresti inserire il codice all'interno del mio echo '', ovvero all'interno di quegli apici.
    Puoi anche adottare una soluzione meno problematica che è questa:

    [PHP]
    if (!function_exists('mh_page_title')) {
    function mh_page_title() {
    if (!is_front_page()) {
    echo '<div class="page-title-top"></div>' . "\n";
    echo '<h1 class="page-title">';
    if (is_archive()) {
    if (is_category() || is_tax()) {
    single_cat_title();
    echo 'div class="banner">'; ?>
    CODICE BANNER QUI
    <?php

                    echo '</div>';
                } elseif (is_tag()) {
                    single_tag_title();
                } elseif (is_author()) {
                    global $author;
                    $user_info = get_userdata($author);
                    printf(_x('Articles by %s', 'post author', 'mh'), esc_attr($user_info->display_name));
                } elseif (is_day()) {
                    echo get_the_date();
                } elseif (is_month()) {
                    echo get_the_date('F Y');
                } elseif (is_year()) {
                    echo get_the_date('Y');
                } else {
                    _e('Archives', 'mh');
                }
            } else {
                if (is_home()) {
                    echo get_the_title(get_option('page_for_posts', true));
                } elseif (is_404()) {
                    _e('Page not found (404)', 'mh');
                } elseif (is_search()) {
                    printf(__('Search Results for %s', 'mh'), esc_attr(get_search_query()));
                } else {
                    the_title();
                }
            }
            echo '</h1>' . "\n";
        }
    }
    

    }
    add_action('mh_before_page_content', 'mh_page_title');
    [/PHP]


  • Moderatore

    News? Ha funzionato?


  • User Attivo

    ciao in pratica nel file functions della versione premium non c'è ma è in un'altro file mh-content.php ed il codice è un po diverso ecco la struttura:

    /***** Loop Output *****/

    if (!function_exists('mh_loop')) {
    function mh_loop() {
    global $post, $paged, $options;
    $do_not_duplicate[] = '';
    $counter = 0;
    $layout = isset($options['loop_layout']) ? $options['loop_layout'] : 'layout1';
    $adcode = empty($options['loop_ad']) ? '' : '<div class="loop-ad loop-ad-' . $layout . '">' . do_shortcode($options['loop_ad']) . '</div>' . "\n";
    $adcount = empty($options['loop_ad_no']) ? '3' : $options['loop_ad_no'];
    if (is_category() && $paged < 2 && isset($options['loop_slider']) && $options['loop_slider'] != 'no_slider') {
    $category = single_cat_title("", false);
    $cat_id = get_cat_ID($category);
    $cat_meta = get_option("category_$cat_id");
    $cat_postcount = isset($cat_meta['slider_postcount']) ? $cat_meta['slider_postcount'] : '5';
    $cat_posts = new WP_Query('showposts=' . intval($cat_postcount) . '&cat=' . $cat_id);
    if ($cat_posts->have_posts()) {
    get_template_part('/templates/loop-slider', get_post_format());
    while($cat_posts->have_posts()) : $cat_posts->the_post(); $do_not_duplicate[] = $post->ID; endwhile;
    }
    }
    if (have_posts()) {
    echo '<div class="loop-content clearfix">' . "\n";
    while (have_posts()) : the_post(); if (in_array($post->ID, $do_not_duplicate)) continue;
    get_template_part('/templates/loop-' . $layout, get_post_format());
    if ($counter % $adcount == 0) {
    echo $adcode;
    }
    $counter++;
    endwhile;
    echo '</div>' . "\n";
    mh_pagination();
    } else {
    get_template_part('content', 'none');
    }
    }
    }
    add_action('mh_loop_content', 'mh_loop');

    /***** Loop Output Meta Data *****/

    if (!function_exists('mh_loop_meta')) {
    function mh_loop_meta() {
    global $options;
    $post_date = isset($options['post_meta_date']) ? !$options['post_meta_date'] : true;
    $post_comments = isset($options['post_meta_comments']) ? !$options['post_meta_comments'] : true;
    if ($post_date || $post_comments) {
    echo '<p class="meta">';
    if ($post_date) {
    echo get_the_date();
    }
    if ($post_date && $post_comments) {
    echo ' // ';
    }
    if ($post_comments) {
    comments_number(__('0 Comments', 'mh'), __('1 Comment', 'mh'), __('% Comments', 'mh'));
    }
    echo '</p>' . "\n";
    }
    }
    }

    ?>

    credo che sia qui che andrebbe inserito il tutto....


  • Moderatore

    Prova ad inserire il codice appena sotto
    [PHP]
    if( is_category() ...
    [/PHP]


  • User Attivo

    intendi solo in codice adsene o il tuo codice editato ?

    lo inserisco subito dopo questa riga ?

    [PHP]if (is_category() && $paged < 2 && isset($options['loop_slider']) && $options['loop_slider'] != 'no_slider') {[/PHP]


  • User Attivo

    ho inserito il seguente codice dopo quella riga

    [PHP]
    echo 'div class="banner">';
    echo '<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
    <ins class="adsbygoogle"
    style="display:inline-block;width:336px;height:280px"
    data-ad-client=""
    data-ad-slot="6911572934"></ins>
    <script>
    (adsbygoogle = window.adsbygoogle || []).push({});
    </script>';
    echo '</div>';
    [/PHP]

    ma nulla non visualizza nessun banner....

    ho provato anche a spostare tutto il codice dopo la riga

    [PHP]$category = single_cat_title("", false);[/PHP]

    che dovrebbe essere il titolo della categoria, ma comunque non visualizza nulla....


  • User Attivo

    quella parte di codice che tu inizialmente hai modificato l'ho trovata in un'altro file eccola:

    [PHP]
    /***** Page Title Output *****/

    if (!function_exists('mh_page_title_output')) {
    function mh_page_title_output() {
    global $options;
    $layout = isset($options['page_title_layout']) ? $options['page_title_layout'] : 'layout1';
    if (!is_front_page()) {
    if ($options['page_title_layout'] == 'layout1') {
    echo '<div class="page-title-top"></div>' . "\n";
    }
    echo '<h1 class="page-title page-title-' . $options['page_title_layout'] . '">';
    mh_page_title();
    echo '</h1>';
    }
    }
    }
    add_action('mh_before_page_content', 'mh_page_title_output');

    if (!function_exists('mh_page_title')) {
    function mh_page_title() {
    if (is_home()) {
    echo get_the_title(get_option('page_for_posts', true));
    } elseif (is_author()) {
    global $author;
    $user_info = get_userdata($author);
    echo __('Articles by ', 'mh') . esc_attr($user_info->display_name);
    } elseif (is_category() || is_tax()) {
    echo single_cat_title("", false);
    } elseif (is_tag()) {
    echo single_tag_title("", false);
    } elseif (is_search()) {
    echo __('Search Results for ', 'mh') . get_search_query();
    } elseif (is_day()) {
    echo get_the_date();
    } elseif (is_month()) {
    echo get_the_date('F Y');
    } elseif (is_year()) {
    echo get_the_date('Y');
    } elseif (is_404()) {
    echo __('Page not found (404)', 'mh');
    } else {
    echo get_the_title();
    }
    }
    }
    [/PHP]

    ho provato ad inserire il seguente codice dove tu mi hai indicato:

    [PHP]
    echo 'div class="banner">';
    echo '<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
    <ins class="adsbygoogle"
    style="display:inline-block;width:336px;height:280px"
    data-ad-client=""
    data-ad-slot="6911572934"></ins>
    <script>
    (adsbygoogle = window.adsbygoogle || []).push({});
    </script>';
    echo '</div>';
    [/PHP]

    il banner adsense viene visualizzato pero di fianco al titolo della categoria compare anche una porzione di codice questa

    [PHP]
    'div class="banner">'
    [/PHP]

    e la sidebar del tema scompare e viene riportata alla fine del Tema....

    diciamo che abbiamo individuato il punto dove inserire il codice, però c'è qualcosa da aggiustare 🙂