Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Mostrar distintos extractos

Estas en el tema de Mostrar distintos extractos en el foro de WordPress en Foros del Web. Por empezar pido disculpas si la consulta debe ir en la sección de PHP; Lo que necesito saber es como se puede hacer para mostrar ...
  #1 (permalink)  
Antiguo 04/07/2009, 14:39
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 1
Pregunta Mostrar distintos extractos

Por empezar pido disculpas si la consulta debe ir en la sección de PHP; Lo que necesito saber es como se puede hacer para mostrar distintos extractos dependiendo del largo del título del post, es decir que si el título del post es de 50 letras me muestre un extracto de 300 palabras y si es un título de más de 50 letras me mueste un extracto de 200 letras.

Desde ya muchas gracias
  #2 (permalink)  
Antiguo 04/07/2009, 15:38
Avatar de lucasan
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: Cali - Colombia
Mensajes: 1.144
Antigüedad: 16 años, 10 meses
Puntos: 59
Respuesta: Mostrar distintos extractos

Vaya, extraña petición , pero creo que si es posible, aunque no lo he intentado.

Sabes algo de PHP? SI la respuesta es si, te va a quedar facil:

1. Descargas e instalas este plugin

2. La función de PHP strlen te devuelve el número de caracteres de una cadena.

3. Ahora para mostrar tu extractos deberás usar, en vez de the_excerpt(), the_excerpt_reloaded() (plugin que acabas de descargar)

Entonces:

Código PHP:
<?php

  $title 
get_the_title() //Guardas el título en una variable
  
  
$largo strlen($titulo); //Guardas el numero de caracteres de tu titulo

  
$palabras = ($largo <= 50)?(300):(200); //Si el titulo tiene menos de 50 caracteres (o igual) $palabras sera igual a 300, sino igual a 200

?>
Ok, hasta ahi tienes en $palabras cuantas vas a mostrar en tu extracto, 300 o 200 según el largo de tu título.

Ahora esa variable la pasas como parámetro en the_excerpt_reloaded()

Código PHP:
<?php the_excerpt_reloaded($palabras?>
Hay mas parámetros que le puedes pasar a esa función, revísala y busca en google documentación al respecto, pero hasta ahi te debería funcionar como necesitas.

Saludos.
__________________
Plan Original Desarrollo Web
~$>sudo apt-get install -f
"Asi debería arreglarse todo en la vida"

Última edición por lucasan; 05/07/2009 a las 20:04
  #3 (permalink)  
Antiguo 05/07/2009, 08:16
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Mostrar distintos extractos

MUchas gracias por responder con tanta rapidez, descarge y active el plugin como me dijiste pero cuando ingreso el codigo php la pagina me da un error

Parse error: parse error in C:\wamp\www\wp\wp-content\themes\hybrid-news\functions.php on line 210

esa linea es el codigo:

$largo = srtlen($titulo); //Guardas el numero de caracteres de tu titulo

si pudieras decirme que e lo que estoy haciendo mal te lo agradecería enormente.
Desde ya muchas gracias.
  #4 (permalink)  
Antiguo 05/07/2009, 09:35
Avatar de lucasan
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: Cali - Colombia
Mensajes: 1.144
Antigüedad: 16 años, 10 meses
Puntos: 59
Respuesta: Mostrar distintos extractos

Pega el código completo, porque esa líena no tiene ningún error.
__________________
Plan Original Desarrollo Web
~$>sudo apt-get install -f
"Asi debería arreglarse todo en la vida"
  #5 (permalink)  
Antiguo 05/07/2009, 12:34
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Mostrar distintos extractos

El codigo que coloque es

<?php

$title = get_the_title() //Guardas el título en una variable

$largo = srtlen($titulo); //Guardas el numero de caracteres de tu titulo

$palabras = ($largo <= 50)?(300):(200); //Si el titulo tiene menos de 50 caracteres (o igual) $palabras sera igual a 300, sino igual a 200

?>

si podes decirme cual es el error que cometo te lo agradecería.
  #6 (permalink)  
Antiguo 05/07/2009, 12:46
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Mostrar distintos extractos

Aca te coloco el codigo completo del archivo:

Código PHP:
<?php

/**
* This is your child theme's functions.php file.
* You should make edits and add additional code above this point.
* Only change the functions below if you know what you're doing.
*/

/********************************************************/

/*
* Constant paths
*/
    
defineHYBRID_NEWSget_stylesheet_directory() );
    
defineHYBRID_NEWS_URLget_stylesheet_directory_uri() );

/*
* For localization
*/
    
load_theme_textdomain'news'HYBRID_NEWS );

/*
* Hybrid News theme settings
*/
    
$news_settings get_option'hybrid_news_theme_settings' );

/*
* Include admin files
*/
    
