69b9b1e7993169c3e1c40e1b6a942463

دوباره حق حق گریه، دوباره آه
سلام بی تو به عکست به هر پگاه

منی که مرده ام اینجا بدون تو
تویی که خفته ای آنجا چو تکه ماه

4369a9c7951a8b60333d29d9bea3ac72

من دارم از این گور خالی میکنم دل
از سوگواری های عالی میکنم دل

از این مسافر های گرد از راه رفته
از چشم خیس و راه خالی میکنم دل

849fc5c969613c90dc5dadcd3b864d47

من شبی خواب تو را دیدم و شیدا گشتم
از خودم گم شدم و در تو هویدا گشتم

قصر رنگین و قمر، قرص و هوا، بی مانند
این همه بود و تو را دیدم و پیدا گشتم

6429aed0c33cd4fa24863a9a8a14ec27

نم نم قطره ی بارون
روی گونه ی خیابون

توی دریای خیالت
میزنه موج پریشون

61d6899b684c1b132394651d1cc45556

جامی از نور به دستان شب است.

پلک خود میبندم

تا در اندیشه ی دل، با ماه، پرواز کنم.

نمایش یک Extrafield خاص در k2

سه شنبه, 11 تیر 1392 ساعت 09:04

سلام

چندی پیش یکی از دوستان این سایت از من سوالی پرسیدند مبنی بر قابلیت نمایش یک اکسترافیلد خاص k2 در محل خاصی از صفحه.

امروز میخوام راه این مسئله رو طی یک مقاله کوتاه بنویسم.

 در قالب k2 ای که داریم (و یا قالب دیفالت خود k2) فایل های زیر رو توضیح میدم:

category_item.php

 وقتی نوع منو ی categories رو انتخاب میکنیم، هر یک آیتم ای که نمایش داده میشه از این فایل خونده میشه.

latest_item.php

وقتی نوع منو ی Latest items from (one or more) users or categories رو انتخاب میکنیم، هر یک آیتم ای که نمایش داده میشه از این فایل خونده میشه.

item.php

این هم که مشخصه، نمایش تکی یک آیتم هست.

 
خوب حالا فرض کنید ما در فایل category_item.php میخوایم قابلیت این رو ایجاد کنیم که یکی از اکسترافیلد هامون رو نشون بدیم.
به عنوان مثال، توی سایت های خبری قابلیت عنوان دوم و یا پیش عنوان.
 
کافیه ما کد زیر رو در قسمتی که میخوایم قرار بدیم (البته کار های HTML ای که باید انجام بشه هم خود دوستان باید بلد باشند)
 
<?php
require_once (JPATH_ADMINISTRATOR.DS.'components'.DS.'com_k2'.DS.'lib'.DS.'JSON.php'); //By Hossein
$json = new Services_JSON;

$extraFields = $json->decode($this->item->extra_fields);
$tempExf = array();

foreach ($extraFields as $exf)
{
$tempExf = null;
$tempExf[$exf->id] = $exf->value;
}
$this->item->extra_fields = $tempExf;
?>
<?php echo @$this->item->extra_fields[$extrafieldID]; ?>

در k2 اکسترافیلد ها به شکل unicode ذحیره میشوند و به همین علت اگر ما در دیتابیس به آنها نگاه کنیم کد های کاراکتر های فارسی را میبینیم و نه خود آن ها را.

برای تبدیل این کد ها به کاراکتر های قابل فهم برای انسان، ما از کلاس Json که خود k2 دارد استفاده کرده ایم.

در خط آخر نیز، $extrafieldID شماره ی شناسه ی اکسترافیلدی است که میخواهیم نمایش بدهیم.

البته این موضوع در مورد نمایش تک آیتم کاملا متفاوت است، چرا که خود k2 زحمت این تبدیل را هنگام بارگزاری یک مطلب برای ما میکشد.

لذا در فایل item.php فقط لازم است به این طریق extrafield مورد نظر خود را پیدا کنید:

<?php if($this->item->params->get('itemExtraFields') && count($this->item->extra_fields)): ?>
<!-- Item extra fields -->
<div class="myextrafield">
foreach ($this->item->extra_fields as $key=>$extraField){
if($extraField->name == 'myextrafield' AND $extraField->value){
echo $extraField->value;
}
}
?>
<div class="clr"></div>
</div>
<?php endif; ?>

در اینجا myextrafield نامی است که ما برای extrafield خود معین کرده ایم.

بقیه ی کد واضح به نظر میرسه. اگر مشکلی بود توی کامنت ها در خدمت هستم.

موفق و پیروز باشید

یا علی

تعداد بازدید 7717 دفعه

نوشتن دیدگاه


/component/jcomments/captcha/26705.html
تصویر امنیتی جدید

استفاده از مطالب با ذکر منبع بلا مانع است.