我想在jce编辑器iframe中嵌入样式表,只针对特定的页面,最好使用php。现在,jce管理接口允许您为在管理控制面板中加载jce的每个实例设置全局样式表和单个用户配置文件。但是,我正在创建自定义组件,以便加载编辑器以进行显示,如下所示:

<?php
$editor = JFactory::getEditor();  // JCE set by default
echo $editor->display();

我希望能够根据组件的不同部分加载不同的样式表。据我所知,这不是现成的,所以我想看看是否有一些api方法可以帮助我实现这一点。
类似于:
<?php
$editor = JFactory::getEditor();  // JCE set by default

// calculate whether additional styles may be needed...
if (true === $needs_more_stylesheets_bool) {
   // Would be nice to do something like
   $editor->addStylesheet('specific_styles.css');
   // Or
   $editor->addInlineStyle('body{background:green}');
   // Or
   $editor->removeStylesheet('general_styles.css');

   // Or... with adding/editing user profiles...
   $editor->loadUserProfile('user_2_with_different_stylesheets');
}

最佳答案

我将建议您如何添加一些内联样式,您可以继续使用相同的方法
编辑器类位于root/libraries/joomla/html/editor.php中
在这一行,你可以找到显示功能

public function display($name, $html, $width, $height, $col, $row, $buttons = true, $id = null, $asset = null, $author = null, $params = array())
    {
        ...
        ...
$width = str_replace(';', '', $width);
        $height = str_replace(';', '', $height);

        // Initialise variables.
        $return = null;

        $args['name'] = $name;
        $args['content'] = $html;
        $args['width'] = $width;
        $args['height'] = $height;
        $args['col'] = $col;
        $args['row'] = $row;
        $args['buttons'] = $buttons;
        $args['id'] = $id ? $id : $name;
        $args['event'] = 'onDisplay';
                ...
}

我会尝试传递我的内联样式
public function display($name, $html, $width, $height, $col, $row, $buttons = true, $id = null, $asset = null, $author = null, $params = array(),$inlinestyles){
...
$args['inlinestyles'] = $inlinestyles;
...
}

现在我们必须编辑位于root/plugins/editors/jce/jce.php中的jce.php文件
正如您在paramaters事件中看到的,我们将更改display事件
108号线附近
public function onDisplay($name, $content, $width, $height, $col, $row, $buttons = true, $id = null, $asset = null, $author = null) {
...
return $editor;
    }

现在我们将更改此函数并使用jdocument解析我们的样式
public function onDisplay($name, $content, $width, $height, $col, $row, $buttons = true, $id = null, $asset = null, $author = null,$inlines) {
//blah blah some code
//here comes the fun part
if($inlines){
$document =& JFactory::getDocument();
$document->addStyleDeclaration($inlines);
}

} //end of ondisplay

现在在组件中,必须调用joomla文档中记录的编辑器
$inlines= 'BODY {'
        . 'background: #00ff00;'
        . 'color: rgb(0,0,255);'
        . '}';
$editor = JFactory::getEditor();
echo $editor->display("jobdesc", ""/*$itemData['body']*/, "400", "100", "150", "10", 1, null, null, null, array('mode' => 'advanced'),$inlines);

http://docs.joomla.org/JFactory/getEditor

关于php - 使用PHP以编程方式将CSS注入(inject)Joomla Content Editor(JCE)吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13201369/

10-13 03:36