Különböző hosszúságú excerpt-ek

Sziasztok!











Van egy olyan problémám, amivel már napok óta kínlódok… :S Az egyik oldalam design-ja úgy néz ki, hogy fent egymás mellett van a három legújabb bejegyzés, majd alatta hagyományosan egymás alatt a régebbiek. Mind excerpt-tel megoldva. Viszont a legújabb háromnak rövidebb excerpt kéne, mint a többinek. Találtam is gúgliban egy számomra szimpatikusnak tűnő megoldást, de nem igazán tudtam működésre bírni…bár más verziót se valamiért :S Valami ötlet?











Ez van a functions-ben ami ide tartozik:









Code:



function wpe_excerptlength_latest($length) {

return 50;

}

function wpe_excerptlength_older($length) {

return 200;

}



function wpe_excerpt($length_callback='', $more_callback='') {

global $post;

if(function_exists($length_callback)){

add_filter('excerpt_length', $length_callback);

}

if(function_exists($more_callback)){

add_filter('excerpt_more', $more_callback);

}

$output = get_the_excerpt();

$output = apply_filters('wptexturize', $output);

$output = apply_filters('convert_chars', $output);

$output = '

'.$output.'

';

echo $output;

}








Ez pedig az index.php:





Code:



<?php get_header('index') ?>







<?php while ( have_posts() ) : the_post() ?>







<?php query_posts('showposts=3'); ?>

<?php $posts = get_posts('numberposts=3&offset=0'); foreach ($posts as $post) : start_wp(); ?>

<?php static $count1 = 0; if ($count1 == "5") { break; } else { ?>





<?php $count1++; } ?>

<?php endforeach; ?>





<?php endwhile; ?>







<?php while ( have_posts() ) : the_post() ?>











<?php query_posts('showposts=5'); ?>

<?php $posts = get_posts('numberposts=5&offset=3'); foreach ($posts as $post) : start_wp(); ?>

<?php static $count2 = 0; if ($count2 == "5") { break; } else { ?>



<?php the_title(); ?>



<?php the_time(__('Y F j.', 'sandbox')) ?> | <?php printf(__('Posted in %s', 'sandbox'), get_the_category_list(', ')); ?> | <?php comments_popup_link(__('Nincs hozzászólás', 'kubrick'), __('1 hozzászólás', 'kubrick'), __('% hozzászólás', 'kubrick'), '', __('Nem lehet hozzászólni.', 'sandbox') ); ?>



&h=150&w=150&zc=1" alt="" class="older_image" />

<?php the_excerpt('wpe_excerptlength_older', 'wpe_excerptmore'); ?>



Tovább a folytatáshoz »

<?php edit_post_link('Szerkeszt', '', ' | '); ?><?php the_tags('Címkék: ', ', ', ''); ?>



<?php $count2++; } ?>

<?php endforeach; ?>







<?php endwhile; ?>











<?php get_sidebar('index') ?>

<?php get_footer() ?>

én ezt használom:











functions.php-be:









Code:

function excerpt($num) {

$limit = $num+1;

$excerpt = explode(' ', get_the_excerpt(), $limit);

array_pop($excerpt);

$excerpt = implode(" ",$excerpt)."...";

echo $excerpt;

}








és index.php-be:





Code:









ahol értelemszerűen XX lecserélhető bármilyen számra...





és persze kárhol akárhányszor hívod meg, lecseréled az értékeket és annak megfelelően működik.





öröm és bódosság?

Hm…múltkor próbáltam…és nem működött…és rájöttem miért…valamiért the_excerpt volt… Igaz alapvetően ezzel is volt gond,mert kb 70es érték fölött behalt. Viszont ha a külön “kivonat” mezőbe raktam be,akkor olyan 150es értékig megy, és így már jó. Ezer hála… :slight_smile:

2.9-tol az excerpt hossza valtoztathato: http://codex.wordpress.org/Template_Tags/the_excerpt

lényegében igen, de amíg a fent vázolt megoldás egy funkciót többször hív meg, addig ehhez a 2.9-es újításhoz annyi funkciót kell írnod, ahányszor használni akarod…

[off]Könyörgöm, mondja már meg valaki, hogy egy WP sablon forditásánál az excerpt szót minek lehet leforditani!!! Kösz!!![/off]

[re:off :)]bevezető/ajánló pld… tartalomfüggő…[/off]

felütsz egy szótárat és tadaaaaaaam: kivonat





