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

تبلیغات

آموزش نمایش تصاویر آخرین پست های یک موضوع

3 دیدگاه طراحی قالب، توابع بلوک ها
آموزش نمایش تصاویر آخرین پست های یک موضوع

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


ابتدا کدهای زیر را به فایل functions.php قالب خود اضافه کنید، در صورتی که این فایل وجود ندارد آن را بسازید و دقت کنید که در خط اول این فایل برای اجرای دستورات PHP باید کد <?php را قرار دهید.

function block_last_posts_images($op = null, $id = null, $position = null)
{
	if ($op == 'remove-cache')
	{
		remove_cache('module-posts-block-last-posts-images-'.$id);
		return true;
	}

	if (!$posts = get_cache('module-posts-block-last-posts-images-'.$id))
	{
		$where = null;
		$op['total'] = !isset($op['total']) || intval($op['total']) <= 0? 5 : intval($op['total']);
		$op['cat'] = !isset($op['cat']) || intval($op['cat']) <= 0? 0 : intval($op['cat']);

		if ($op['cat'] > 0)
		{
			$categories = &posts_categories();
			$where = 'FIND_IN_SET('.$op['cat'].', p.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'].', p.post_categories)';
				}
			}
			$where = 'AND ('.$where.')';
		}

		$posts = get_posts(array(
			'tags' => 0,
			'fields' => 0,
			'where' => $where,
			'limit' => array(0, $op['total'])
		));
		set_cache('module-posts-block-last-posts-images-'.$id, $posts);
	}

	if (is_array($posts) && count($posts))
	{
		global $options;

		$op['file'] = !isset($op['file']) || empty($op['file']) || !file_exists(template_dir.$op['file']) || strpos($op['file'], '..') !== false? 'last-posts-images.tpl' : $op['file'];
		$op['number-of-letters'] = !isset($op['number-of-letters']) || intval($op['number-of-letters']) <= 0? 100 : intval($op['number-of-letters']);
		$itpl = new template($op['file'], template_dir);

		foreach ($posts as $row)
		{
			$row['post_text'] = strip_tags($row['post_text']);
			$row['post_text'] = apadana_strlen($row['post_text']) > $op['number-of-letters']? apadana_substr($row['post_text'], 0, $op['number-of-letters']-4) . ' ...' : $row['post_text'];
			$tags = array(
				'{url}' => url('posts/'.($options['rewrite'] == 1? $row['post_name'] : $row['post_id'])),
				'{pdf}' => url('posts/pdf/'.$row['post_id']),
				'{print}' => url('posts/print/'.$row['post_id']),
				'{id}' => $row['post_id'],
				'{title}' => $row['post_title'],
				'{author}' => $row['post_author_alias'] == ''? $row['post_author_neme'] : $row['post_author_alias'],
				'{author-profile}' => url('account/profile/'.$row['post_author_neme']),
				'{author-url}' => url('posts/author/'.$row['post_author_neme']),
				'{image}' => $row['post_image'],
				'{description}' => $row['post_text'],
				'{hits}' => $row['post_hits'],
				'{comment-count}' => $row['post_comment_count'],
				'replace' => array(
				'|{date format=[\'"](.+?)[\'"]}|es' => 'jdate("\\1", "'.$row['post_date'].'")',
				)
			);
			if (!empty($row['post_image']))
			{
				$tags['[image]'] = null;
				$tags['[/image]'] = null;
				$tags['replace']['#\\[not-image\\](.*?)\\[/not-image\\]#s'] = null;
			}
			else
			{
				$tags['[not-image]'] = null;
				$tags['[/not-image]'] = null;
				$tags['replace']['#\\[image\\](.*?)\\[/image\\]#s'] = null;
			}
			if ($row['post_fixed'] == 1)
			{
				$tags['[fixed]'] = null;
				$tags['[/fixed]'] = null;
				$tags['replace']['#\\[not-fixed\\](.*?)\\[/not-fixed\\]#s'] = null;
			}
			else
			{
				$tags['[not-fixed]'] = null;
				$tags['[/not-fixed]'] = null;
				$tags['replace']['#\\[fixed\\](.*?)\\[/fixed\\]#s'] = null;
			}
			if ($row['post_comment'] == 1)
			{
				$tags['[comment]'] = null;
				$tags['[/comment]'] = null;
			}
			else
			{
				$tags['replace']['#\\[comment\\](.*?)\\[/comment\\]#s'] = null;
			}
			$itpl->add_for('posts', $tags);
			$tags = null;
		}
		$posts = $row = null;
		return $itpl->get_var();
	}

	return false;
}

