web-dev-qa-db-fra.com

buddypress: comment rendre l'extrait de description de groupe plus court?

J'ai créé un thème dans buddypress et je souhaite créer une section teaser pour mes groupes. Cela fonctionne bien mais j'ai un problème pour raccourcir la description du groupe ...

Je l'utilise comme ceci:

<p><a href="<?php bp_group_permalink() ?>"><?php bp_group_name() ?></a></p>
<p><?php bp_group_description_excerpt() ?></p>

Si la description du groupe est très longue, ma mise en page se bloque. Est-il possible (comme dans wordpress) de raccourcir l'extrait (avec une fonction ou quelque chose)? Comme "maximum de 20 lettres", ou quelque chose comme ça?

Merci.

1
Brayaz Zayarb

API personnalisée

Écrivez une fonction d’encapsulation d’API normale et placez-la dans votre thème functions.php ou offrez-la sous la forme de plug-in (mu-).

Trim mots

/**
 * Trim Words Cb fn
 * @link Adjusted from http://snipplr.com/view.php?codeview&id=20397
 * 
 * @param string $excerpt Input string
 * @param int $count Word count
 * @param boolean/string $more Whether to show a "more" or not or a string
 * @return string $excerpt
 */
function wpse50198_Word_trim( $excerpt, $limit, $more = FALSE )
{
    $output = explode( ' ', $excerpt );
    $count = count( $input );

    if ( $limit < $count )  )
        array_splice( $excerpt, $count, null, $output );

    if ( $more )
        $output .= $more;

    $output = implode( ' ', $output );

    return $output;
}

L'étiquette de modèle

/**
 * 
 * @param bool $count Number of words to show - (default) 20
 * @param boolean/string $more Whether to show a "more" or not - (default) ...
 * @param bool $echo Print or return the excerpt - (default) TRUE
 * @return string $excerpt The reduced excerpt
 */
function short_bp_group_descr_excerpt( $count = 20, $more = '&hellip', $echo = TRUE )
{
    $excerpt = bp_get_group_description_excerpt();
    $length = str_Word_count( $excerpt );

    if ( $count < $length )
        $excerpt = wpse50198_trim_words( $excerpt, $count, $more );

    if ( $echo )
        echo $excerpt;

    return $excerpt;
}

Usage

Maintenant, appelez-le comme n'importe quelle balise de modèle dans votre modèle: short_bp_group_descr_excerpt();.

1
kaiser