ezek után megnézed a szinonimáit: vázlat, rövidítés, esszencia, lényeg…











látod, nem is oly bonyolult.

hgrg és mano: köszi :smiley:


'mano' wrote on '2010-02-03:




én ezt használom:





functions.php-be:





Code:

function excerpt($num) {

$limit = $num+1;

$excerpt = explode(' ', get_the_excerpt(), $limit);

array_pop($excerpt);

$excerpt = implode(" ",$excerpt)."...";

echo $excerpt;

}








és index.php-be:





Code:









ahol értelemszerűen XX lecserélhető bármilyen számra...





és persze kárhol akárhányszor hívod meg, lecseréled az értékeket és annak megfelelően működik.





öröm és bódosság?








Nincs. :( Találtam egy témát http://wordpress.org/extend/themes/spooky . Leforditottam, minden szuper. Mindösszesen én szeretném valahogy növelni az excerpt szavak számát, de attól lennék a legbódogabb, ha nem lenne excerptem ... Nagyobb számra állitottam, de figyelmen kivül hagyta . Hogy tudnám kiszedni az excerptet?? :(

Ha figyelmen kívül hagyta, nem lehet, hogy tagek vannak a bejegyzésekben?





Az excerpteket úgy tudod likvidálni, ha a téma beállításában nincs rá lehetőség, hogy a helyett -et írsz az index.php-ben fordulhat elő pl.

A more tagot csak az excerpten belül értelmezi, kipróbáltam. Nincs már benne egy darab se …











" helyett " az index.php-ban … túl vagyok rajta … semmi változás :smiley:

Itt a function.php:









Code:

<?php



load_theme_textdomain('eno', TEMPLATEPATH . '/languages/');

include(TEMPLATEPATH."/functions/breadcrumb-trail.php");

add_filter('comments_template', 'legacy_comments');

function legacy_comments($file) {



if(!function_exists('wp_list_comments')) : // WP 2.7-only check

$file = TEMPLATEPATH . '/legacy.comments.php';

endif;



return $file;

}



if ( function_exists('register_sidebars') ) {

register_sidebar(array('name'=>'Sidebar','before_title'=>'
','after_title'=>'
'));

register_sidebar(array('name'=>'Widget Footer Left','before_title'=>'
','after_title'=>'
'));

register_sidebar(array('name'=>'Widget Footer Middle','before_title'=>'
','after_title'=>'
'));

register_sidebar(array('name'=>'Widget Footer Right','before_title'=>'
','after_title'=>'
'));

}



function the_content_limit($max_char, $more_link_text = '[....]', $stripteaser = 0, $more_file = '') {

$content = get_the_content($more_link_text, $stripteaser, $more_file);

$content = apply_filters('the_content', $content);

$content = str_replace(']]>', ']]>', $content);

$content = strip_tags($content);



if (strlen($_GET['p']) > 0) {

echo "

";

echo $content;

echo " <a href='";

the_permalink();

echo "'>[....]";

echo "

";

}

else if ((strlen($content)>$max_char) && ($espacio = strpos($content, " ", $max_char ))) {

$content = substr($content, 0, $espacio);

$content = $content;

echo "

";

echo $content;

echo "  ";

echo " <a href='";

the_permalink();

echo "'>[....]";

echo "

";

}

else {

echo "

";

echo $content;

echo " <a href='";

the_permalink();

echo "'>[....]";

echo "

";

}

}



$themename = "Spooky";

$shortname = "spk";

$options = array (



array(

"type" => "open"),

array(

"name" => __('Setting up your Theme Options', 'eno'),

"type" => "title"),





array(

"type" => "open"),

array(

"name" => __('Choose between Image Logo or Text', 'eno'),

"type" => "title"),





array(

"name" => __('Image Logo instead of Text?', 'eno'),

"id" => $shortname."_logo_text",

"desc" => __('Click here if you want an image logo instead of text (source file included)', 'eno'),

"type" => "checkbox",

"std" => "false"),

array(

"type" => "submit"),

array(

"type" => "close"),



array(

"type" => "open"),

array(

"name" => __('Setup Your Follow Me On Twitter Button', 'eno'),

"type" => "title"),







array(

"name" => __('Your Twitter Username', 'eno'),

"desc" => __('Type in your twitter username for the Follow Me on Twitter Button', 'eno'),

"id" => $shortname."_twitter_name",

"type" => "text",

"std" => "wordpress"),



array(

"name" => __('Hide the Follow Me on Twitter Button?', 'eno'),

"desc" => __('Check this box if you don't want the Follow Me on Twitter Button in the Sidebar.', 'eno'),

"id" => $shortname."_sidebar_twitter",

"type" => "checkbox",

"std" => "false"),

array(

"type" => "submit"),

array(

"type" => "close"),







);





function mytheme_add_admin() {



global $themename, $shortname, $options;



if ( $_GET['page'] == basename(__FILE__) ) {



if ( 'save' == $_REQUEST['action'] ) {



foreach ($options as $value) {

update_option( $value['id'], $_REQUEST[ $value['id'] ] ); }



foreach ($options as $value) {

if( isset( $_REQUEST[ $value['id'] ] ) ) { update_option( $value['id'], $_REQUEST[ $value['id'] ] ); } else { delete_option( $value['id'] ); } }



header("Location: themes.php?page=functions.php&saved=true");

die;



} else if( 'reset' == $_REQUEST['action'] ) {



foreach ($options as $value) {

delete_option( $value['id'] ); }



header("Location: themes.php?page=functions.php&reset=true");

die;



}

}



add_theme_page($themename." Options", "".$themename." Options", 'edit_themes', basename(__FILE__), 'mytheme_admin');



}



function mytheme_admin() {



global $themename, $shortname, $options;



if ( $_REQUEST['saved'] ) echo '

'.$themename.' settings saved.

';

if ( $_REQUEST['reset'] ) echo '

'.$themename.' settings reset.

';



?>









<?php foreach ($options as $value) {

switch ( $value['type'] ) {



case "open":

?>

<div style="width:90%; background:#eee; border:1px solid #ddd; padding:20px; overflow:hidden; display: block; margin: 0px 0px 10px; -moz-border-radius: 10px;

-webkit-border-radius: 10px;">



<?php break;



case "close":

?>







<?php break;



case "misc":

?>







<?php break;



case "title":

?>











<?php break;



case 'text':

?>















<img style="padding:5px; background:#FFF; border:1px solid #ddd;" src="/images/" alt="image" />





<input style="width:200px;" name="" id="" type="" value="" />













<?php

break;



case 'textarea':

?>















<img style="padding:5px; background:#FFF; border:1px solid #ddd;" src="/images/" alt="image" />





<textarea name="" style="width:400px; height:200px; margin-top:10px" type="" cols="" rows="">











<?php

break;

case 'select':

?>















<img style="padding:5px; background:#FFF; border:1px solid #ddd;" src="/images/" alt="image" />





<select style="width:240px;" name="" id=""><option>











<?php

break;



case "checkbox":

?>















<img style="padding:5px; background:#FFF; border:1px solid #ddd;" src="/images/" alt="image" />







<input type="checkbox" name="" id="" value="true" />















<?php

break;



case "submit":

?>





<input name="save" type="submit" value="" />







<?php break;

}

}

?>









<?php

}



add_action('admin_menu', 'mytheme_add_admin');

/*End of Add a Theme Options Page*/



/*End of Theme Options =======================================*/



// Remove WP Generator for security reasons

remove_action('wp_head', 'wp_generator');

?>








ez meg az index.php





Code:

<?php

global $options;

foreach ($options as $value) {

if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_settings( $value['id'] ); }

}

?>





















<a href="" rel="bookmark">







· <a rel="nofollow" href="#respond"> 
























































Hátha valaki tudna nekem segiteni ... nem szeretnék excerptet ... kérem vissza a more tagomat. Hadd tegyem már oda, ahova én szeretném :(

Ott van az index.php-dban a rész…ezt cseréld le the_content()re…

Köszi, de fentebb már irtam:











" helyett az index.php-ban … túl vagyok rajta … semmi változás"

Van egy home.php is a sablonban, abban is írd át az excerptet és jó lesz! :slight_smile:

Vedd úgy , hogy leborultam Előtted :smiley: zőőd pont :slight_smile:

/mér nem lehet szerkeszteni?/











a Codex olvasása közben már arra is rájöttem, hogy hogy lehet pl. a More-t kicsicsázni, esetleg egy levélkét tenni oda, mint a Codexben. Csak arra nem találtam rá, hogy öljem onnan ki az excerptet :wink:

Akkor legalább most csicsás more-od is lehet, meg az excerpt is eltűnik… :smiley:





Örülök, hogy sikerült!