if ( is_admin() )
        require_once( 
HYBRID_NEWS '/library/admin/theme-settings.php' );

/*
* Actions
*/
    
add_action'hybrid_head''news_front_page_template' );
    
add_action'wp_head''news_remove_actions' );
    
add_action'hybrid_before_header''hybrid_page_nav' );
    
/*
*add_action( 'hybrid_after_page_nav', 'hybrid_search_form' );*/
    
add_action'hybrid_header''news_get_header_widget'11 );
    
add_action'hybrid_after_header''hybrid_cat_nav' );
    
add_action'hybrid_after_container''news_widget_container'11 );
    
/* add_action( 'hybrid_after_single','news_author_box' );*/
    
add_action'widgets_init''news_register_widget_areas' );

/*
* Filters
*/
    
add_filter'wp_page_menu_args''news_page_menu_args' );
    
add_filter'hybrid_category_menu_args''news_category_menu_args' );
    
add_filter'hybrid_post_meta_boxes''news_post_meta_boxes' );

/**
 * Removes default Hybrid theme actions
 *
 * @since 0.1
 */
function news_remove_actions() {
    
remove_action'hybrid_after_header''hybrid_page_nav' );
    
remove_action'hybrid_after_container''hybrid_get_primary' );
    
remove_action'hybrid_after_container''hybrid_get_secondary' );
}

/**
 * Page menu
 * Add/remove arguments for your page menu
 *
 * @since 0.1.1
 */
function news_page_menu_args$args ) {
    
$args['depth'] = 4;
    return 
$args;
}

/**
 * Category menu
 * Add/remove arguments for your category menu
 *
 * @since 0.1
 */
function news_category_menu_args$args ) {
    
$args = array(
        
'depth' => 4,
    );
    return 
$args;
}

/**
 * Register additional widget areas
 *
 * @since 0.1.1
 */
function news_register_widget_areas() {
    
register_sidebar( array( 'name' => __('Tertiary''news'), 'id' => 'tertiary''before_widget' => '<div id="%1$s" class="widget %2$s widget-%2$s"><div class="widget-inside">''after_widget' => '</div></div>''before_title' => '<h3 class="widget-title">''after_title' => '</h3>' ) );
    
register_sidebar( array( 'name' => __('Utility: Header''news'), 'id' => 'utilityheader''before_widget' => '<div id="%1$s" class="widget %2$s widget-%2$s"><div class="widget-inside">''after_widget' => '</div></div>''before_title' => '<h3 class="widget-title">''after_title' => '</h3>' ) );
}

/**
 * Adds JavaScript and CSS to Front Page page template
 * Also removes the breadcrumb menu
 *
 * @since 0.1
 */
function news_front_page_template() {
    if ( 
is_page_template'front-page.php' ) ) :
        
wp_enqueue_script'slider'HYBRID_NEWS_URL '/library/js/jquery.cycle.js', array( 'jquery' ), 0.1 );
        
wp_enqueue_script'slider-functions'HYBRID_NEWS_URL '/library/js/jquery.functions.js', array( 'jquery' ), 0.1 );
        
wp_enqueue_style'front-page'HYBRID_NEWS_URL '/front-page.css'false'0.1''screen' );
        
remove_action'hybrid_before_content''hybrid_breadcrumb' );
    endif;
}

/**
 * Adds a feed/subscribe link to the category menu
 *
 * @since 0.1
 */
function news_subscribe_link() {
    echo 
'<div id="feed"><ul>';
    echo 
'<li class="feed-url"><a href="' get_bloginfo'rss2_url' ) . '" title="' __('Subscribe to the feed','news') . '">' __('Subscribe','news') . '</a></li>';
    echo 
'</ul></div>';
}

/**
 * Displays the Utility: Header widget section
 *
 * @since 0.1
 */
function news_get_header_widget() {
    if ( 
is_sidebar_active__('Utility: Header''news') ) ) :
        echo 
'<div id="utility-header" class="utility">';
        
dynamic_sidebar__('Utility: Header''news') );
        echo 
'</div>';
    endif;
}

/**
 * Wraps the Primary, Secondary, and Tertiary widget sections
 * Calls each section
 *
 * @since 0.1
 */
function news_widget_container() {
    if ( !
is_page_template'no-widgets.php' ) ) :
        echo 
'<div id="widget-container">';
            
hybrid_get_primary();
            
hybrid_get_secondary();
            
news_get_tertiary();
        echo 
'</div>';
    endif;
}

/**
 * Displays the Tertiary widget section
 *
 * @since 0.1
 */
function news_get_tertiary() {
    if ( 
is_sidebar_active__('Tertiary''news') ) ) :
        echo 
'<div id="tertiary">';
        
dynamic_sidebar__('Tertiary''news') );
        echo 
'</div>';
    endif;
}

