battle69

اضافه کردن فیلد جدید به k2

21 پست در این موضوع

سلام دوستان.

در k2 وقتی میخوایم مطلب جدید منتشر کنیم یک فیلد دیگه یعنی در واقع به عنوان تیتر دوم مطلب میخوام اضافه کنم.

با ویرایش کدها الان یک باکس جدید در کنار سایر باکس*ها با عنوان دلخواهم قرار دادم.

در دیتابیس در جدول مربوطه (jos_k2_items) هم فیلد جدیدی اضافه کردم. مقدارش هم الان null هست.

چه طوری باید به K2 معرفی کنم که این فیلد جدید که در دیتابیس ساختم و باکسش هم الان در صفحه افزودن مطلب وجود داره مطالبی که در اون باکس ذخیره میشه در اون فیلد جدید دیتابیس قرار بگیره؟؟

چون الان بعد از ذخیره مطلب هیچ اتفاقی نمی*افته. یعنی محتویات اون باکس جدید که اضافه کردم ذخیره نمیشه.

لطفا راهنمایی کنید. ممنون

Share this post


Link to post
Share on other sites
آموزش ووکامرس قالب جوملا قالب وردپرس قالب رایگان وردپرس قالب رایگان جوملا هاست نامحدود هاست جوملا هاست لاراول هاست وردپرس هاست ارزان هاست ربات تلگرام خرید دامنه آموزش ساخت ربات تلگرام با php آموزش لاراول آموزش cPanel آموزش php آموزش فرم ساز RSform آموزش ساخت ربات جذب ممبر آموزش ساخت ربات دوستیابی آموزش ساخت ربات فروشگاهی برای ووکامرس آموزش طراحی سایت داینامیک با php آموزش بخش پشتیبانی با rsticket

ارسال شده در (ویرایش شده)

دوست عزیز با k2 نمی دونم ولی برای com_content جوملا می تونی از این آموزش استفاده کنی ، زیاد هم سخت نیست

http://www.prodevtips.com/2009/08/06/adding-custom-columns-to-joomla-articles/

البته فکر کنم خودتون هم از این آموزش استفاده کرده باشین ؟؟

به اینا هم یه نگاهی بنداز :

http://forum.joomla.org/viewtopic.php?p=2647626

http://stackoverflow.com/questions/3861498/how-to-display-extra-fields-in-article-with-k2

https://www.google.com/#sclient=psy-ab&hl=en&biw=1280&bih=904&source=hp&q=add+custum+field+to+k2+articles&pbx=1&oq=add+custum+field+to+k2+articles&aq=f&aqi=q-w2&aql=1&gs_sm=e&gs_upl=681l4845l1l5034l10l9l0l0l0l1l1355l8379l6-1.6l7l0&bav=on.2,or.r_gc.r_pw.r_cp.,cf.osb&fp=b51692884319164b

ویرایش شده در توسط amin.poorsaeed

Share this post


Link to post
Share on other sites

با سلام،

مگه خود k2، فیلدهای سفارشی نداره که شما می خواهید دستی این کار رو انجام بدید؟

Share this post


Link to post
Share on other sites
دوست عزیز با k2 نمی دونم ولی برای com_content جوملا می تونی از این آموزش استفاده کنی ، زیاد هم سخت نیست

http://www.prodevtips.com/2009/08/06/adding-custom-columns-to-joomla-articles/

البته فکر کنم خودتون هم از این آموزش استفاده کرده باشین ؟؟

به اینا هم یه نگاهی بنداز :

http://forum.joomla.org/viewtopic.php?p=2647626

http://stackoverflow.com/questions/3861498/how-to-display-extra-fields-in-article-with-k2

https://www.google.com/#sclient=psy-ab&hl=en&biw=1280&bih=904&source=hp&q=add+custum+field+to+k2+articles&pbx=1&oq=add+custum+field+to+k2+articles&aq=f&aqi=q-w2&aql=1&gs_sm=e&gs_upl=681l4845l1l5034l10l9l0l0l0l1l1355l8379l6-1.6l7l0&bav=on.2,or.r_gc.r_pw.r_cp.,cf.osb&fp=b51692884319164b

سلام. ممنون. لینک*هایی که فرستادید رو بررسی میکنم مشکلی بود میگم.

نه خودم تا این مرحله از آموزش خاصی استفاده نکردم!

Share this post


Link to post
Share on other sites
با سلام،

مگه خود k2، فیلدهای سفارشی نداره که شما می خواهید دستی این کار رو انجام بدید؟

سلام. تا جاییکه من میدونم فیلدهای سفارشی رو میشه برای هر مجموعه به صورت جدا تعریف کرد. درست میگم؟

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

Share this post


Link to post
Share on other sites

