Есть ситуация, когда нужно прочесть из БД Joomla из таблицы какого-то модуля данные, при этом есть необходимость прочесть данные в отдельный файл из которого они загружаются в интерфейс через Ajax запрос посредством JavaScript/jQuery. Ниже приведен код серверной и клиентской части для реализации данного взимодействия.
<?php define( '_JEXEC', 1); // This will allow to access file outside of joomla. //defined( '_JEXEC') or die( 'Restricted access' );// Use this if you wanna access file only in Joomla. define( 'DS', DIRECTORY_SEPARATOR ); define('JPATH_BASE', $_SERVER['DOCUMENT_ROOT'] . DS . ''); require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' ); require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' ); //create application $mainframe = &JFactory::getApplication('site'); function getField($file_alias){ // Get a db connection. $db = JFactory::getDbo(); // Create a new query object. $query = $db->getQuery(true); // Select all records from the user profile table where key begins with "custom.". // Order it by the ordering field. $query->select($db->quoteName(array('file_id', 'file_title', 'file_alias', 'url_download'))); $query->from($db->quoteName('#__jdownloads_files')); $query->where($db->quoteName('file_alias') . ' LIKE '. $db->quote($file_alias)); //$query->order('ordering ASC'); // Reset the query using our newly populated query object. $db->setQuery($query); // Load the results as a list of stdClass objects (see later for more options on retrieving data). $results = $db->loadObjectList(); return $results[0];//Данные потом получить в виде свойств объекта ClassName::getFieldDocument($fileName, $userId)->fieldName } $arrData = array( "file_alias"=>$_REQUEST['file_alias'], "url_download"=>getField($_REQUEST['file_alias'])->url_download, "file_id"=>getField($_REQUEST['file_id'])->url_download, "file_title"=>getField($_REQUEST['file_id'])->file_title ); echo json_encode($arrData);<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1"></span>
function readPrices(data){ var jsonString = $.ajax({ url: "server.php", data:data, dataType:'JSON', async: false, success: function(data){} }).responseText; return JSON.parse(jsonString); }; // var url = "my-url-data"; var jsonData = readPrices({"file_alias":url}); console.log(jsonData);