/**
 * Shows an author description after the post
 * Only shows on single post
 *
 * @since 0.1
 */
function news_author_box() {
    global 
$hybrid_settings;
?>
    <div class="author-profile vcard">
        <?php echo get_avatarget_the_author_email(), '96'$hybrid_settings['default_avatar'] ); ?>
        <h4 class="author-name fn n"><?php the_author_posts_link(); ?></h4>
        <p class="author-description author-bio">
            <?php the_author_description(); ?>
        </p>
    </div>
<?php
}

/**
 * Add additional post meta boxes
 * - Feature image input box
 *
 * @since 0.1
 */
function news_post_meta_boxes$meta_boxes ) {
    
$meta_boxes['medium'] = array(
        
'name' => 'Medium',
        
'default' => '',
        
'title' => __('Medium/Feature:''news'),
        
'type' => 'text',
        
'show_description' => false,
        
'description' => false,
    );
    return 
$meta_boxes;
}

?>

<?php

  $title 
get_the_title() //Guardas el título en una variable
  
  
$largo srtlen($titulo); //Guardas el numero de caracteres de tu titulo

  
$palabras = ($largo <= 50)?(300):(200); //Si el titulo tiene menos de 50 caracteres (o igual) $palabras sera igual a 300, sino igual a 200

?>
  #7 (permalink)  
Antiguo 05/07/2009, 13:12
Avatar de lucasan
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: Cali - Colombia
Mensajes: 1.144
Antigüedad: 16 años, 10 meses
Puntos: 59
Respuesta: Mostrar distintos extractos

Ok, el problema fue que copiaste y pegaste.

Código PHP:
 $title get_the_title(); //faltaba el punto y coma 
Y este código no va en functions.php

Podría ir ahi si se hicera una función, pero no lo es. Debes pegarlo en tu tema, dentro del loop, donde quieres mostrar tu extracto.

Saludos.
__________________
Plan Original Desarrollo Web
~$>sudo apt-get install -f
"Asi debería arreglarse todo en la vida"
  #8 (permalink)  
Antiguo 05/07/2009, 13:14
Avatar de lucasan
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: Cali - Colombia
Mensajes: 1.144
Antigüedad: 16 años, 10 meses
Puntos: 59
Respuesta: Mostrar distintos extractos

Aquí tienes una guía completa de lo que es el loop de Wordpress, revísala, modifica tu tema y si tenes problemas nos cuentas.

http://ayudawordpress.com/guia-completa-loop-wordpress/

Saludos.
__________________
Plan Original Desarrollo Web
~$>sudo apt-get install -f
"Asi debería arreglarse todo en la vida"
  #9 (permalink)  
Antiguo 05/07/2009, 14:51
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Mostrar distintos extractos

Ahi coloque todo en el archivo que utilizo en vez del index y me da el error

Fatal error: Call to undefined function srtlen() in C:\wamp\www\wp\wp-content\themes\hybrid-news\front-page.php on line 40

Código PHP:
<?php
/*
Template Name: Front Page
*/

get_header(); ?>

    <div class="hfeed content">

        <?php hybrid_before_content(); // Before content hook ?>

        <div id="slider-container">

            <div id="slider">


            <?php
                
if ( $news_settings['feature_category'] )
                    
$feature_query = array( 'cat' => $news_settings['feature_category'], 'showposts' => $news_settings['feature_num_posts'], 'caller_get_posts' => );
                else
                    
$feature_query = array( 'post__in' => get_option'sticky_posts' ), 'showposts' => $news_settings['feature_num_posts'] );
            
?>

                <?php query_posts$feature_query ); ?>

                <?php while ( have_posts() ) : the_post(); $do_not_duplicate[] = $post->ID?>

                    <div class="<?php hybrid_entry_class'feature' ); ?>">

                        <?php get_the_image( array( 'custom_key' => array( 'Medium''Feature Image' ), 'default_size' => 'medium' ) ); ?>

                        <?php hybrid_before_entry(); ?>

                        <div class="entry-summary entry">
                        <a  href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
                        <?php
                        
                          $title 
