- Home
- Categorie
- Coding e Sistemistica
- WordPress
- Inserimento Banner Adsense nella pagina di Categoria
-
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
-
Ti basterà inserire il codice, al di fuori del ciclo while, altrimenti te lo duplica per quanti risultati ci sono in una pagina.
-
@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
-
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
-
@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 adsensein 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
-
fai pure un elenco
-
@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
sitemappoi 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
-
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;
-
@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 ;-)
-
È impossibil3 non trovare una soluzione. Che template stai utilizzando? Se posso scaricarlo ti mostro esattamente come fare
-
@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à....
-
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
-
inserisco il codice adsense solo ? gli apici li lascio o vanno rimossi ???
-
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
<?phpecho '</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]
-
News? Ha funzionato?
-
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....
-
Prova ad inserire il codice appena sotto
[PHP]
if( is_category() ...
[/PHP]
-
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]
-
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....
-
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