Joomla 1.5 Плагин вставки скрипта

Discussion in 'Программирование' started by volod3000, Jul 28, 2010.

  1. volod3000
    Offline

    volod3000 Недавно здесь

    Joined:
    Jun 3, 2009
    Messages:
    74
    Likes Received:
    8
    Gender:
    Male
    Доброе время суток.

    Пишу простейший плагин, но что-то заклинило, не могу его заставить работать.

    Задача плагина вставить JS-файл перед тегом </head>

    Вот что написал.

    Код (CODE):
    1. defined( '_JEXEC' ) or die( 'Restricted access' );
    2.  
    3. jimport( 'joomla.plugin.plugin' );
    4.  
    5. class plggrayscale extends JPlugin {
    6.  
    7.     function plgSystemPlg_grayscale( &$subject ){
    8.         parent::__construct( $subject );
    9.         $this->_plugin = JPluginHelper::getPlugin( 'system', 'grayscale' );
    10.         $this->_mainframe= &JFactory::getApplication('site');
    11.         $this->_jqpath = '';
    12.         if($this->_mainframe->isAdmin())return;
    13.  
    14.     }
    15.  
    16.     function onAfterInitialise() {
    17.  
    18.         if($this->_mainframe->isAdmin())return;
    19.  
    20.  
    21.         $document = &JFactory::getDocument();
    22.  
    23.         $this->_jqpath = JURI::root (true)."/plugins/system/grayscale/gra.js";
    24.  
    25.                     $document->addScript($this->_jqpath);
    26.  
    27.  
    28.     }
    29. }


    Но эффект нет , при загрузке страницы скрипта нет.

    Кто разбирается , подскажите где ошибка и как ее исправить, а то голова уже дымиться . [!!!]
     
  2.  
  3. Offline

    botanist Активист => Cпециалист <=

    Joined:
    Feb 15, 2009
    Messages:
    461
    Likes Received:
    49
    Gender:
    Male
    Для начала класс именуй как положено plgSystemGrayscale
    Из кода вообще неясно имя плагина, как оно в базу записалось. Имя файла плагина должно совпадать с именем плагина в базе.
    Потом сделай
    Код (PHP):
    1. function plgSystemGrayscale(& $subject, $config) {
    2.  
    3. parent::__construct($subject, $config);
    4. $document = &JFactory::getDocument();
    5. $jqpath = JURI::root (true)."/plugins/system/grayscale/gra.js";
    6. $document->addScript($jqpath);
    7. }

    Вообще впечатление что плагин не работает из-за несовпадения имен плагина в базе, файла и класса.
    А вставить файл JS можно в любом месте плагина.
     
  4. volod3000
    Offline

    volod3000 Недавно здесь

    Joined:
    Jun 3, 2009
    Messages:
    74
    Likes Received:
    8
    Gender:
    Male
    Попробовал так


    Код (PHP):
    1. defined( '_JEXEC' ) or die( 'Restricted access' );
    2. jimport( 'joomla.plugin.plugin' );
    3.  
    4. class plggrayscale extends JPlugin {
    5.    
    6. function plgSystemGrayscale(&$subject, $config) {
    7.  
    8. parent::__construct($subject, $config);
    9. $document = &JFactory::getDocument();
    10. $jqpath = JURI::root (true)."/plugins/system/grayscale/grayscale.js";
    11. $document->addScript($jqpath);
    12. }
    13.  
    14. }


    Но, к сожалению, ничего , насчет имен вроде сейчас правильно.
     
  5. Offline

    botanist Активист => Cпециалист <=

    Joined:
    Feb 15, 2009
    Messages:
    461
    Likes Received:
    49
    Gender:
    Male
    Код (PHP):
    1. class plgSystemGrayscale extends JPlugin {
     
    volod3000 likes this.
  6. volod3000
    Offline

    volod3000 Недавно здесь

    Joined:
    Jun 3, 2009
    Messages:
    74
    Likes Received:
    8
    Gender:
    Male
    Большое спасибо botanist !

    Еще пришлось поменять положение плагина , для эксперимента поставил
    порядок 0 , и все заработало.

    С меня +
     

Share This Page

Loading...