如何在自定义组件视图中添加 joomla 编辑器但不使用 XML 表单字段?

Posted

技术标签:

【中文标题】如何在自定义组件视图中添加 joomla 编辑器但不使用 XML 表单字段?【英文标题】:How to add joomla editor in custom component view but without using XML form fields? 【发布时间】:2013-10-04 13:47:04 【问题描述】:

我正在开发一个自定义 joomla 组件。我想在我的一个组件视图中添加一个 joomla 编辑器字段。我知道如何使用 XML 表单文件 (models/forms/myview.xml) 添加编辑器,但我想在视图文件 (myview/tmpl/default.php) 中执行相同操作,而不使用 xml 文件字段。 可能吗 ?如果是那怎么办?

请帮忙

【问题讨论】:

【参考方案1】:

我知道这是一个老问题,但我想我会展示如何在全局设置中而不是由用户设置默认编辑器。通常,用户没有设置默认编辑器,返回的值是“JEditor”,这将导致编辑器根本无法加载。如果您愿意,可以将两者结合起来,首先检查用户编辑器,如果值为 JEditor,则回退到全局编辑器。

这是一个例子:

// IMPORT EDITOR CLASS
jimport( 'joomla.html.editor' );

// GET EDITOR SELECTED IN GLOBAL SETTINGS
$config = JFactory::getConfig();
$global_editor = $config->get( 'editor' );

// GET USER'S DEFAULT EDITOR
$user_editor = JFactory::getUser()->getParam("editor");

if($user_editor && $user_editor !== 'JEditor') 
    $selected_editor = $user_editor;
 else 
    $selected_editor = $global_editor;


// INSTANTIATE THE EDITOR
$editor = JEditor::getInstance($selected_editor);

// SET EDITOR PARAMS
$params = array( 'smilies'=> '0' ,
    'style'  => '1' ,
    'layer'  => '0' ,
    'table'  => '0' ,
    'clear_entities'=>'0'
);

// DISPLAY THE EDITOR (name, html, width, height, columns, rows, bottom buttons, id, asset, author, params)
echo $editor->display('email', '', '400', '400', '20', '20', true, null, null, null, $params);

【讨论】:

【参考方案2】:

试试这个,

     $editor = JFactory::getEditor();
     echo $editor->display('content', $this->content, '550', '400', '60', '20', false);

为more

在最新的 Joomla 版本中 J3.x [UPDATE]

你可以使用类似下面的东西,

jimport( 'joomla.html.editor' );
$editor = JEditor::getInstance(JFactory::getUser()->getParam("editor"));
echo $editor->display('content', $this->content, '550', '400', '60', '20', false);

for more

【讨论】:

如果您使用的是 J!3.3+,这将被贬值!您应该直接使用 JEditor。比如:jimport( 'joomla.html.editor' ); $editor = \JEditor::getInstance(); 实际上,当使用\JEditor::getInstance() 时,您应该指定您想要的编辑器,否则您将获得一个“无”编辑器——这是一个简单的文本区域。例如 \JEditor::getInstance('jce') 会给你 JCE 编辑器。但是,为了确保您不会硬编码某人可能没有安装的编辑器(如 JCE)的名称,我会使用如下内容:$editor = \JEditor::getInstance(\JFactory::getUser()->getParam("editor"));【参考方案3】:

Joomla 3.x

$editor = JFactory::getEditor();
$editor = $editor->display('mce', $yourContent, '550', '400', '60', '20', false);

www.joomla-wiki.de/dokumentation/JFactory/getEditor

【讨论】:

以上是关于如何在自定义组件视图中添加 joomla 编辑器但不使用 XML 表单字段?的主要内容,如果未能解决你的问题,请参考以下文章

将选项卡和字段添加到自定义 joomla 组件

如何在自定义模块(Joomla 1.7)中使用自定义组件中的函数?

Joomla 自定义组件需要创建菜单

Joomla:如何将一种表单用于前端和后端视图?

在 Joomla 3 中向组件添加带有自定义 url 参数的菜单类型

将搜索 DIV 添加到 Joomla 3.0 组件视图时 CSS 丢失