خوراک های آپادانا

تبلیغات

تابع نمایش لیست پست ها به صورت سفارشی

4 دیدگاه توابع بلوک ها
تابع نمایش لیست پست ها به صورت سفارشی

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


کدهای تابع را به فایل functions.php قالب سایت و یا فایل engine/custom-file.php آپادانا اضافه کنید.

به صورت پیشفرض فایل engine/custom-file.php در سیستم وجود ندارد، درصورتی که قبلا آن را ایجاد نکرده اید آن را بسازید و دقت کنید که برای اجرای دستورات PHP در خط اول این فایل باید کد <?php را قرار دهید.

 

function block_last_posts_custom($op = null, $id = null, $position = null)
{
	if ($op == 'remove-cache')
	{
		remove_cache('module-posts-block-last-custom-'.$id);
		return true;
	}
	if (!$rows = get_cache('module-posts-block-last-custom-'.$id))
	{
		$where = null;
		$op['total'] = !isset($op['total']) || intval($op['total']) <= 0? 10 : intval($op['total']);
		$op['cat'] = !isset($op['cat']) || intval($op['cat']) <= 0? 0 : intval($op['cat']);
		$op['hits'] = !isset($op['hits']) || strtolower($op['hits']) != 'true'? false : true;
		$op['order'] = !isset($op['order'])? 'DESC' : strtoupper($op['order']);
		$op['order'] = $op['order'] != 'DESC' && $op['order'] != 'ASC' && $op['order'] != 'RAND'? 'DESC' : $op['order'];
		
		if ($op['cat'] > 0)
		{
			$categories = &posts_categories();
			$where = 'FIND_IN_SET('.$op['cat'].', post_categories)';
			if (isset($categories[$op['cat']]['term_parent']) && $categories[$op['cat']]['term_parent'] == 0)
			{
				foreach ($categories as $c)
				{
					if ($c['term_parent'] != $op['cat']) continue;
					$where .= ' OR FIND_IN_SET('.$c['term_id'].', post_categories)';
				}
			}
			$where = 'AND ('.$where.')';
		}
		
		global $d;

		$query = "SELECT post_title, post_name, post_id, post_hits FROM `#__posts` WHERE post_approve='1' AND post_date <= '".time_now."' ".$where." ORDER BY ".($op['order'] == 'RAND'? 'RAND()' : ($op['hits'] == 1? "post_hits {$op['order']}" : "post_date {$op['order']}, post_id {$op['order']}"))." LIMIT {$op['total']}";
		$rows = $d->get_row($query);
		
		if ($op['order'] != 'RAND')
		{
			set_cache('module-posts-block-last-custom-'.$id, $rows);
		}
	}
	if (is_array($rows) && count($rows))
	{
		global $options;
	
		$html = '<ul class="apadana-block-last-posts-custom'.(isset($op['cat']) && intval($op['cat']) > 0? ' apadana-block-last-posts-cat-'.intval($op['cat']) : null).'">'.n;
		foreach ($rows as $row)
		{
			$row['post_title'] = nohtml($row['post_title']);
			if (apadana_strlen($row['post_title']) > 30)
			{
				$row['post_title'] = apadana_substr($row['post_title'], 0, 27);
				$row['post_title'] .= ' ...';
			}
			$html .= '<li><a href="'.url('posts/'.($options['rewrite'] == 1? $row['post_name'] : $row['post_id'])).'">'.$row['post_title'].'</a>'.($op['hits'] === true? '<span> '.$row['post_hits'].' بازدید</span>' : null).'</li>'.n;
		}
		$html .= '</ul>';
	}
	else
	{
		$html = 'هیچ پستی وجود ندارد!';
	}
	return $html;
}

و سپس از نام last_posts_custom برای تابع بلوک استفاده کنید، نمونه تنظیمات اختصاصی این تابع به صورت زیر می باشد.

 

[- options -]
total = 10
hits = false
order = DESC
cat = 0

 

دستور total تعداد کل پست ها را مشخص می کند و فقط می تواند عدد باشد.

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

دستور order نوع چینش نتایج را مشخص می کند و می تواند دارای مقدار DESC به معنای چینش نزولی و ASC به معنای چینش صعودی و RAND به معنای انتخاب به صورت تصادفی باشد.

دستور cat موضوع را مشخص می کند، در صورت تمایل برای محدود کردن نتایج به یک موضوع خاص می توانید شماره (ID) موضوع مورد نظر را مشخص کنید.

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

peterjames:
خیلی عالی

دستتون درد نکنه
appweb:
خیلی این تابع بهم کمک کرد ممنون از پست عالیت
lower:
سلام خسته نباشيد براي تبليغات متني تابع وجود ندارد؟ اگر ميشه بگيد چگونه بذارم
------------------------------------------------------------------------------------
msdn:
تو سایت ماژول وجود داره. تو ضیحات کاملش رو بخونید
p60download:
سلام بجه ها من زمانی که فایل custom-file رو می سازم ستیم بالا نمیاد اگه می شه یکی کمکم کنه ؟
------------------------------------------------------------------------------------
msdn:
حتما یه کدی توش گذاشتیذ که باعث مشکل سیستم میشه

دیدگاهی بفرست ...



نام شما
ايميل (منتشر نخواهد شد)
آدرس وبسايت
کد امنيتي   
 

سامانه کاربری

نام کاربری
پسورد
 

کاربران آنلاین

 chain 82.223.xx.xx
 chain 69.30.xx.xx
 chain 69.162.xx.xx
 chain 54.224.xx.xx
 chain 51.255.xx.xx
 chain 24.59.xx.xx
 chain 154.245.xx.xx

اطلاعات آماری

  • کاربران عضو شده امروز: 1
  • کاربران عضو شده دیروز: 1
  • کاربران عضو شده ماه: 15
  • تعداد کل کاربران: 2927
  • تعداد کل پست ها: 20
  • تعداد کل نظرات: 139
  • بازدید دیروز: 610
  • بازدید امروز: 93
  • بازدید ماه: 4168
  • بازدید سال: 44766
  • بازدید کل: 1169269