ถามตอบ ปัญหาการพัฒนา Extension ไม่ว่าจะเป็น Module plugin Component หรือ แม้แต่ template การปรับแต่งโค้ด Joomla ต่างๆ ทุกเวอร์ชั่น 1.5 2.5 หรือ 3.x
Moderator: mindphp , ผู้ดูแลกระดาน
Thanapoom1514
PHP VIP Members
โพสต์: 4329 ลงทะเบียนเมื่อ: 04/07/2022 9:46 am
โพสต์ที่ยังไม่ได้อ่าน
โดย Thanapoom1514 » 07/10/2022 9:33 am
สอบถามครับ ถ้าผมจะเอาค่าจากค้นหาจากสินค้า ดึงค่าจากไหนหรอครับ เพื่อเอาไปทำเอาค่าไปเก็บ web storage ทำโมดูลแสดงประวัติค้นหาสินค้าครับ
โค้ดในไฟล์ helper.php
โค้ด: เลือกทั้งหมด
<?php
/**
* @package Module MooZiiCart History Search
* @subpackage mod_mzc_history_search
* @author Mindphp Developer Teams
* @copyright Copyright (C) 2022 Mindphp. All rights reserved.
* @license GNU General Public License version 2 or later;
*/
defined('_JEXEC') or die;
class ModMZCHistorySearch
{
public static function getProductId()
{
$input = JFactory::getApplication()->input;
if ($input->get('option') == 'com_mooziicart' && $input->get('task') == 'view')
{
return $input->get('product_id');
}
}
public static function getKeyword()
{
$input = JFactory::getApplication()->input;
if ($input->get('option') == 'com_mooziicart' && $input->get('controller') == 'search')
{
return $input->get('search');
}
}
public static function getConfigData($params)
{
$arr_config = array ();
$arr_config[] = 'data-item-limit="' . $params->get('data_item_limit', 5) . '"';
return $arr_config;
}
}
tsukasaz
PHP VIP Members
โพสต์: 21990 ลงทะเบียนเมื่อ: 18/04/2012 9:39 am
โพสต์ที่ยังไม่ได้อ่าน
โดย tsukasaz » 07/10/2022 2:34 pm
"คำค้นหา" ปกติจะส่งผ่านฟอร์มอยู่แล้ว เป็น GET หรือ POST ให้เช็คจากค่าที่ส่งตอนที่กด submit ตัวค้นหา
ใน joomla เวลาจะรับค่าจาก GET หรือ POST จะใช้ JFactory::getApplication()->input
ตัวอย่าง เวลาส่งค่า GET ผ่าน URL มา
http://localhost/index.php?name=test แล้วอยากจะดึงค่า name มาใช้
php ปกติ
ใน joomla โค้ด: เลือกทั้งหมด
<?php
$input = JFactory::getApplication()->input;
echo $input->get('name');
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995 )
Thanapoom1514
PHP VIP Members
โพสต์: 4329 ลงทะเบียนเมื่อ: 04/07/2022 9:46 am
โพสต์ที่ยังไม่ได้อ่าน
โดย Thanapoom1514 » 07/10/2022 5:43 pm
tsukasaz เขียน: ↑ 07/10/2022 2:34 pm
"คำค้นหา" ปกติจะส่งผ่านฟอร์มอยู่แล้ว เป็น GET หรือ POST ให้เช็คจากค่าที่ส่งตอนที่กด submit ตัวค้นหา
ใน joomla เวลาจะรับค่าจาก GET หรือ POST จะใช้ JFactory::getApplication()->input
ตัวอย่าง เวลาส่งค่า GET ผ่าน URL มา
http://localhost/index.php?name=test แล้วอยากจะดึงค่า name มาใช้
php ปกติ
ใน joomla โค้ด: เลือกทั้งหมด
<?php
$input = JFactory::getApplication()->input;
echo $input->get('name');
ถ้าเป็นฟอร์มแบบ post ผมเขียนแบบนี้ใช่ไหม
ถ้าใช่ ผมลองดึงค่า post ในฟอร์มของโมดูล mzc search ค้นหา ผมลองค้นหาและ echo ไม่ขึ้นแสดงให้ครับ
ฟอร์มของโมดูล mzc search
โค้ด: เลือกทั้งหมด
<h3>ค้นหาสินค้า</h3>
<form class="form-inline mod-shop-search" name = "searchForm" method = "post" action="/joomla_3_10/index.php?option=com_mooziicart&controller=search&task=result&Itemid=0" onsubmit = "return isEmptyValue(jQuery('#jshop_search').val())">
<input type="hidden" name="setsearchdata" value="1">
<input type = "hidden" name = "category_id" value = "0" />
<input type = "hidden" name = "search_type" value = "any" />
<input type = "text" class = "inputbox input-small" placeholder="ค้นหา" name = "search" id = "jshop_search" value = "" />
<input class = "button btn" type = "submit" value = "ค้นหา" />
tsukasaz
PHP VIP Members
โพสต์: 21990 ลงทะเบียนเมื่อ: 18/04/2012 9:39 am
โพสต์ที่ยังไม่ได้อ่าน
โดย tsukasaz » 07/10/2022 5:49 pm
ไม่มีคำสั่งนี้ครับ
อธิบายเพิ่มเติม
กรณีต้องการรับ GET หรือ POST แบบไม่เจาะจง คือ ส่งมาแบบ GET ก็ได้ POST ก็ได้ จะใช้
ถ้าต้องการรับค่าเฉพาะ POST ต้องใช้เป็น
ถ้าต้องการรับค่าเฉพาะ GET ต้องใช้เป็น
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995 )
Thanapoom1514
PHP VIP Members
โพสต์: 4329 ลงทะเบียนเมื่อ: 04/07/2022 9:46 am
โพสต์ที่ยังไม่ได้อ่าน
โดย Thanapoom1514 » 10/10/2022 1:29 pm
เหมือนผมลอง echo และกดค้นหาในโมดูล mzc search แล้วมันไม่ขึ้นแสดงข้อความที่ค้นหาขึ้นมาครับ
ไฟล์ helper.php
โค้ด: เลือกทั้งหมด
public static function getKeyword()
{
$input = JFactory::getApplication()->input;
if ($input->get('option') == 'com_mooziicart' && $input->get('controller') == 'search')
{
return $input->get('search');
}
}
ไฟล์ default.php
โค้ด: เลือกทั้งหมด
<?php if ($keyword = ModMZCHistorySearch::getKeyword()): ?>
<div class="mod-mzc-history-search-keyword hidden"><?php echo $keyword; ?></div>
<?php endif; ?>
ไฟล์ php
โค้ด: เลือกทั้งหมด
<?php
/**
* @package Module MooZiiCart History Search
* @subpackage mod_mzc_history_search
* @author Mindphp Developer Teams
* @copyright Copyright (C) 2020 Mindphp. All rights reserved.
* @license GNU General Public License version 2 or later;
*/
defined('_JEXEC') or die;
require_once __DIR__ . '/helper.php';
if (!file_exists(JPATH_SITE . '/components/com_mooziicart/mooziicart.php'))
{
JError::raiseError(500, "Please install component \"Mooziicart\"");
}
require_once (JPATH_SITE . '/components/com_mooziicart/lib/factory.php');
require_once (JPATH_SITE . '/components/com_mooziicart/lib/functions.php');
$config_data = ModMZCHistorySearch::getConfigData($params);
JText::script('MOD_MZC_HISTORY_SEARCH_WEB_STORAGE_NOT_SUPPORT');
JFactory::getDocument()->addStyleSheet(JUri::root() . 'modules/mod_mzc_history_search/assets/css/mod_mzc_history_search.css');
JFactory::getDocument()->addScript(JUri::root() . 'modules/mod_mzc_history_search/assets/js/mod_mzc_history_search.js');
require JModuleHelper::getLayoutPath("mod_mzc_history_search", "default");
ผมต้องดึงค่าจากที่ไหนหรอครับ ค้นหาคำสินค้า
tsukasaz
PHP VIP Members
โพสต์: 21990 ลงทะเบียนเมื่อ: 18/04/2012 9:39 am
โพสต์ที่ยังไม่ได้อ่าน
โดย tsukasaz » 11/10/2022 10:31 am
ลองปรับวิธีการดึงค่าเป็น
โค้ด: เลือกทั้งหมด
$input = JFactory::getApplication()->input->getArray();
echo $input['search'];
อีกจุดนึงตรงส่วนแสดงผลเห็นมี class ชื่อ hidden บาง template มันจะเป็น css สำหรับซ่อนครับ
Joomla Development-1.png (34.02 KiB) Viewed 647 times
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995 )
สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 95