我正在做一个Joomla! 2.5 / 3.x editor-xtd按钮,我在按钮点击时从文件加载布局时遇到问题。
我尝试过这种方法:
$link = 'plugins/editors-xtd/myplugin/myplugin.layout.php?name='.$name;
$button = new JObject;
$button->modal = true;
$button->class = 'btn';
$button->link = $link;
$button->text = 'Insert something';
$button->name = 'myplugin';
$button->options = "{handler: 'iframe', size: {x: 500, y: 300}}";
...但管理员中完整生成的链接看起来像http://my.local.host/mywebsite/administrator/plugins/editor-xtd/link-etc ..但它不起作用。我也试过在我的$ link中包含JURI :: base,但管理员路径仍然被加载。
我是Joomla插件开发人员的新手!我搜索了很多,但找不到解决方案。
**我也试过这样的链接 index.php?folder = plugins.editors-xtd.myplugin& file = myplugin.layout.php& name = $ name 但仍然没有。 有没有锻炼,或者我必须创建&使用javascript函数按钮点击运行?
答案 0 :(得分:1)
像这样修改链接变量(如果应用程序是管理员):
$link = '../plugins/editors-xtd/myplugin/myplugin.layout.php?name='.$name;
...和删除按钮选项(这意味着文件内容将通过模式内部的ajax加载)
此外,在myplugin.layout.php中,我们可以添加一些安全检查,然后可以导入Joomla!框架库和定义,以便我们可以使用Joomla!文件中的框架(例如语言加载之类的东西) 这是我实际的文件头:
<?php
// No direct access
define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
if( ! IS_AJAX) die;
// Include J!Framework for later use
define( '_JEXEC', 1 );
define( 'JPATH_BASE', realpath(dirname(__FILE__).'/../../..'));
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE.DS.'includes'.DS.'defines.php');
require_once ( JPATH_BASE.DS.'includes'.DS.'framework.php');
//more magic goes here...
答案 1 :(得分:1)
不幸的是,这里有些陷阱,因为JED检查器过程要求所有php文件在代码的第一行都以defined('_JEXEC') or die;
开头,因此如果要在extensions.joomla.org上共享它那你就受困了...
答案 2 :(得分:0)
返回OP之前,您可以在生成链接之前检测出您是处于管理员还是站点:
$app = JFactory::getApplication();
// ...
if ($app->isAdmin()) {
$root = '../'; // Joomla expects a relative path, leave site folder "administrator"
} else {
$root = '';
}
$button->link = $root.'/plugins/editors-xtd/myplugin/myplugin.layout.php?name='.$name;
此外,您可能已经知道$button->name = 'myplugin';
必须是Joomla icomoon集中的图标名称-您可以在此处https://ma.tvtmarine.com/en/blog/112-joomla-icomoon-icons-directory看到它们
名称必须是不带.icon-
位的图标名称,例如:
$button->name = 'warning-2';
代码块似乎无法正常工作...很抱歉格式化