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

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

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

بروز رسانی شده در تاریخ 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>

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

نوشته شده با عشق

محمدحسین نیازی اولش طراحی گرافیکی و رابط کاربری می کرده بعد ها کارشناسی نرم افزارشو گرفته و به کد زنی علاقه مند میشه ، تا اینکه تیم طراحی استودیو لاوان رو راه میندازه و بعدش میره سر وقت آی سی ام اس و الان اون اینجاست تا با تجربه بیش از 12 ساله خودش ، فوت‌وفن‌های خودش رو در اختیار شما قرار بده تا اون‌ها رو در جریان کاری‌تون بگنجونین و مهارت‌هاتون رو ارتقاء بدین.

محمدحسین نیازی

پست های مرتبط

12 دیدگاه تاکنون ارسال شده
  • hani
    مهمان
    سلام بسیار عالی حالا برای اینکه کاربر ثبت نام کنه تا بتونه بقیه ادامه مطلب رو ببینه هم میشه کاری کرد ؟
    • محمدحسین نیازی
      مدیر
      در پاسخ به hani. گفته :
      با سلام خدمت شما بله با کدنویسی اینکار قابل انجام هست و میتونید بهترین شکل پیادش کنید و یا میتونید از پلاگین های مربوطه استفاده کنید و خواندن مطالب رو مختص اعضا کنید
  • پریسا خانم
    مهمان
    عالی بود واقعا آموزش هاتون کاربردی و بیسته روش دوم عالی بود و این نشون میده شما هم هر روز به دنبال روش های بهتری برای بهتر درک شدن توسط افراد و کاربران هستید
  • محمد
    مهمان
    سلام ممنون میشم کد درج دکمه ادامه مطلب رو هم بفرمایید. الان با این کد دکمه ادامه مطلب نمایش داده نمیشه
    • محمدحسین نیازی
      مدیر
      در پاسخ به محمد. گفته :
      سلام دوست عزیز من ممنون از پیشنهادت آموزش رو بروز کردم و کد مربوط به ادامه مطلب رو هم گذاشتمش بجای btn btn-primary میتونی هر کلاسی که توی قالبتون برای دکمه ها تعریف شده استفاده کنید به همین آسونی :)
  • محمد
    کاربر
    مثل همیشه عالی ممنونم
    • محمدحسین نیازی
      مدیر
      در پاسخ به محمد. گفته :
      نظر لطفتون هست :)
  • zahra samimi
    مهمان
    این روش روی هر قالبی جواب میده ؟
    • محمدحسین نیازی
      مدیر
      در پاسخ به zahra samimi. گفته :
      با سلام بله روش کات استرینگ روی هر قالبی به راحتی قابل اجرا هست
  • حمیدرضا
    مهمان
    ظاهرا فکر کنم از سربازی برگشتید و خیلی خوشحالم چون دوباره میتونم سوالاتمو ازتون بپرسم و بهترین راه حل رو بم بگید وبلاگم ایشالا مطالب آموزش و نابش بیشتر بشه
    • محمدحسین نیازی
      مدیر
      در پاسخ به حمیدرضا. گفته :
      نظر لطف شماست انشالله بتونم کمی بیشتر تجربه هامو با دوستان به اشتراک بزارم
ارسال نظر
در پاسخ به Some User

آی سی ام اس

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