Как написать свой компонент ? Есть ли книга ?

Тема в разделе "Программирование", создана пользователем magistr_yoda, 10.05.2010.

  1. Offline

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

    Регистрация:
    20.05.2007
    Сообщения:
    166
    Симпатии:
    0
    Пол:
    Мужской
    Здравствуйте, есть ли книга, статья, где пошагово рассказывается, как создать свой компонент на J1.5 ?
     
  2.  
  3. Tureckiy
    Offline

    Tureckiy Недавно здесь => Cпециалист <=

    Регистрация:
    11.04.2009
    Сообщения:
    423
    Симпатии:
    30
    Пол:
    Мужской
  4. Offline

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

    Регистрация:
    20.05.2007
    Сообщения:
    166
    Симпатии:
    0
    Пол:
    Мужской
    Да, это уже смотрел, это не то.
    Мне нужно сделать простой компонент, с формочкой, доступ к которой будут иметь только зарегестрированные пользователи, в этой формочке будут всего пара полей для ввода и таблица, с ранее введёнными данными, нужно чтобы пользователь просто мог сохранить эти два поля в таблицу(добавить новую записть) и отредактировать, удалить уже существующие.
     
  5. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    Так правильно Вам подсказывает коллега по цеху ) ... по этому линку очень подробно расписано создание простейшего компонента. Вот моя статья, где описано создание компонента. Что касается зарегистрированных пользователей - при создании кнопки в меню для вашего компонента, указываете группу пользователей - "Зарегистрированные". Форму реализуйте сами, по работе с БД и прочим функционалом джумлы - рекомендую посетить http://api.joomla.org, а также местный раздел документации.
     
    Последнее редактирование модератором: 31.03.2014
  6. Tureckiy
    Offline

    Tureckiy Недавно здесь => Cпециалист <=

    Регистрация:
    11.04.2009
    Сообщения:
    423
    Симпатии:
    30
    Пол:
    Мужской
    Ну это не совсем спасение, надо бедет при получении данных во View проверять на значение глобальной переменной $user, так как просто узнав линк любой пользователь сможет получить любые данные в Вашем конмоненте!
     
  7. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    Что касается доступа по урлу - если вы знаете урл, то его нужно немного модифицировать что бы добраться к этому компоненту.
    А что касается View - то там таких вещей не делается, проверка и редирект осуществляется на уровне модели или на крайний случай - контроллера.
     
  8. Tureckiy
    Offline

    Tureckiy Недавно здесь => Cпециалист <=

    Регистрация:
    11.04.2009
    Сообщения:
    423
    Симпатии:
    30
    Пол:
    Мужской
    ну или так - просто глядя на все многообразие компонентов в Джумле - там и в view проверки тоже имеются
     
  9. Tureckiy
    Offline

    Tureckiy Недавно здесь => Cпециалист <=

    Регистрация:
    11.04.2009
    Сообщения:
    423
    Симпатии:
    30
    Пол:
    Мужской
    Что вы имели ввиду?
     
  10. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    Не нужно передавать Itemid
     
  11. Offline

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

    Регистрация:
    20.05.2007
    Сообщения:
    166
    Симпатии:
    0
    Пол:
    Мужской
    Не совсем понятно как по этому линку учится, вот на четвертом уроке, есть код

    /**
    * display method of Hello view
    * @return void
    **/
    function display($tpl = null)
    {
    //получаем приветствие
    $hello => $this->get('Data');
    $isNew = ($hello->id < 1);

    $text = $isNew ? JText::_( 'New' ) : JText::_( 'Edit' );
    JToolBarHelper::title( JText::_( 'Hello' ).': <small><small>[ ' . $text.' ]</small></small>' );
    JToolBarHelper::save();
    if ($isNew) {
    JToolBarHelper::cancel();
    } else {
    // для существующих записей кнопка переименовывается на `close`
    JToolBarHelper::cancel( 'cancel', 'Close' );
    }

    $this->assignRef('hello', $hello);
    parent::display($tpl);
    }

    Его в каком файле надо писать ? в
    \hello\admin\views\hellos\view.html.php или в файле
    \hello\site\views\hello\view.html.php

    Если в первом, то там в этой же статье было написан, код функции display

    {
    /**
    * Hellos view display method
    * @return void
    **/
    function display($tpl = null)
    {
    JToolBarHelper::title( JText::_( 'Hello Manager' ), 'generic.png' );
    JToolBarHelper::deleteList();
    JToolBarHelper::editListX();
    JToolBarHelper::addNewX();

    // Get data from the model
    $items = > $this->get( 'Data');

    $this->assignRef('items', $items);

    parent::display($tpl);
    }
    }

    А если для второго файла, то как то нелогично получается, пишется админка, а действие происходит в фронтэнде.

    Вобщем эта статья? кривой-перевод и как- то непонятно написанна, есть ли ещё какие нибудь учебные примеры, как написать компонент для джумлы ?
     
  12. Tureckiy
    Offline

    Tureckiy Недавно здесь => Cпециалист <=

    Регистрация:
    11.04.2009
    Сообщения:
    423
    Симпатии:
    30
    Пол:
    Мужской
    А чего к ниму привязываться и передавать? текущий Itemid тоже получить из global можно!
     
  13. Tureckiy
    Offline

    Tureckiy Недавно здесь => Cпециалист <=

    Регистрация:
    11.04.2009
    Сообщения:
    423
    Симпатии:
    30
    Пол:
    Мужской
    Это надо писать в
    \hello\admin\views\hello\view.html.php или в файле
    т.к. насколько я помню эта View разгребает конкретный Итем из набора записей. Она даже тулбар устанавливает
    Код (PHP):
    1. JToolBarHelper::save();
    2. ..
    3. JToolBarHelper::cancel()
    ;
    и надпись слева от тулбара

    ИМЕННО в HELLO - там это я же потом понял (когда набрался опыта в написании компонентов) что ошибка (тут название в единственом числе и этот класс обрабатывает одну запись)
    У этого класса (View) - и модель как вы долны понять своя!

    Код (PHP):
    1. $text = $isNew ? JText::_( 'New' ) : JText::_( 'Edit' );
    2. JToolBarHelper::title( JText::_( 'Hello' ).': <small><small>[ ' . $text.' ]</small></small>' );

    Таким отбразом это View детельной записи, и у нее контроллер HelloControllerHellos (на сколько я помню :) )
    А есть еще один единсивенный контроллер (главный), который надохится в корне админки этого компонента, а не в папке controllers

    А это View, которая формирует (выводит) список итемов (обычный менеджер заисей в админке)

    и этот код в ней находится
    в ней к (во View) формируется свой тулбар по добавлению/редактированию Итемов и надпись соответствующая.

    Код (PHP):
    1. JToolBarHelper::title( JText::_( 'Hello Manager' ), 'generic.png' );
    2. JToolBarHelper::deleteList();
    3. JToolBarHelper::editListX();
    4. JToolBarHelper::addNewX();


    Т.е Вы ошибаетесь!!!
    этод метов должен быть в этом файле

    \hello\admin\views\hellos\view.html.php или в файле
    посмотрите внимательно, в этой View для Front end(a) должен быть другой код.

    Я вообще не помню, по некоторые уроки по созданию MVC компонента есть на joomla.org

    ..Фух.. Ладно, спрашивайте еще если что
     
  14. Offline

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

    Регистрация:
    20.05.2007
    Сообщения:
    166
    Симпатии:
    0
    Пол:
    Мужской
    Вот нашёл информацию по написанию компонента для джумлы - http://blog.contra.lv/category/joomla/ - разбираюсь.

    Блин правда нагородили они там с этим MVC,
    написали бы джумлу на Delphi :)
     
  15. Tureckiy
    Offline

    Tureckiy Недавно здесь => Cпециалист <=

    Регистрация:
    11.04.2009
    Сообщения:
    423
    Симпатии:
    30
    Пол:
    Мужской
    Та нет, наоборот все просто и понятно. Надо только знать этот шаблон и Джумлу немного!
     

Поделиться этой страницей

Загрузка...