من لینکهایی که آقای پورسعید زحمت کشیدند رو بررسی کردم.

متاسفانه مشکلم هنوز باقیه.

یعنی نمیدونم چی کار کنم تا فیلد جدیدی که در K2 ایجاد کردم محتویاتش در فیلد جدیدی که در دیتابیس ساختم ذخیره شه. یعنی این دو تا رو چه جوری به هم لینک بدم؟

در خود جوملا ظاهرا از این طریقه:

to libraries/joomla/database/table/content.php

Add

$form->set('article_image', $row->article_image);

Share this post


Link to post
Share on other sites
سلام. تا جاییکه من میدونم فیلدهای سفارشی رو میشه برای هر مجموعه به صورت جدا تعریف کرد. درست میگم؟

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

خوب وقتی خود k2 این امکان رو داشته باشه، دست کاری کردن و هکش کار درستی نیست. چون یادتون نگه دارید که وقتی این افزونه نسخه جدیدش بیاد، می تونه همه معادلات شما رو به هم بریزه!

در نهایت اگه خیلی مجموعه هاتون زیاد باشه می تونین با طراحی یک یا چند query متناسب در mysql این عمل رو راحت تر انجام بدید.

پیروز باشید

Share this post


Link to post
Share on other sites
خوب وقتی خود k2 این امکان رو داشته باشه، دست کاری کردن و هکش کار درستی نیست. چون یادتون نگه دارید که وقتی این افزونه نسخه جدیدش بیاد، می تونه همه معادلات شما رو به هم بریزه!

در نهایت اگه خیلی مجموعه هاتون زیاد باشه می تونین با طراحی یک یا چند query متناسب در mysql این عمل رو راحت تر انجام بدید.

پیروز باشید

درسته.

حالا کاریه که شده! چون 90 درصد کار رو انجام دادم و فقط لینک این فیلد به db مونده.

جهت آپدیت k2 هم حواسم به این مسئله خواهد بود.

خودم هم کنجکاو شدم که ببینم چه طوری میشه این فیلد رو به دیتابیس لینک داد.

اگه در این زمینه میتونید لطفا بیشتر راهنمایی کنید.

ممنونم

Share this post


Link to post
Share on other sites

الان از طریق دیتابیس و فیلد جدیدی که ساختم وقتی مطلبی قرار میدم و از طریق خود دیتابیس ذخیره میکنم با توجه به تنظیماتی که کردم در سایت اون مطلب نشون داده میشه.

ولی وقتی از ادمین جوملا میام مطلب رو ویرایش کنم و ذخیره کنم تغییری انجام نمیشه. (البته اون متنی که از طریق دیتابیس وارد کرده بودم رو در ادمین جوملا میبینم و وقتی تغییرش میدم هیچ تغییری نمیکنه و همون قبلی میمونه)

Share this post


Link to post
Share on other sites

باشه battle69

حالا که این قدر راغب هستید بدونید، دانلود می کنم و دقیقا بهتون میگم.

شکیبا باشید ...

Share this post


Link to post
Share on other sites

سلام،

مدل خیلی حجیمی داره.

من دقیقا فیلد جدیدی اضافه نکردم تا ببینم قضیه ای که نوشتم درسته یا نه. ولی از اونجا که از JTable استفاده کرده بود، این کار رو انجام بدید ببینید نتیجه چی میشه:

اسم فیلد جدیدتون رو به شکل متغیر در ابتدای فایل JOOMLA/administrator/components/com_k2/tables/k2item.php اونجایی که متغیرها به شکل Null تعریف شده اند، اضافه کنید.

مثلا اگه اسم فیلد شما example باشه، این کد رو به ادامه اضافه کنید:

var $example = null;

اگه نشد بگید تا باز چک کنم.

پیروز باشید

Share this post


Link to post
Share on other sites

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

ولی هنوز مشکل هست

Share this post


Link to post
Share on other sites
خیلی ممنونم. این کار رو قبلا انجام داده بودم. هنوز هم این قسمت در کدهای اصلیم وجود داره.

ولی هنوز مشکل هست

خوب دوست عزیزم،

یه راه حل دو مرحله ای برات آماده کردم:

1) یک فیلد به item.xml اضافه کن. من اسمشو example گذاشتم.

2) برو به همون فایلی که گفتم متد زیر رو اضافه کن:

  function store()
  {
	parent::store();
	if($this->_db->insertid())
		$last_id = $this->_db->insertid();
	else
		$last_id = JRequest::getVar('id');
	$data = JRequest::getVar('params', array(), 'post', 'array'); 

	$query = "UPDATE `#__k2_items` SET `example` = '{$data['example']}' WHERE `id` =".$last_id;

	$this->_db->setQuery( (string)$query );
	if (!$this->_db->query()) {
		$this->setError($this->_db->getErrorMsg());
		return false;
	}		
}