get_the_title(); //Guardas el título en una variable
                          
                          
$largo srtlen($title); //Guardas el numero de caracteres de tu titulo
                        
                          
$palabras = ($largo <= 50)?(300):(200); //Si el titulo tiene menos de 50 caracteres (o igual) $palabras sera igual a 300, sino igual a 200
                        
                        
?> <?php the_excerpt_reloaded($palabras?> </a>

                                  
                        </div>

                      <?php hybrid_after_entry(); ?>

                    </div>

                <?php endwhile; wp_reset_query(); ?>

            </div>

            <div class="slider-controls">
                <a class="slider-prev" title="<?php _e('Previous Post''news'); ?>"><?php _e('Previous''news'); ?></a>
                <a class="slider-pause" title="<?php _e('Pause''news'); ?>"><?php _e('Pause''news'); ?></a>
                <a class="slider-next" title="<?php _e('Next Post''news'); ?>"><?php _e('Next''news'); ?></a>
            </div>

        </div>

        <div id="excerpts">

            <?php query_posts( array( 'cat' => $news_settings['excerpt_category'], 'showposts' => $news_settings['excerpt_num_posts'], 'caller_get_posts' => 1'post__not_in' => $do_not_duplicate ) ); ?>

            <?php while( have_posts() ) : the_post(); $do_not_duplicate[] = $post->ID?>

                <div class="<?php hybrid_entry_class(); ?>">

                    <?php get_the_image(); ?>

                    <?php hybrid_before_entry(); ?>

                    <div class="entry-summary entry">
                        <?php the_excerpt(); ?>
                    </div>

                    <?php hybrid_after_entry(); ?>

                </div>

            <?php endwhile; wp_reset_query(); ?>

        </div>

        <?php if ( !empty( $news_settings['headlines_category'] ) ) : $alt 'odd'?>
            
            
            <div id="headlines">

            <?php foreach ( $news_settings['headlines_category'] as $category ) : ?>

                <?php $headlines get_posts( array(
                    
'numberposts' => $news_settings['headlines_num_posts'], 
                    
'category' => $category
                    
'post__not_in' => $do_not_duplicate
                
) ); ?>

                <?php if ( !empty( $headlines ) ) : ?>

                    <div class="section <?php echo $alt?>">

                        <?php $cat get_category$category ); ?>

                        <h3 class="section-title"><a href="<? echo get_category_link$category ); ?>" title="<?php echo $cat->name?>"><?php echo $cat->name?></a></h3>

                        <ul>
                        <?php foreach($headlines as $post) : $do_not_duplicate[] = $post->ID?>
                            <li><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
                        <?php endforeach; ?>
                        </ul>

                    </div>

                    <?php if ( $i++ % == $alt 'even'; else $alt 'odd'?>

                <?php endif; ?>

            <?php endforeach; ?>

            </div>
            <div id="headlines">

            <?php foreach ( $news_settings['headlines_category'] as $category ) : ?>

                <?php $headlines get_posts( array(
                    
'numberposts' => $news_settings['headlines_num_posts'], 
                    
'category' => $category
                    
'post__not_in' => $do_not_duplicate
                
) ); ?>

                <?php if ( !empty( $headlines ) ) : ?>

                    <div class="section <?php echo $alt?>">

                        <?php $cat get_category$category ); ?>

                        <h3 class="section-title"><a href="<? echo get_category_link$category ); ?>" title="<?php echo $cat->name?>"><?php echo $cat->name?></a></h3>

                        <ul>
                        <?php foreach($headlines as $post) : $do_not_duplicate[] = $post->ID?>
                            <li><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
                        <?php endforeach; ?>
                        </ul>

                    </div>

                    <?php if ( $i++ % == $alt 'even'; else $alt 'odd'?>

                <?php endif; ?>

            <?php endforeach; ?>

            </div>

        <?php endif; ?>

        <?php hybrid_after_page(); // After page hook ?>

        <?php hybrid_after_content(); // After content hook ?>

    </div>

<?php get_footer(); ?>
Desde ya muchas gracias por la ayuda
  #10 (permalink)  
Antiguo 05/07/2009, 20:03
Avatar de lucasan
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: Cali - Colombia
Mensajes: 1.144
Antigüedad: 16 años, 10 meses
Puntos: 59
Respuesta: Mostrar distintos extractos

error de digitación, es strlen(); Ya lo corregí arriba.

Saludos.
__________________
Plan Original Desarrollo Web
~$>sudo apt-get install -f
"Asi debería arreglarse todo en la vida"
  #11 (permalink)  
Antiguo 06/07/2009, 02:19
Avatar de gran Wakka  
Fecha de Ingreso: septiembre-2007
Mensajes: 712
Antigüedad: 16 años, 8 meses
Puntos: 48
Respuesta: Mostrar distintos extractos

Código PHP:
$title get_the_title() //Guardas el título en una variable
  
  
$largo strlen($titulo); 
Supongo que será:

Código PHP:
$title get_the_title(); //Guardas el título en una variable
  
  
$largo strlen($title); 
Más que nada para usar la misma variable.
__________________
Información de Series de TV
Buscas o quieres ser redactor? Ofertas redactor web
  #12 (permalink)  
Antiguo 06/07/2009, 06:42
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Mostrar distintos extractos

Muchísimas gracias por solucionarme el problema , la verdad que en este foro siempre me dieron una solución a los problemas que tuve (ya sea respondiéndome a mi o leyendo la respuesta dada a otros) y esta no fue la excepción.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:13.