ถามตอบ ปัญหาการพัฒนา 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 »
สืบเนื่องจากระทู้ที่สอบถามไปที่เป็นเพิ่มปุ่มใน config ของ mzc ครับ
(กระทู้ สอบถามวิธีเพิ่มปุ่มเปิดปิดใช้งานของปลั๊กอินในหน้าของ config)
ผมติ๊กรายการรหัสสำรอง และกดบันทึกครับ
- Joomla Development-1.png (17.97 KiB) Viewed 1016 times
หลังจากดบันทึกเสร็จปุ่มไม่ติ๊กให้ครับ
- Joomla Development-1.png (11.05 KiB) Viewed 1016 times
ต้องทำยังไงถึงจะกดบันทึกได้ครับ
ฟังก์ชัน event ในปลั๊กอินครับ
โค้ด: เลือกทั้งหมด
public function onBeforeEditConfigAdminFunction(&$view)
{
$jshopConfig = MZCFactory::getConfig();
$user_backupcode = $jshopConfig->user_backupcode ? 'checked="checked"' : '';
$view->etemplatevar = '
<tr>
<td class="key">
' . JText::_("PLG_SYSTEM_MZCBACKUPCODE_USAGE") . '
</td>
<td>
<input type="checkbox" name="user_backupcode" value="1" ' . $user_backupcode . '>
</td>
</tr>';
}
ลองใช้ event onBeforeSaveConfig ก็มีเก็บค่า user_backupcode ใน array ครับ
โค้ด: เลือกทั้งหมด
public function onBeforeSaveConfig(&$post, &$extconf)
{
print_r($post);
exit();
}
ผลที่ได้
โค้ด: เลือกทั้งหมด
Array ( [task] => apply [tab] => 8 [enable_wishlist] => 1 [use_rabatt_code] => 1 [shop_user_guest] => 0 [without_shipping] => 1 [without_payment] => 1 [admin_show_vendors] => 1 [admin_show_units] => 1 [use_extend_attribute_data] => 1 [tax] => 1 [stock] => 1 [shop_mode] => 0 [admin_show_delivery_time] => 1 [admin_show_product_related] => 1 [admin_show_product_bay_price] => 1 [admin_show_product_basic_price] => 1 [admin_show_weight] => 1 [user_backupcode] => 1 )
ใน array มีข้อมูลของ user_backupcode แต่ในแน่ใจในส่วนของบันทึกแล้วมันไม่ติ๊กครับ
-
tsukasaz
- PHP VIP Members
- โพสต์: 22067
- ลงทะเบียนเมื่อ: 18/04/2012 9:39 am
โพสต์ที่ยังไม่ได้อ่าน
โดย tsukasaz »
ลองใช้วิธีการเหมือนบันทึก config ของ plugin ครับ ถ้าเคยทำตั้งค่าใน plugin เวลาบันทึกมันจะเก็บเป็นรูปแบบ JSON ใน Field ชื่อ params ตาราง #__extensions ครับ
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 »
ผมลองเก็บบันทึกค่า config ของ plugin ในตาราง #__extensions เขียนฟังก์ชันแบบนี้ได้ไหมครับ
โค้ด: เลือกทั้งหมด
class PlgSystemMZCBackupCode extends CMSPlugin
{
public function getIdPlugin()
{
$plugin = JPluginHelper::getPlugin('system', 'mzcbackupcode');
return $plugin->id;
}
public function onBeforeEditConfigAdminFunction(&$view)
{
$param_backup = $this->getDataConfig($this->getIdPlugin());
$user_backup = json_decode($param_backup);
$user_backupcode = $user_backup->user_backupcode == 1 ? 'checked="checked"' : '';
$view->etemplatevar = '
<tr>
<td class="key">
' . JText::_("PLG_SYSTEM_MZCBACKUPCODE_USAGE") . '
</td>
<td>
<input type="checkbox" name="user_backupcode" value="1" ' . $user_backupcode . '>
</td>
</tr>';
}
private function getDisplay()
{
$param_backup = $this->getDataConfig($this->getIdPlugin());
$user_backup = json_decode($param_backup);
return $user_backup;
}
public function onBeforeAdminOptionPanelMenuDisplay(&$menu)
{
$user_backup = $this->getDisplay();
$menu['mzcbackupcode'] = array(JText::_('PLG_SYSTEM_MZCBACKUPCODE_USAGE'), 'index.php?option=com_mooziicart&controller=mzcbackupcode', 'mzc_product-comments.png', $user_backup->user_backupcode);
}
public function onBeforeAdminOptionPanelIcoDisplay(&$menu)
{
$user_backup = $this->getDisplay();
$menu['mzcbackupcode'] = array(JText::_('PLG_SYSTEM_MZCBACKUPCODE_USAGE'), 'index.php?option=com_mooziicart&controller=mzcbackupcode', 'mzc_user-groups.png', $user_backup->user_backupcode);
}
public function onBeforeSaveConfig(&$post, &$extconf)
{
$datas = 0;
foreach ($post as $key => $value)
{
if ($key == 'user_backupcode')
{
$datas = (int)$value;
break;
}
}
$data = $datas;
$this->getSaveCofing($datas, $this->getIdPlugin());
}
private function getSaveCofing($data, $idPlugin)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->qn('params'));
$query->from($db->qn('#__extensions'));
$query->where($db->qn('extension_id') . ' = ' . (int) $idPlugin);
$db->setQuery($query);
$original_params = $db->loadResult();
$params = new JRegistry($original_params);
$params->set('user_backupcode', $data);
$params_json = json_encode($params->toArray());
$query = $db->getQuery(true);
$query->update($db->qn('#__extensions'));
$query->set($db->qn('params') . ' = ' . $db->q($params_json));
$query->where($db->qn('extension_id') . ' = ' . (int) $idPlugin);
$db->setQuery($query);
$db->execute();
}
private function getDataConfig($idPlugin)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->qn('params'));
$query->from($db->qn('#__extensions'));
$query->where($db->qn('extension_id') . ' = ' . (int) $idPlugin);
$db->setQuery($query);
$original_params = $db->loadResult();
return $original_params;
}
}
-
-
- 0 ตอบกลับ
- 5519 แสดง
-
โพสต์ล่าสุด โดย aegmongkol
28/09/2021 5:31 pm
สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 3