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');

更新: スクリプトの宣言については、このリンクも参照してください。そこに示されている2番目の例のように使用することをお勧めします。ここにリンクがあります。

JDocument/addScriptDeclaration

于 2013-06-19T10:25:53.973 に答える