Joomla3.0 用joomla编写定制php脚本

Joomla3.0 用joomla编写定制php脚本,joomla3.0,Joomla3.0,我擅长php和javascript。如果我从joomla调用ajax,我需要一个指南来指导我在哪里放置自定义php脚本 我需要从特定文件夹中获取文件名。我可以制作一个ajax,它将与我的php代码进行通信,作为回报,我的php代码将为我提供特定文件夹的文件 php脚本将放置在何处以及如何路由 比如说 $.ajax({ url:'....../fetchfiles.php', success:function(data){ } }) 希望我说的很清楚。根据您希望显示结果的位置,您可以创建组

我擅长php和javascript。如果我从joomla调用ajax,我需要一个指南来指导我在哪里放置自定义php脚本

我需要从特定文件夹中获取文件名。我可以制作一个ajax,它将与我的php代码进行通信,作为回报,我的php代码将为我提供特定文件夹的文件

php脚本将放置在何处以及如何路由

比如说

$.ajax({

url:'....../fetchfiles.php',
success:function(data){

}

})

希望我说的很清楚。

根据您希望显示结果的位置,您可以创建组件或模块(您也可以轻松地将模块包含在文章中,以便在组件位置打印结果)

对于模块: 显然,您的ajax调用将位于
tmpl/default.php
中,您的php脚本位于module文件夹中,只需将其包含在
mod_helloworld.xml
中的文件列表中即可。然后压缩文件夹并使用模块管理器进行安装


如果jquery代码出现问题,您必须使用该模式。

根据您想要显示结果的位置,您可以创建组件或模块(您也可以轻松地将模块包含在文章中,以便在组件位置打印结果)

对于模块: 显然,您的ajax调用将位于
tmpl/default.php
中,您的php脚本位于module文件夹中,只需将其包含在
mod_helloworld.xml
中的文件列表中即可。然后压缩文件夹并使用模块管理器进行安装


如果jquery代码出现问题,您必须使用该模式。

如果我正确理解了您的问题,我的答案是您可以将fetchfiles.php放在任何您想要的地方,只要您在$.ajax调用中放置正确的文件路径

然后在fetches.php中,您应该在启动代码之前调用Joomla framework,如下所示:

// no direct access 
define( '_JEXEC', 1 );

// get joomla root
$jpath_root = $_POST['jpath_root'];

//load Joomla
define( 'JPATH_BASE', $jpath_root );
require_once ( JPATH_BASE .'/includes/defines.php' );
require_once ( JPATH_BASE .'/includes/framework.php' );

jimport( 'joomla.application.application' );
jimport( 'joomla.filter.filteroutput' );

$japp = JFactory::getApplication('site');

/* now you are good to go with your code */
就几句关于

// get joomla root
$jpath_root = $_POST['jpath_root'];
部分

我的经验是,最好是通过$.ajax传递JPATH_ROOT变量(一种方法是在joomla文件中设置值为“JPATH_ROOT”的隐藏输入,从中调用ajax,然后在ajax.js中拾取该值并传递到ajax.php或fetches.php(在您的示例中)

您也可以用另一种方式定义JPATH_BASE,例如

define( 'JPATH_BASE', realpath(dirname(__FILE__)));

根据您的实际文件结构,但请注意,通过这种方式,您实际上重新定义了原始JPATH_基常量,如果您稍后在代码中调用某些可能依赖于原始Joomla定义的常量的第三方组件函数/类,则可能会导致冲突

通过ZOO组件和ajax调用,我学到了很多东西……:)


希望这有点道理。

如果我正确理解了您的问题,我的答案是,只要您在$.ajax调用中设置了文件的正确路径,您就可以将fetchfiles.php放在任何需要的地方

然后在fetches.php中,您应该在启动代码之前调用Joomla framework,如下所示:

// no direct access 
define( '_JEXEC', 1 );

// get joomla root
$jpath_root = $_POST['jpath_root'];

//load Joomla
define( 'JPATH_BASE', $jpath_root );
require_once ( JPATH_BASE .'/includes/defines.php' );
require_once ( JPATH_BASE .'/includes/framework.php' );

jimport( 'joomla.application.application' );
jimport( 'joomla.filter.filteroutput' );

$japp = JFactory::getApplication('site');

/* now you are good to go with your code */
就几句关于

// get joomla root
$jpath_root = $_POST['jpath_root'];
部分

我的经验是,最好是通过$.ajax传递JPATH_ROOT变量(一种方法是在joomla文件中设置值为“JPATH_ROOT”的隐藏输入,从中调用ajax,然后在ajax.js中拾取该值并传递到ajax.php或fetches.php(在您的示例中)

您也可以用另一种方式定义JPATH_BASE,例如

define( 'JPATH_BASE', realpath(dirname(__FILE__)));

根据您的实际文件结构,但请注意,通过这种方式,您实际上重新定义了原始JPATH_基常量,如果您稍后在代码中调用某些可能依赖于原始Joomla定义的常量的第三方组件函数/类,则可能会导致冲突

通过ZOO组件和ajax调用,我学到了很多东西……:)


希望这有点道理。

Joomla网站是否有您可以利用的自定义组件或模块?我可以做任何事情。如果需要,我可以进行自定义组件安装。Joomla网站是否有您可以利用的自定义组件或模块?我可以做任何事情。如果需要,我可以进行自定义组件安装。