Visualizzazione risultati 1 fino 6 di 6

Discussione: Inserire Banner subito dopo Tag <!--more-->

  1. #1
    Guest

    Predefinito Inserire Banner subito dopo Tag <!--more-->

    Ciao a tutti,
    avrei la necessità di far comparire un banner pubblicitario ogni qualvolta si apre un articolo sul blog. Il banner deve comparire tra la parte di anteprima dell'articolo e la parte separata dal tag more.

    Qualcuno saprebbe consigliarmi un modo per farlo dinamicamente?

    Grazie in anticipo.

    Saluti

  2. #2
    Guest

    Predefinito

    Dentro al file post.php, nella cartella wp-includes, c'è una funzione del genere
    Codice PHP:
    function get_extended($post) {
    //Match the new style more links
    if ( preg_match('/<!--more(.*?)?-->/', $post, $matches) ) {
    list(
    $main, $extended) = explode($matches[0], $post, 2);
    } else {
    $main = $post;
    $extended = '';
    }

    // Strip leading and trailing whitespace
    $main = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $main);
    $extended = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $extended);

    return array(
    'main' => $main, 'extended' => $extended);
    }
    $main contiene l'articolo principale, $extended quello dopo il tag <!-- more -->. Se vuoi mettere un banner tra le due parti potresti fare così
    Codice PHP:
    function get_extended($post) {
    //Match the new style more links
    if ( preg_match('/<!--more(.*?)?-->/', $post, $matches) ) {
    list(
    $main, $extended) = explode($matches[0], $post, 2);
    } else {
    $main = $post;
    $extended = '';
    }

    // Strip leading and trailing whitespace
    $main = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $main);
    $extended = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $extended);

    $banner = "<!-- qui il codice del banner -->";

    return array(
    'main' => $main, 'extended' => $banner.$extended);
    }
    Prova, non ti assicuro niente, non l'ho provato. In ogni caso fatti il backup della pagina in modo tale che se non funziona la sovrascrivi direttamente con quella vecchia.
    Ovviamente, nella variabile $banner devi metterci il codice html del banner. Ciao.

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da stoner Visualizza messaggio
    Dentro al file post.php, nella cartella wp-includes, c'è una funzione del genere
    $main contiene l'articolo principale, $extended quello dopo il tag <!-- more -->. Se vuoi mettere un banner tra le due parti potresti fare così
    Codice PHP:
    function get_extended($post) {
    //Match the new style more links
    if ( preg_match('/<!--more(.*?)?-->/', $post, $matches) ) {
    list(
    $main, $extended) = explode($matches[0], $post, 2);
    } else {
    $main = $post;
    $extended = '';
    }

    // Strip leading and trailing whitespace
    $main = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $main);
    $extended = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $extended);

    $banner = "<!-- qui il codice del banner -->";

    return array(
    'main' => $main, 'extended' => $banner.$extended);
    }
    Prova, non ti assicuro niente, non l'ho provato. In ogni caso fatti il backup della pagina in modo tale che se non funziona la sovrascrivi direttamente con quella vecchia.
    Ovviamente, nella variabile $banner devi metterci il codice html del banner. Ciao.
    Ciao,
    intanto grazie per il suggerimento, ho provato a seguire il tuo consiglio modificando la funzione come segue:

    Codice PHP:
    function get_extended($post) {
    //Match the new style more links
    if ( preg_match('/<!--more(.*?)?-->/', $post, $matches) ) {
    list(
    $main, $extended) = explode($matches[0], $post, 2);
    } else {
    $main = $post;
    $extended = '';
    }

    // Strip leading and trailing whitespace
    $main = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $main);
    $extended = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $extended);

    $banner = "<p>prova</p>";
    $extended = $banner.$extended;
    return array(
    'main' => $main, 'extended' => $extended);
    }
    putroppo quando apro un qualsiasi articolo non vedo mai la parola "prova", quindi sembra non andare....!

    Comunque grazie, spero di avere altri spunti utili.
    Ultima modifica di archistyle : 29-08-2009 alle ore 15.53.08

  4. #4
    Guest

    Predefinito

    Ok, ho trovato la funzione, sta su post-template.php
    Codice PHP:
    function get_the_content($more_link_text = null, $stripteaser = 0, $more_file = '') {
    global
    $id, $post, $more, $page, $pages, $multipage, $preview, $pagenow;

    if (
    null === $more_link_text )
    $more_link_text = __( '(more...)' );

    $output = '';
    $hasTeaser = false;

    // If post password required and it doesn't match the cookie.
    if ( post_password_required($post) ) {
    $output = get_the_password_form();
    return
    $output;
    }

    if (
    $more_file != '' )
    $file = $more_file;
    else
    $file = $pagenow; //$_SERVER['PHP_SELF'];

    if ( $page > count($pages) ) // if the requested page doesn't exist
    $page = count($pages); // give them the highest numbered page that DOES exist

    $content = $pages[$page-1];
    if (
    preg_match('/<!--more(.*?)?-->/', $content, $matches) ) {
    $content = explode($matches[0], $content, 2);
    if ( !empty(
    $matches[1]) && !empty($more_link_text) )
    $more_link_text = strip_tags(wp_kses_no_null(trim($matches[1])));

    $hasTeaser = true;
    } else {
    $content = array($content);
    }
    if ( (
    false !== strpos($post->post_content, '<!--noteaser-->') && ((!$multipage) || ($page==1))) )
    $stripteaser = 1;
    $teaser = $content[0];
    if ( (
    $more) && ($stripteaser) && ($hasTeaser) )
    $teaser = '';
    $output .= $teaser;
    if (
    count($content) > 1 ) {
    if (
    $more ) {
    $output .= '<span id="more-' . $id . '"></span>' . $content[1];
    } else {
    if ( ! empty(
    $more_link_text) )
    $output .= apply_filters( 'the_content_more_link', ' <a href="' . get_permalink() . "#more-$id\" class=\"more-link\">$more_link_text</a>", $more_link_text );
    $output = force_balance_tags($output);
    }

    }
    if (
    $preview ) // preview fix for javascript bug with foreign languages
    $output = preg_replace_callback('/\%u([0-9A-F]{4})/', create_function('$match', 'return "&#" . base_convert($match[1], 16, 10) . ";";'), $output);

    return
    $output;
    }
    Qui, su questa funzione, cerca la riga
    Codice PHP:
    if ( $more ) {
    $output .= '<span id="more-' . $id . '"></span>' . $content[1];
    }
    e mettici, prima di <span id ecc ec, il banner!
    Codice PHP:
    if ( $more ) {
    $output .= "<!-- codice banner -->".'<span id="more-' . $id . '"></span>' . $content[1];
    }

  5. #5
    Guest

    Predefinito

    grazie, provo a ti faccio sapere ;).

  6. #6
    Guest

    Predefinito

    niente, ci sono riuscito da solo ;)

    Grazie ancora molte, mi sei stato di grande aiuto.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •