0

我正在编写一个简单的 joomla 插件.. 它基本上检测一个类并加载一堆 css 和 JavaScript 不需要在其他页面上.. 但它根本没有加载任何东西......请告诉我我哪里出了问题。 .

继承人的PHP:

class plgContentScrollbar extends JPlugin{
    public function __construct(& $subject, $config){
        parent::__construct($subject, $config);
        $this->loadLanguage();
    }
    function onScrollbarPrepare(){
        $app = JFactory::getApplication();
        $bodySite   = JResponse::getBody();
        $scroll =  strpos($bodySite,'scroll-pane');
        if($scroll !== false) {
            $this->onCreateScrollbar();
        }
        return true;
    }
    function onCreateScrollbar(){
        $pluginUrl = JURI::base(true) . '/plugins/content/scrollbar/';
        $document =& JFactory::getDocument();
        $document->addStyleSheet('<link href="'.$urlPlugin.'css/jquery.jscrollpane.css" rel="stylesheet" type="text/css" />');
        $document->addScript('<script type="text/javascript" src="'.$urlPlugin.'js/knockout-2.2.1.js"></script>');
        $document->addScript('<script type="text/javascript" src="'.$urlPlugin.'js/jquery.mousewheel.js"></script>');
        $document->addScript('<script type="text/javascript" src="'.$urlPlugin.'js/jquery.jscrollpane.min.js"></script>');
        $script = 'jQuery(document).ready(function(e) {
            ko.bindingHandlers.jScrollPane = {
                init: function(element, valueAccessor) {
                    var options = valueAccessor() || {};
                    $(element).jScrollPane(options); 
                    $(window).resize(function() {
                        var scroll = $(element).data("jsp");
                        if (scroll) {
                            scroll.reinitialise();
                        };
                    };
                };
            };

            var ViewModel = function() {}
            var pane;
            var remove = function() {
                pane = $("#pane").detach();
            };
            var add = function() {
                $("#content").append(pane);
                $(window).trigger("resize");
            };
            ko.applyBindings(new ViewModel());
        });';
        $style = '.scroll-pane{width: 100%;height: 500px;overflow: auto;}
                .jspVerticalBar {width: 26px;background-color:transparent;}
                .jspVerticalBar .jspArrowUp {background:url(arrow_up.png) no-repeat;width:26px;height:14px;}
                .jspVerticalBar .jspArrowDown {background:url(arrow_down.png) no-repeat;width:26px;height:14px;}
                .jspTrack {background:none;}
                .jspDrag {width:2px;margin-left:13px;background:#000000;}';
        $document->addStyleDeclaration($style);
        $document->addStyleDeclaration($script);
    }

非常感谢任何帮助..谢谢..

4

1 回答 1

0

您将整个脚本标记放入函数中,这是不正确的,请参阅此链接:添加 JavaScript添加样式表 您只需要提供该文件位置的 url。

试试这样:

$pluginUrl = JURI::base(true) . '/plugins/content/scrollbar/';
$document  = JFactory::getDocument();
$document->addStyleSheet($urlPlugin.'css/jquery.jscrollpane.css');
$document->addScript($urlPlugin.'js/knockout-2.2.1.js');
$document->addScript($urlPlugin.'js/jquery.mousewheel.js');
$document->addScript($urlPlugin.'js/jquery.jscrollpane.min.js');

更新: 另请参阅此链接以声明脚本。我更喜欢像那里显示的第二个示例一样使用它。链接在这里。

JDocument/addScriptDeclaration

于 2013-06-19T10:25:53.973 回答