پیروز باشید

Share this post


Link to post
Share on other sites
خوب دوست عزیزم،

یه راه حل دو مرحله ای برات آماده کردم:

1) یک فیلد به item.xml اضافه کن. من اسمشو example گذاشتم.

2) برو به همون فایلی که گفتم متد زیر رو اضافه کن:

  function store()
  {
	parent::store();
	if($this->_db->insertid())
		$last_id = $this->_db->insertid();
	else
		$last_id = JRequest::getVar('id');
	$data = JRequest::getVar('params', array(), 'post', 'array'); 

	$query = "UPDATE `#__k2_items` SET `example` = '{$data['example']}' WHERE `id` =".$last_id;

	$this->_db->setQuery( (string)$query );
	if (!$this->_db->query()) {
		$this->setError($this->_db->getErrorMsg());
		return false;
	}		
}

پیروز باشید

خوب خیلی ممنون. ولی متأسفانه هنوز جواب نداده.

اول در فایل administrator/components/com_k2/models/item.xml کد زیر رو قرار دادم:

    <param name="example" type="list" default="" label="example" description="">
   </param>

و بعد این function store که شما گفتید رو عینا در انتهای فایل administrator/components/com_k2/tables/k2item.php قرار دادم. و فقط جای example همون نامی که خودم در نظر گرفته بودم رو قرار دادم

Share this post


Link to post
Share on other sites

سلام،

ببین عزیزم، من فایل ها ی بخش مدیریت رو برات آپ کردم. پارامتری که نوشتی درست نبود. وقتی ثبت می خوای کنی برگه های بغل رو بررسی کن. توش example مشخصه.

یا علی

Share this post


Link to post
Share on other sites

آقا ممنون. بالاخره جواب داد.

اما تا اون چیزی که من میخوام هنوز یه ذره فاصله داره.

یعنی الان طبق همون چیزی که خودتون گفتید در اون برگه های بغل یعنی قسمت پارامترها اومده و وقتی فیلد مربوطه رو پر میکنم در سایت هم نشون میده.

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

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

من میخوام مستقیم در همین باکسی که ایجاد کردم بتونم مطلب example رو ویرایش و یا اضافه کنم. چی کار باید بکنم؟

خیلی ممنونم

Share this post


Link to post
Share on other sites

آقا یه مطلب دیگه.

وقتی function store که شما زحمت کشیدید رو قرار میدم دکمه "اجرا" از کار می افته.

یعنی منظورم همون گزینه ای هست که وقتی میزنیم تغییرات مطلب رو ذخیره میکنه ولی از مطلب خارج نمیشه.

الان وقتی اجرا رو میزنم، تغییرات اعمال میشه ولی از مطلب خارج میشه و میره به صفحه مدیریت مطالب.

ولی وقتی function store رو حذف کنم درست میشه.

Share this post


Link to post
Share on other sites

ببینید اون مطلبی که من به شما گفتم یه راه دررو بود.

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

یا اون رو توی گروه توسعه دهندگان سوال کنید:

http://groups.google.com/group/joomla-dev-general

یا توی فروم اصلی خود k2.

پیروز باشید

Share this post


Link to post
Share on other sites
ببینید اون مطلبی که من به شما گفتم یه راه دررو بود.

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

یا اون رو توی گروه توسعه دهندگان سوال کنید:

http://groups.google.com/group/joomla-dev-general

یا توی فروم اصلی خود k2.

پیروز باشید

چشم. ممنون. تا همین جا هم خیلی کمک کردید. متشکرم

Share this post


Link to post
Share on other sites

با سلام

روش دومی که بهتون گفتم مربوط به پارامترهای کامپوننت بود. دلیل این که به همون صفحه موقع apply برنمی گشت این بود که یه return true; که برای تصدیق هست در انتها فراموش کرده بودم براش تعبیه کنم.

ولی جالب این که متوجه شدم همون شیوه ی اول برای این جواب میده. فایل های مدیریت رو براتون ضمیمه کردم.

پیروز باشید

Share this post


Link to post
Share on other sites
با سلام

روش دومی که بهتون گفتم مربوط به پارامترهای کامپوننت بود. دلیل این که به همون صفحه موقع apply برنمی گشت این بود که یه return true; که برای تصدیق هست در انتها فراموش کرده بودم براش تعبیه کنم.

ولی جالب این که متوجه شدم همون شیوه ی اول برای این جواب میده. فایل های مدیریت رو براتون ضمیمه کردم.

پیروز باشید

سلام. خیلی ممنونم. بالاخره الحمدلله حل شد. خیلی زحمت کشیدید

Share this post


Link to post
Share on other sites

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری