×

คำเตือน

JFolder::create: Path not in open_basedir paths.

จากบทความ เริ่มต้นเขียนจูมล่าโมดูล (2.5/3.2)-ตอนที่ 1 ซึ่งได้พูดถึงรายละเอียดเบื้องต้นของการทำงานของจูมล่าโมดูล และการเขียนโค้ดเบื้องต้นในส่วนของไฟล์หลักของโมดูล และไฟล์ XML สำหรับอธิบายการติดตั้ง ในบทความนี้เราจะมาดูกันที่ตัว helper ซึ่งทำหน้าที่ในการโหลดข้อมูลจากฐานข้อมูล เนื่องจากโมดูลตัวนี้ทำหน้าที่ในการแสดงผลกำหนดการฝึกอบรมล่าสุดจากตัวคอมโพเนนท์ชื่อ RegOnline (com_regonline) ดังนั้นหลักการของเราคือเราจะใช้ข้อมูลจากโมเดลของตัวคอมโพเนนท์ในการแสดงรายการ โดยไม่มีการเขียน Query ใหม่แต่อย่างใดนะครับ

 

ไฟล์ที่เราจะพูดถึงในบทความตอนนี้ก็คือไฟล์ helper.php ซึ่งทำหน้าที่ในการโหลดข้อมูลครับ ดูไฟล์กันก่อน

class modRegonline_LatestHelper
{
	static function &getList(&$params)
	{
		jimport('joomla.application.component.model');
		JModel::addIncludePath(JPATH_ROOT.'/components/com_regonline/models', 'RegonlineModel');
		$document	= JFactory::getDocument();
		$app		= JFactory::getApplication();
		$model = JModel::getInstance('Schedules', 'RegonlineModel', array('ignore_request'=>true));
		$model->setState('list.limit', (int) $params->get('count', 2));
		$model->setState('list.start', 0);
		$model->setState('filter.ordering', $params->get('ordering'));
		$model->setState('filter.language', $app->getLanguageFilter());
		$model->setState('list.ordering', 'start_date');
		$model->setState('list.direction', 'DESC');
		
		$items = $model->getItems();
		return $items;
	}
}

 จากโค้ดตามที่กล่าวไปแล้วว่าเราจะใช้งานโมเดลของคอมโพเนนท์ ดังนั้นเราจึงต้องทำการเพิ่ม include path เพื่อให้ JModel ทำการค้นหาไฟล์ของโมเดล และในการเรียกใช้งานตอนสร้าง object เราต้องทำการส่งค่าพารามีเตอร์ ignore_request ไปด้วยเพื่อไม่ให้โมเดลเรียกใช้งาน populateState() เพื่อกำหนดค่า State จาก Session หรือ Request สามารถดูรายละเอียดเพิ่มเติมจาก การใช้งาน ignore_request ในโมเดล เพื่อทำความเข้าใจเพิ่มเติมนะครับ สำหรับในส่วนของโค้ดอื่นๆ ก็มีการกำหนดค่าพารามีเตอร์ผ่านโมเดล State เพื่อใช้ในการ Query แล้วจึงทำการส่งค่ารายการกลับเพื่อแสดงผล โดยฟังก์ชันนี้จะถูกเรียกใช้จากไฟล์หลักในบทความที่แล้ว คือ เริ่มต้นเขียนจูมล่าโมดูล (2.5/3.2)-ตอนที่ 1 

จะเห็นว่าในกรณีนี้เราไม่จำเป็นต้องเขียน Query สำหรับทำการทำงานของโมดูลเลย เราสามารถใช้ความสามารถของคอมโพเนนท์ที่มีอยู่แล้วได้เลย เพียงแต่ต้องทำความเข้าใจกับการทำงานของจูมล่าเท่านั้น สำหรับท่านใดที่ต้องการให้จัดอบรมการพัฒนาจูมล่าคอมโพเนนท์ หรือโมดูลและปลั๊กอินต่างๆ หรือต้องการให้พัฒนาให้กับท่านตามความต้องการก็สามารถติดต่อกับทีมงานได้เลยนะครับ

comments