دو روش برای نمایش تصاویر وجود دارد استفاده از تابع last_posts_images برای یک بلوک و یا استفاده مستقیم از تگ در فایل body.tpl قالب، روش استفاده از تگ به صورت زیر می باشد:

 

{function name="block_last_posts_images" args="array('file'=>'images.tpl','total'=>5,'number-of-letters'=>50,'cat'=>0)|cache-name"}
 

برای نمایش تصاویر شما باید یک فایل بسازید که کدهای لازم را درون آن قرار دهید، نام این فایل images.tpl است که می توانید آن را تغییر دهید، در صورتی که فایل مذکور وجود نداشته باشید تابع از فایل پیشفرض استفاده خواهد کرد که نام آن last-posts-images.tpl می باشد.

متغیر total تعداد تصاویر قابل نمایش را مشخص می کند که در اینجا 5 مشخص شده و یا در صورتی که تعریف نشود به صورت پیشفرض 5 در نظر گرفته خواهد شد.

متغیر number-of-letters تعداد حروف توضیحات هر تصویر که با استفاده از متن پست تولید می شود را مشخص می کند که در اینجا 50 مشخص شده است، در صورتی که تعریف نشود 100 در نظر گرفته خواهد شد.

متغیر cat شماره و یا همان آی دی موضوع مورد نظر است، در بخش مدیریت موضوعات پست ها کنار عنوان هر موضوع یک عدد قرار دارد که شماره موضوع می باشد.

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

 

اما تگ هایی که در فایل قالب می توانید استفاده کنید:

[for posts]...[/for posts]: چرخه پست ها که در آن می توانید از تگ ها و شرط های زیر استفاده کنید.

{url}: آدرس پست را مشخص می کند.

{pdf}: آدرس دانلود فایل پی دی اف پست.

{print}: آدرس صفحه پرینت پست.

{id}: شماره پست.

{title}: عنوان پست.

{author}: نام نویسنده پست.

{author-profile}: آدرس پروفایل نویسنده پست.

{author-url}: آدرس مشاهده پست های نویسنده.

{image}: آدرس تصویر پست.

{description}: توضیحات کوتاه درباره پست.

{hits}: دفعات بازدید از پست.

{comment-count}: تعداد نظرات ثبت شده برای پست.

{date format="l j F Y ساعت g:i A"}: نمونه تگ برای نمایش تاریخ پست که می توانید فرمت آن را تغییر دهید.

 

و شرط های قابل استفاده در این چرخه:

[image]...[/image]: در صورتی که پست دارای تصویر باشد محتوای بین آن نمایش داده می شود.

[not-image]...[/not-image]: در صورتی که پست دارای تصویر نباشد محتوای بین آن نمایش داده می شود.

[fixed]...[/fixed]: در صورتی که پست ثابت باشد محتوای بین آن نمایش داده می شود.

[not-fixed]...[/not-fixed]: در صورتی که پست ثابت نباشد محتوای بین آن نمایش داده می شود.

[comment]...[/comment]: در صورتی که امکان ارسال نظر برای پست فعال باشد محتوای بین آن نمایش داده می شود.

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

persius:
images.tpl تو این چی باید بنویسیم؟مثال بزن لطفا
------------------------------------------------------------------------------------
iman92:
در انجمن نمونه گذاشتم (http://www.apadanacms.ir/community/thread-9.html)
mohamad zangane:
OK IMAN! آقا ایمان تو دیگه کی هستی؟ احسنت
------------------------------------------------------------------------------------
iman92:
قابلی نداشت!
vaseghi:
بسيار سپاسگزارم عزيزم بنده دوبار از سيستم شما استفاده مفيدي كردم واثقي

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



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

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

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

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

 chain 69.162.xx.xx
 chain 54.224.xx.xx
 chain 51.255.xx.xx
 chain 217.182.xx.xx
 chain 217.182.xx.xx
 chain 217.182.xx.xx
 chain 185.29.xx.xx
 chain 164.132.xx.xx
 chain 164.132.xx.xx
 chain 164.132.xx.xx
 chain 163.172.xx.xx
 chain 137.74.xx.xx

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

  • کاربران عضو شده امروز: 0
  • کاربران عضو شده دیروز: 0
  • کاربران عضو شده ماه: 13
  • تعداد کل کاربران: 2925
  • تعداد کل پست ها: 20
  • تعداد کل نظرات: 139
  • بازدید دیروز: 575
  • بازدید امروز: 214
  • بازدید ماه: 3679
  • بازدید سال: 44277
  • بازدید کل: 1168780