سعید شعبانی

استفاده از خلاصه مطالب با طول های متفاوت

11 پست در این موضوع قرار دارد

برای قالب جدیدی که دارم طراحی می کنم در یک صفحه نیاز ارم تا برخی از مطالب ارای خلاصه بیشتری باشند و برخی دارای خلاصه کمتری باشند. حالا من از کد


<?php the_excerpt(); ?>

استفاده می کنم. چجوری می تونم طول متنی که این کد فراخوانی می کنه را تغییر بدم؟

به اشتراک گذاری این پست


لینک به پست

کافیه توی کمانک ها ( پرانتز ) تعداد کاراکتری که میخواهید نمایش داده شود را وارد کنید

اگر عمل نکرد از کد زیر استفاده کنید


<?php echo excerpt(40); ?>

به اشتراک گذاری این پست


لینک به پست
کافیه توی کمانک ها ( پرانتز ) تعداد کاراکتری که میخواهید نمایش داده شود را وارد کنید اگر عمل نکرد از کد زیر استفاده کنید
 

وقتی که از کد


<?php the_excerpt(40); ?>

استفاده می کنم هیچ تغییری نمی کنه وقتی هم که از کد


<?php echo excerpt(40); ?>

استفاده می کنم ارور زیر میاد.


Call to undefined function excerpt()

به اشتراک گذاری این پست


لینک به پست

کد زیر رو در فایل فانکشن قرار دهید:


function excerpt_count_js(){
echo '<script>jQuery(document).ready(function(){
jQuery("#postexcerpt .handlediv").after("<div style=\"position:absolute;top:0px;right:5px;color:#666;\"><small>Excerpt length: </small><input type=\"text\" value=\"0\" maxlength=\"3\" size=\"3\" id=\"excerpt_counter\" readonly=\"\" style=\"background:#fff;\"> <small>character(s).</small></div>");
jQuery("#excerpt_counter").val(jQuery("#excerpt").val().length);
jQuery("#excerpt").keyup( function() {
jQuery("#excerpt_counter").val(jQuery("#excerpt").val().length);
});
});</script>';
}
add_action( 'admin_head-post.php', 'excerpt_count_js');
add_action( 'admin_head-post-new.php', 'excerpt_count_js');

که یک متباکس در ارسال مطلب ایجاد میکنه که میتونید تعداد کاراکتر برای خلاصه هر مطلب رو تعیین کنید.

به اشتراک گذاری این پست


لینک به پست

همچنین:


function your_excerpt_length($length) {
return 40;
}
add_filter('excerpt_length', 'your_excerpt_length');

و

به اشتراک گذاری این پست


لینک به پست

کد زیر رو در فایل فانکشن قرار دهید:


function excerpt_count_js(){
echo '<script>jQuery(document).ready(function(){
jQuery("#postexcerpt .handlediv").after("<div style=\"position:absolute;top:0px;right:5px;color:#666;\"><small>Excerpt length: </small><input type=\"text\" value=\"0\" maxlength=\"3\" size=\"3\" id=\"excerpt_counter\" readonly=\"\" style=\"background:#fff;\"> <small>character(s).</small></div>");
jQuery("#excerpt_counter").val(jQuery("#excerpt").val().length);
jQuery("#excerpt").keyup( function() {
jQuery("#excerpt_counter").val(jQuery("#excerpt").val().length);
});
});</script>';
}
add_action( 'admin_head-post.php', 'excerpt_count_js');
add_action( 'admin_head-post-new.php', 'excerpt_count_js');

که یک متباکس در ارسال مطلب ایجاد میکنه که میتونید تعداد کاراکتر برای خلاصه هر مطلب رو تعیین کنید.

تشکر ولی من می خواهم در چند جای قالب خلاصه مطالب متفاوت باشه

به اشتراک گذاری این پست


لینک به پست

از بین اینها این یکی خوب بود ولی من نمی دونم این کد و کد دومی را کجا بگذارم.

من خودم از این تابع استفاده می کنم خیلی راحت هم هست اونی که می خوای کافیه شرطی برای پست تات تعریف کنی و از این تابع استفاده کنی


if ( !function_exists( 'excerpt_length' ) ) :
function excerpt_length($string, $start_pos = 0, $max_length = 280) {
if(strlen($string) > $max_length) {
$excerpt = substr($string, $start_pos, $max_length-3);
$last_space = strrpos($excerpt, ' ');
$excerpt = substr($excerpt, 0, $last_space);
$excerpt .= '<span style="margin: 0 5px;">...</span>';
} else {
$excerpt = $string;
}
return $excerpt;
}
endif;

کافی در اون شرط استفاده کنی و هربار برای هر پست مقدار max_lenght رو مقدار بدی


echo excerpt_length( get_the_excerpt(), 350 )

