محدود سازی تعداد کاراکتر کلمات متن مقدمه در صفحه بلاگ جوملا

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

امتیاز شما به این پست
(27)
چاپ  

خیلی از شماها در مطالب سایت خود از دکمه ادامه مطلب استفاده می کنید ، اینکار شما در واقع متن را به دو قسمت قبل (متن مقدمه ) و بعد ( متن کامل ) تقسیم میکند. و گاهی اوقات حتی متوجه می شوید ، خطی که قبل از ادامه مطلب نمایش داده می شود موضوعی است که باید با خط بعدی حتما کنار هم نمایش داده شوند ، اما هر کاری می کنید نمی توانید توازنی بین سطرها و جملات برقرار کنید.
بگذارید برای بیشتر روشن شدن موضوع برایتان مثالی بزنم ، شما پستی در رابطه با معرفی محصول خود در ده خط دارید و برای نمایش در سایت و قسمت وبلاگ خود میبایست ( حتما ) بخشی از متن را در واقع کراپ کنید و قبل از دکمه ادامه مطلب بگذارید ، وقتی میخواهید برای مثال یک خط را کراپ کنید میبینید سایر مطالب حداقل سه خط توضیحات دارند ، ولی وقتی میخواهید برای این مطلب هم سه خط توضیحات همانند سایر مطالب بگذارید متوجه چالش ها می شوید و پی می برید که تمامی سطر ها بهم متصل هستند و نمیتوان آنها را به هیچ وجه از هم جدا کرد ، چرا که با جداسازی جملات از هم معنای آنها از بین می رود.راه حل این مشکل شما محدود سازی تعداد کارکتر کلمات است .در واقع با این روش شما متن خلاصه ای از مطالب را در صفحه مجموع بلاگ مطالب جوملا بدون استفاده از دکمه ادامه مطلب نشان خواهید دادید.

بروز رسانی شده در تاریخ 26 فروردین 1398

توجه : به دلیل پشتیبانی جوملا از توابع Cut String با استفاده از روش دوم به راحتی و از طریق یک قطعه کد ساده میتوانید اینکار را انجام دهید و لذا پیشنهاد می شود روش دوم را انجام دهید.

اما چگونه ، با چه روشی و از طریق چه فایلی؟

شما با استفاده از روش برشی از یک رشته و یا به اصطلاح Cut String می توانید این روش را عملی کنید و برای همیشه از شر استفاده از دکمه ادامه مطلب راحت شوید

اما استفاده از روش Cut String چه مزایایی دارد؟

نمایش متن مقدمه به صورت خودکار و از پیش تعریف شده براساس تعداد کارکتر کلمات
منظم تر شدن تعداد کارکتر کلمات براساس سلیقه شما
منظم تر شدن باکس نمایش مطالب و پست ها و یک شکل شدن
باقی ماندن پیوستگی مطالب با هم و جدا نشدن هیچ بخشی از هم
نمایش متن کامل پست در خبر خوان ها

و اما دستور طرز تهیه Cut String

شما باید در اول کار به مسیر زیر بروید و فایل blog_item.php را کپی کنید

/YOUR-SITE/components/com_content/views/category/tmpl/blog_item.php

فایل blog را حالا که کپی کردید در مسیر زیر قرار دهید. به این عمل کپی فایل از پوشه اصلی به پوشه قالب و ویرایش فایل عمل اورراید کردن override می گویند. سپس فایل را باز کنید

/YOUR-SITE/templates/YOUR-TEMPLATE/html/com_content/category/blog_item.php

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

روش اول

قطعه کد زیر را بعد از خط define در قالب قرار بدهید. به عبارتی وقتی فایل را باز می کنید در ابتدای فایل خط زیر قرار دارد

defined('_JEXEC') or die;

یک اینتر بزنید و کد زیر را جایگذاری یا پیست کنید

// Create introtext.
if(!function_exists('cut_string')){
function cut_string($title, $max)
{
if($title!=''){
if(is_array($title)) list($string, $match_to) = $title;
else { $string = $title; $match_to = $title{0}; }
// Create introtext part2.
$match_start = stristr($string, $match_to);
$match_compute = strlen($string) - strlen($match_start);

if (strlen($string) > $max)
{
if ($match_compute < ($max - strlen($match_to)))
{
$pre_string = substr($string, 0, $max);
$pos_end = strrpos($pre_string, " ");
if($pos_end === false) $string = $pre_string."...";
else $string = substr($pre_string, 0, $pos_end)."...";
}
else if ($match_compute > (strlen($string) - ($max - strlen($match_to))))
{
$pre_string = substr($string, (strlen($string) - ($max - strlen($match_to))));
$pos_start = strpos($pre_string, " ");
$string = "...".substr($pre_string, $pos_start);
if($pos_start === false) $string = "...".$pre_string;
else $string = "...".substr($pre_string, $pos_start);
}
else
{
$pre_string = substr($string, ($match_compute - round(($max / 3))), $max);
$pos_start = strpos($pre_string, " "); $pos_end = strrpos($pre_string, " ");
$string = "...".substr($pre_string, $pos_start, $pos_end)."...";
if($pos_start === false && $pos_end === false) $string = "...".$pre_string."...";
else $string = "...".substr($pre_string, $pos_start, $pos_end)."...";
}

$match_start = stristr($string, $match_to);
$match_compute = strlen($string) - strlen($match_start);
}
// Create introtext end.
return $string;
}else{
return $string ='';
}
}
}

