آی میتران

تجربه یک آنلاین متفاوت

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

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

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

ابتدا کدهای زیر را به فایل functions.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]: در صورتی که امکان ارسال نظر برای پست فعال باشد محتوای بین آن نمایش داده می شود.

اکنون شما می توانید با استفاده از تگ هایی که در بالا توضیح داده شده گالری مد نظری که کدنویسی کرده اید یا دانلود کرده اید را با سیستم هماهنگ نمایید. بددین صورت که کدها را در images.tpl جایگذاری می کنید و چرخه و ادرس تصاویر را با تگ های بالا هماهنگ می کنید.

 




مهران ایمانی هستم فارغ التحصیل رشته برق قدرت. عاشق طراحی در زمینه برق ، سایت و همچنین کد نویسی به زبان php هستم. امیدوارم بتونم دانشی رو که دارم از طریق آی میتران به اشتراک بذارم.

ارسال یک نظر جدید

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