از آموزش مشخص کردن تعداد کاراکترها هم وقتی کد زیر را داخل فانکشن قرار می دهم ارور می ده.


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 "<p>";
echo $content;
echo " <a href='";
the_permalink();
echo "'>"."ادامه مطلب →</a>";
echo "</p>";
}
else if ((strlen($content)>$max_char) && ($espacio = strpos($content, " ", $max_char ))) {
$content = substr($content, 0, $espacio);
$content = $content;
echo "<p>";
echo $content;
echo "...";
echo " <a href='";
the_permalink();
echo "'>".$more_link_text."</a>";
echo "</p>";
}
else {
echo "<p>";
echo $content;
echo " <a href='";
the_permalink();
echo "'>"."ادامه مطلب →</a>";
echo "</p>";
}
}

به اشتراک گذاری این پست


لینک به پست

شما اول کد زیر را در فایل functions قال قرار بدید


//محدود کردن لغات
function excerpt($limit) {
$excerpt = explode(' ', get_the_excerpt(), $limit);
if (count($excerpt)>=$limit) {
array_pop($excerpt);
$excerpt = implode(" ",$excerpt).'...';
} else {
$excerpt = implode(" ",$excerpt);
}
$excerpt = preg_replace('`\[[^\]]*\]`','',$excerpt);
return $excerpt;
}

function content($limit) {
$content = explode(' ', get_the_content(), $limit);
if (count($content)>=$limit) {
array_pop($content);
$content = implode(" ",$content).'...';
} else {
$content = implode(" ",$content);
}
$content = preg_replace('/\[.+\]/','', $content);
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
return $content;
}

و سپس این کد را هم در جایی که میخواهید خلاصه مطلب نمایش داده بشه قرار بدید :


<?php echo excerpt(40); ?>

به اشتراک گذاری این پست


لینک به پست

درود

فک کنم کد زیر بدردتون بخوره :


<?php the_content_rss('', TRUE, '', 60); ?>

به اشتراک گذاری این پست


لینک به پست

شما اول کد زیر را در فایل functions قال قرار بدید


//محدود کردن لغات
function excerpt($limit) {
$excerpt = explode(' ', get_the_excerpt(), $limit);
if (count($excerpt)>=$limit) {
array_pop($excerpt);
$excerpt = implode(" ",$excerpt).'...';
} else {
$excerpt = implode(" ",$excerpt);
}
$excerpt = preg_replace('`\[[^\]]*\]`','',$excerpt);
return $excerpt;
}

function content($limit) {
$content = explode(' ', get_the_content(), $limit);
if (count($content)>=$limit) {
array_pop($content);
$content = implode(" ",$content).'...';
} else {
$content = implode(" ",$content);
}
$content = preg_replace('/\[.+\]/','', $content);
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
return $content;
}

و سپس این کد را هم در جایی که میخواهید خلاصه مطلب نمایش داده بشه قرار بدید :


<?php echo excerpt(40); ?>

چرا این کد بیشتر از 60 کاراکتر نشون نمیده؟ آیا میشه از این کد در چند جای مختلف قالب با مقدار های متفاوت استفاده کرد؟

درود

فک کنم کد زیر بدردتون بخوره :


<?php the_content_rss('', TRUE, '', 60); ?>

این یکی عالی بود کارم با همین کد راه افتاد خیلی متشکرم از شما ^_^

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط mehrdad_k
      سلام
      من کلی جستجو کردم در این مورد چند کد رو امتحان کردم ولی این کدها طوری خلاصه می کنند که استایلهای داخل متن مثل بلد بودن و رنگی بودن و یا اینتر ها رو حذف می کنند. من میخوام همه اینها روداشته باشم و خلاصه مطلب رو نمایش بدم.
      باتشکر.
    • توسط نسـتـــرن
      سلام
      دوستان من میخوام تابع زیر رو مجبور کنم که همش مثلا 100 تا کاراکتر از چکیده ها رو نشون بده؟
      باید جه تغییری توش ایجاد کنم؟مرسی


      <?php the_excerpt();?>

    • توسط sajjadnajafi
      سلام دوستان
      در صفحه پست(single) میخوایم زیر عنوان چکیده همراه تصویر شاخص در کنارش بیاد (مثل سایت های خبری)
      از پوسته گرافین استفاده میکنیم.(http://wordpress.org/extend/themes/graphene)
      یه مشکل هست که وقتی :


      <?php the_excerpt(); ?>

      رو فراخوانی میکنی..
      چکیده همراه با دکمه ادامه مطلب نمایش داده میشه..!
      حالا چیکار کنیم که دکمه ادامه مطلب در صفحه پست نمایش داده نشه؟!
      ممنون میشم راهنمایی بفرمایید..
    • توسط حجت
      سلام
      در قالب من، چكيده مطلب يا همون گزيده متن، در صفحه اول و هنگام انتخاب دسته و جستو، نمايش داده ميشه
      من مي‌خوام كه همين چكيده، در اول هر پست هم قرار بگيره؛ يعني وارد يك پست كه ميشم، اول، چكيده باشه بعد متن اصلي!
      چه‌طوري ميشه اين‌كار رو كرد؟ ترجيحا اگه متن چكيده داخل يك كادر قرار بگيره خيلي بهتره. ممنون