خب تا اینجا پنجاه درصد راه رو‌جلو رفتیم ، برای طی کردن پنجاه درصد مابقی ، قطعه کد زیر را درون فایل پیدا کنید

<?php echo $this->item->introtext; ?>

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

<?php echo cut_string($this->item->introtext,200); ?>

روش دوم

در این روش به دلیل پشتیبانی جوملا از توابع Cut String شما کافیست وارد مسیر زیر شوید

/YOUR-SITE/templates/YOUR-TEMPLATE/html/com_content/category/blog_item.php

سپس قطعه کد زیر را درون فایل بالا پیدا کنید

<?php echo $this->item->introtext; ?>

حالا کافیه کد زیر را با خط بالا جایگزین کنید

<?php echo JHtml::_('string.truncate', strip_tags($this->item->introtext), $this->params->get('desciption_limit', 200)); ?>

با اینکار دیگر نیازی به انجام مراحل روش یک و وارد کردن قطعه کدهای زیاد نیست و فقط کافیست خط بالا را جایگزین کنید.دقت کنید که این تابع برای کوتاه کردن هرگونه توابع متنی استفاده می شود و فقط کافیست برای انجام اینکار بجای this->item->introtext در قطعه کد بالا ، کد مربوط به توابع متن مورد نظر خود را وارد کنید.

عدد 200 در کدهای بالا در واقع تعداد کارکتر را نشان می دهد که من 200 کارکتر را انتخاب کرده ام و شما می توانید طبق سلیقه و علاقه خودتون اون رو کم و زیاد کنید.

حالا درج دکمه ادامه مطلب

این مورد اختیاری است و کسانی که نمیخواهند این دکمه را نمایش دهند می توانند از انجام این مرحله صرف نظر کنند. برای اینکار کافیست خط بالا را که پیدا کردید و تغییر دادید کد زیر را بعد از آن قرار دهید تا دکمه ادامه مطلب هم برای شما ظاهر شود.

<p class="readmore">	
<?php $link = JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid)); ?>
<a class="btn btn-primary" href="/<?php echo $link; ?>"><?php echo JText::_("COM_CONTENT_READ_MORE_TITLE");?></a>
</p>

محدود سازی تعداد کاراکتر کلمات متن مقدمه در صفحه بلاگ جوملادر تصویر بالا میتوانید خروجی این کد را مشاهده کنید که متن مقدمه بدون استفاده از دکمه ادامه مطالب نمایش داده شده و مابقی مطالب به صورت ... نمایش داده می شود.
طرز تهیه این آموزش هم به پایان رسید و مثل همیشه منتظر نظرات و تجربه های شما هستم

پیشنهاد میکنیم این پست ها را هم بخوانید

نیاز به مشاوره بیشتر دارید؟ برای صحبت با متخصصان ما تماس بگیرید.
0933-8883035 5 دقیقه رایگان

مطالعه در 7 دقیقه

به همراه یک فنجان قهوه

دیدگاه کاربران

مکانی برای پرسش و پاسخ شما

دیدگاه های اخیر

دیدگاه (10)

This comment was minimized by the moderator on the site

عالی بود
واقعا آموزش هاتون کاربردی و بیسته
روش دوم عالی بود و این نشون میده شما هم هر روز به دنبال روش های بهتری برای بهتر درک شدن توسط افراد و کاربران هستید

This comment was minimized by the moderator on the site

سلام
ممنون میشم کد درج دکمه ادامه مطلب رو هم بفرمایید.
الان با این کد دکمه ادامه مطلب نمایش داده نمیشه

This comment was minimized by the moderator on the site

سلام دوست عزیز من
ممنون از پیشنهادت
آموزش رو بروز کردم و کد مربوط به ادامه مطلب رو هم گذاشتمش
بجای btn btn-primary میتونی هر کلاسی که توی قالبتون برای دکمه ها تعریف شده استفاده کنید
به همین آسونی

This comment was minimized by the moderator on the site

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

This comment was minimized by the moderator on the site

مثل همیشه عالی
ممنونم

This comment was minimized by the moderator on the site

نظر لطفتون هست

This comment was minimized by the moderator on the site

این روش روی هر قالبی جواب میده ؟

This comment was minimized by the moderator on the site

با سلام
بله روش کات استرینگ روی هر قالبی به راحتی قابل اجرا هست

This comment was minimized by the moderator on the site

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

This comment was minimized by the moderator on the site

نظر لطف شماست
انشالله بتونم کمی بیشتر تجربه هامو با دوستان به اشتراک بزارم

هنوز هیچ دیدگاهی ارسال نشده است.

ارسال دیدگاه

  1. ارسال دیدگاه به عنوان مهمان ثبت نام یا ورورد به ناحیه کاربری.
پیوست ها (0 / 3)
اشتراک موقعیت شما