0
我對Joomla非常陌生,1.6也很新,看起來好像很麻煩,因爲我在模塊後端將數據保存到模塊params字段時遇到了一些麻煩。使用ajax保存模塊參數的模塊開發問題
讓我更好地解釋一下。
我有一個小的聯繫人管理器,我希望人們使用Joomla 1.6中的joomla模塊進行訂閱。現在模塊已經創建好了,一切正常。我甚至在模塊後端創建了一個自定義字段來調用我的API並使用所需數據填充下拉框。
我希望能夠將選擇保存爲模塊參數,以便在我的模板中輕鬆訪問它。這似乎很難做到,因爲我無法找到任何文檔。
基本上我的過程如下。
- 我去Joomla的模塊管理器 admin。
- 我選擇我已安裝的模塊,並打開 。
- 該代碼運行時會填充 下拉框,其中聯繫人可以訂閱的數量爲 。
- 起腳 - 我希望能夠 選擇列表名稱,並平變化保存ID 到模塊PARAMS字段中 的Joomla DB與阿賈克斯 請求 -
我得到的onchange事件工作,甚至運行與發佈請求的腳本,但在我用來處理帖子和保存數據我不能讓數據庫實例做任何操作的PHP文件。那說明,下面的代碼:在模塊後端
自定義字段
defined('_JEXEC') or die('Direct Access to this location is not allowed.');
jimport('joomla.html.html');
//import the necessary class definition for formfield
jimport('joomla.form.formfield');
// Include API utility file
require_once(dirname(__FILE__) . '/../lib/pmailer_subscription_api.php');
/**
* Defines the JFormFieldLists class for the pMailer subscription module for
* Joomla CMS version 1.6 to get the lists provided the API key.
*
* @category Joomla
* @package Modules
* @copyright 2011 Prefix Technologies Pty (Ltd) (http://www.prefix.co.za/)
* @link http://www.pmailer.co.za/
*/
class JFormFieldLists extends JFormField
{
/**
* The form field type.
*
* @var string
* @since 1.6
*/
protected $type = 'lists'; //the form field type
/**
* Method to retrieve the lists that resides in your pMailer account using
* the API.
*
* @return array The field option objects.
* @since 1.6
*/
protected function getInput()
{
$document = JFactory::getDocument();
$document->addScript(
JURI::base() . '../modules/mod_pmailer_subscription/lib/'
. 'mod_pmailer_subscription.js'
);
$options = array();
$attr = '';
/*
* Initialize JavaScript field attributes. This is the path to the
* ajax handler that will save your list selection.
*/
$attr .= $this->element['onchange'] = (string)
'onchange="javascript: saveListSelection(\''
. JURI::base()
. '../modules/mod_pmailer_subscription/lib/utils.php'
. '\')"';
// Get the database instance
$db = JFactory::getDbo();
// Build the select query
$query = 'SELECT params FROM jos_modules'
. ' WHERE module="mod_pmailer_subscription"';
$db->setQuery($query);
$params = $db->loadObjectList();
// Decode the options to get thje api key and url
$options = json_decode($params[0]->params, true);
// Create a new API utility class
$api = new PMailerSubscriptionApiV1_0(
$options['enterprise_url'],
$options['pmailer_api_key']
);
// Get the lists needed for subscription
$response = $api->getLists();
// Make a default entry for the dropdown
$lists = array('0' => 'Please select a list');
// Builds the options for the dropdown
foreach ($response['data'] as $list)
{
$lists[$list['list_id']] = $list['list_name'];
}
// The dropdown output
return JHTML::_(
'select.genericlist',
$lists,
'mod_pmailer_lists_box',
trim($attr),
'id',
'title',
$this->value
);
}
}
,節約帕拉姆
JavaScript的
的實用程序文件// Gets called on dropdown change event
function saveListSelection(url)
{
// Ajax code here to save list selection
var x = new Request({
url: url,
method: 'post'
}).send('op=saveList&id=' + $('mod_pmailer_lists_box').get('value'));
}
我希望你能給我一些建議,告訴我如何做到這一點,我就像瘋了似的卡住。唯一的限制是它必須是一個模塊。老闆的命令。
哈哈沒有人喜歡Joomla了,我可以聯繫;) – 2011-05-04 12:14:41