0 Пользователей и 1 Гость просматривают эту тему.
  • 410 Ответов
  • 92320 Просмотров
*

b2z

  • Глобальный модератор
  • 6969
  • 755 / 0
  • Разраблю понемногу
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: Информация по написанию компонента
« Ответ #61 : 05.04.2009, 22:27:03 »
Я эту штуку вообще не нашел. Разговоры одни, что в 2007 году, студенты делали на деньги Googla. Чем дело кончилось хз.
А я выбирал по следующим критериям.
1. Активная поддержка и разработка.
2.Русский интерфейс. (Да простят меня профессионалы за эту слабость. бзик такой, а я свои бзики люблю.)
3.Отладка.
4.Автозавершение кода и автоподсказка с возможностью отключения (бесит иногда назойливостью).
5. Наличие шаблонов кода.
6. Автоформат
7.Кроссплатформенность ибо на работе Windows дома Debian.
8. Отсутствие тормозов в работе.
В общем NetBeans подошёл, не полностью по всем критериям конечно, но лучше всех. И буду его юзать. А то так можно до бесконечности рыться. Просто инструмент ведь и все.
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

b2z

  • Глобальный модератор
  • 6969
  • 755 / 0
  • Разраблю понемногу
Re: Информация по написанию компонента
« Ответ #62 : 06.04.2009, 11:14:55 »
А я всё же на Eclipse наверное останусь :)

P.S.
На днях по почте получил заказанные книжки - изучаю:
Mastering Joomla! 1.5 Extension and Framework Development
Learning Joomla! 1.5 Extension Development
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Информация по написанию компонента
« Ответ #63 : 06.04.2009, 12:19:05 »
а я не юзаю ни зенд, ни эклипс, ни бинс.. и вааще не юзаю отладчиков   :-*  ;D
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Информация по написанию компонента
« Ответ #64 : 20.04.2009, 21:34:22 »
Если вдруг кому надо будет
вот есть понятное описание как можно настроить свое рабочее место для работы и в Joomla в том числе
http://docs.joomla.org/Setting_up_your_workstation_for_Joomla!_development
http://docs.joomla.org/Setting_up_your_workstation_for_Joomla!_development_--_Part_2
*

konstantinopol

  • Захожу иногда
  • 66
  • 2 / 0
Re: Информация по написанию компонента
« Ответ #66 : 21.04.2009, 10:44:42 »
Спасибо, статьи с Eclipce очень зинтерисовала, буду сегодня пробовать. ^-^
Меня давно небыло в этой теме, написал уже кто компонент ?? 
Меня всё время приследуют умные мысли ... но я быстрее =)
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Информация по написанию компонента
« Ответ #67 : 21.04.2009, 15:14:24 »
Кстати с эклипс не рекмендую ставить easyEclipse  - по крайней мере у меня не особо получислоь подружить его

а вот с PDT все гуд!
*

b2z

  • Глобальный модератор
  • 6969
  • 755 / 0
  • Разраблю понемногу
Re: Информация по написанию компонента
« Ответ #68 : 21.04.2009, 18:34:20 »
Спасибо, статьи с Eclipce очень зинтерисовала, буду сегодня пробовать. ^-^
Меня давно небыло в этой теме, написал уже кто компонент ?? 
Я начал! :) Ща ставлю себе wordpress - буду блог вести :) Типа "Записки начинающего Джумлaвода"  ;D
Кто хочет писать блоги - милости прошу, пишите в личку. Дам Вам доступ, будем вместе сайт пополнять.
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Информация по написанию компонента
« Ответ #69 : 22.04.2009, 19:19:43 »
Кстати народ подскажите как ГРАМОТНЕЕ делать в таком вот случае:
"когда из таблицы берешь не одну строчку, а к примеру все записи соответствующие опред. критерию"
при использовании JTable

ну т.е. про одиночную запись понятно bind все распихивает по членам класа и все данные доступны в объекте
Но хачастую нужно не просто одну строчку запросить, а результатом запроса может быть 100 - 1000 строчек, как с этим быть ? при условии что хочется использовать JTable ...
*

b2z

  • Глобальный модератор
  • 6969
  • 755 / 0
  • Разраблю понемногу
Re: Информация по написанию компонента
« Ответ #70 : 22.04.2009, 23:07:36 »
JTable работает только с одной конкретной записью. Удобно получить все записи можно используя метод getList модели, который возвращает массив. Ну или естественно самому написать свой метод.
*

doxtor

  • Новичок
  • 20
  • 1 / 0
Re: Информация по написанию компонента
« Ответ #71 : 23.04.2009, 02:04:49 »
Здорово

Так, как я тут раньше был и речь шла о MVC, то сообщу свои результаты. Я вот наваял компонент. Думаю поможет начинающим. Я свое дело сделал. Спасибо всем за помощь, когда я ниче не шарил. Всем хорошего настроения

Док
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Информация по написанию компонента
« Ответ #72 : 23.04.2009, 13:50:17 »
Я начал! :) Ща ставлю себе wordpress - буду блог вести :) Типа "Записки начинающего Джумлaвода"  ;D
Кто хочет писать блоги - милости прошу, пишите в личку. Дам Вам доступ, будем вместе сайт пополнять.

ты ж выложу после сюда линк где блог то будет
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Информация по написанию компонента
« Ответ #73 : 23.04.2009, 14:30:45 »
Кстати вот вопрос возник, а что первым исполняется модуль или компонент ? и можно ли между ними передавать данные ?

т.е. к примеру у меня сейчас такая ситуация что модуль определил по некоторому условию некоторое значение, и было бы круто что б компоненту не приходилось проверяя это условия снова лазить в базу а довериться модулю....

и еще вопрос можно ли как то в модуле использовать модель из компонента ? что б копипастить  методы ...
« Последнее редактирование: 24.04.2009, 21:54:19 от x00xer »
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: Информация по написанию компонента
« Ответ #74 : 26.04.2009, 13:23:08 »
Давненько не был, дела чтоб их,  а тема сидит в категории незаконченных дел и жить мешает. Продолжим. Сортировка. По полю Published например.

Изменим немного файл views/tmpl/default.php. В секции заголовков, заголовок поля published перепишем с

Код
<th width="10px" nowrap="nowrap">
<?php echo JText::_( 'Publiched' );?>
</th>

 На

Код
<th width="10px" nowrap="nowrap">
<?php /*echo JText::_( 'Publiched' ); */?>
<?php echo JHTML::_('grid.sort', 'Published', 'Published', $this->lists['order_Dir'], $this->lists['order'] );?>
</th>

Старый вариант оставил, но закомментировал, для наглядности.
В секции скрытых полей type="hidden" допишем:

Код
<input type="hidden" name="filter_order" value="<?php echo $this->lists['order']; ?>"  />
 <input type="hidden" name="filter_order_Dir" value="" />

В методе display файла /views/categoryes/view.html.php выше строки  parent::display($tpl); допишем:

Код
global $option;
$apl = JFactory::getApplication();
$filter_order = $apl->getUserStateFromRequest(
$option.'filter_order', 'filter_order', 'published');
$filter_order_Dir = JString::strtoupper($apl->getUserStateFromRequest(
 $option.'filter_order_Dir','filter_order_Dir', 'ASC'));
// set the table order values
 $lists = array();
$lists['order_Dir'] = $filter_order_Dir;
$lists['order'] = $filter_order;
// add the lists array to the object ready for the layout
$this->assignRef('lists', $lists);

Ну и в модели /models/categoryes.php добавим функцию

Код
function _buildQueryOrderBy()
{
global $option, $mainframe;

// Array of allowable order fields
$orders = array('title', 'ordering', 'Published', 'id', 'parent_id');
// get the order field and direction
$filter_order = $mainframe->getUserStateFromRequest($option.'filter_order', 'filter_order', 'published');
$filter_order_Dir strtoupper($mainframe->getUserStateFromRequest
($option.'filter_order_Dir','filter_order_Dir', 'ASC'));
// validate the order direction, must be ASC or DESC
 if ($filter_order_Dir != 'ASC' && $filter_order_Dir != 'DESC')
{
$filter_order_Dir = 'ASC';
}
// if order column is unknown use the default
if (!in_array($filter_order, $orders))
{
$filter_order = 'id';
 }
  // return the ORDER BY clause
 return ' ORDER BY '.$filter_order.' '.$filter_order_Dir;
 }

А функцию function _buildQuery() немоного перепишем так:
Код
function _buildQuery()
 {
$db = $this->getDBO();
$query = "SELECT * FROM ". $db->nameQuote('#__simcat_categories')
. $this->_buildQueryOrderBy();
return $query;
}

Ну вот собственно и все. Для сортировки по другим полям, достаточно записать их аналогично полю published. Для поля Num например так.
Код
<th width="10px">
<?php /*echo JText::_( 'Num' ); */?>
<?php echo JHTML::_('grid.sort',   'Num', 'id', $this->lists['order_Dir'], $this->lists['order'] );?>
</th>
« Последнее редактирование: 15.05.2009, 22:45:24 от Lex »
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Информация по написанию компонента
« Ответ #75 : 26.04.2009, 13:41:48 »
function _buildQueryOrderBy()
{
global $option;
$mainframe = JFactory::getApplication();

опшн через глобал, зато мейнфрейм - пожалте, переопределяем.
это как минимум странно...

$mainframe = JFactory::getApplication() - это где? фронт? админка? кхм...

mainframe является единой глобальной переменной, соотв. global $mainframe.
а $option = JRequest::getCmd( 'option' );
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: Информация по написанию компонента
« Ответ #76 : 26.04.2009, 13:50:34 »
Результат экспериментов.  ^-^
В оригинальном примере global $option, $mainframe;
Пытался понять в чем разница
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Информация по написанию компонента
« Ответ #77 : 26.04.2009, 14:02:48 »
Цитировать
strtoupper
заменить на JString::strtoupper

это UTF-8. могут быть нюансы.
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: Информация по написанию компонента
« Ответ #78 : 26.04.2009, 14:07:08 »
Заменил. Посчитал почему-то что с латиницей ньюансов не должно.
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Информация по написанию компонента
« Ответ #79 : 26.04.2009, 15:19:33 »
лучше, что бы было универсально.
когда пишешь код, лучше его делать так, что бы потом можно было использовать еще где-то
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: Информация по написанию компонента
« Ответ #80 : 26.04.2009, 15:25:46 »
Не подумал как то о повторном использовании. Да и за привычку взять надо, писать как положено, а не как подумалось. Иначе потом можно долго искать, что не так. Спасибо.
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Motor

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
Re: Информация по написанию компонента
« Ответ #81 : 11.05.2009, 02:22:48 »
Ошибка на второй странице в представлении.
Цитировать
$categoryes = $this->get('Categoryes'); /*вот он этот метод get для получения данных из модели взаимосвязь названий надеюсь понятна*/
$this->assignRef('cat', $categories);/*передаем данные в шаблон, первый параметр - имя переменной которая будет содержать переданные данные в шаблоне, второй параметр определили строкой выше,  данные которые передаются*/

$categoryes != $categories;
Главное сам написал
Цитировать
второй параметр определили строкой выше,  данные которые передаются
:=))

Название формы не form_default.php , default_form.php

P.S. Автору респект!


« Последнее редактирование: 11.05.2009, 03:08:44 от Motor »
*

t0xas

  • Осваиваюсь на форуме
  • 38
  • 3 / 0
  • Только страсть познания делает нас людьми!
Re: Информация по написанию компонента
« Ответ #82 : 11.05.2009, 09:03:28 »
Всем привет, почитал эту ветку, я подключатся буду к вам. Сам только начал Joomla капать. У меня тут задание доделать компонент. Так вот у меня вопрос по поводу JRoute::_ и использования его в формах.

Не могу понять как кнопки работают.

Кароче вот кусок кода, поправьте пожалуйста меня

<form action="<?php echo JRoute::_( 'index.php?option=com_user&view=user&layout=smart_orders' ); ?>" method="get">
3. Найти информацию о заказе №<input type="text" maxlength="3" size="2"><input type="submit" value="ok" name="ok">
</form> <br />

При нажатии на кнопку меня посылают сюда  index.php?ok=ok.

smart_order находятся в папочки views/user/tmpl
там же где и лежит форма.

А если кто стукнет в аську, буду благодарен очень за небольшое разъяснение простых вещей в Joomla.
C ангицким у меня туго, так что прошу не кидайте ссылки типа  http://api.joomla.org/   Я уже по-моему все излазил.
*

b2z

  • Глобальный модератор
  • 6969
  • 755 / 0
  • Разраблю понемногу
*

Physicist

  • Глобальный модератор
  • 926
  • 186 / 0
  • Рябов Денис
Re: Информация по написанию компонента
« Ответ #84 : 11.05.2009, 13:06:25 »
<form action="<?php echo JRoute::_( 'index.php?option=com_user&view=user&layout=smart_orders' ); ?>" method="get">
3. Найти информацию о заказе №<input type="text" maxlength="3" size="2"><input type="submit" value="ok" name="ok">
</form>
Не знаю, какую ссылку выдает роутер, но текстовое поле без имени (name) — это уже ошибка, т.к. эти данные не будут переданы на сервер (зато у Вас submit с именем, поэтому и имеете только ok=ok).
*

t0xas

  • Осваиваюсь на форуме
  • 38
  • 3 / 0
  • Только страсть познания делает нас людьми!
Re: Информация по написанию компонента
« Ответ #85 : 11.05.2009, 13:07:32 »
get пользоваться просто, просто все опции я допинал скрытыми инпутами <input type=hidden name=layout value=user>

Physicist ^_^
полностью согласен :)

Вот я тут рылся, рылся и не нарыл... нужна фунция для защиты с фронта админской панели компонента.
У меня что за логинился, что не логинелся человек, по ссылки попадает в админ панельку, что не есть гуд :)
« Последнее редактирование: 11.05.2009, 13:18:29 от t0xas »
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: Информация по написанию компонента
« Ответ #86 : 12.05.2009, 12:25:11 »
Цитировать
$categoryes != $categories;
Исправил.
Цитировать
Название формы не form_default.php , default_form.php
Не нашел. Спасибо за помощь.
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: Информация по написанию компонента
« Ответ #87 : 15.05.2009, 15:38:47 »
Мы вроде вложенность категорий делать хотели. Начнем.
В таблице поле parent_id  уже имеется. На уровне базы данных возможность организовать вложенность категорий. т.е дальше второго уровня, уже есть. А вспомнив, что это копия родной таблицы Joomla, задаемся вопросом, почему этой возможности нет в движке. Впрочем вопрос риторический.
Еще пара отступлений. Предвижу две большие проблемы. Первая, это случай когда пользователь удаляет родительскую категорию. Что тогда будет с ее дочерними. Тут или запрет на удаление не пустой категории или каскадное удаление всего, что ниже. И вторая это случай, когда пользователь назначает категории в качестве родительской ее же дочернюю. Получится, что у нас две категории и родительская и дочерняя друг другу одновременно. Что будем с этим делать пока понятия не имею. Но будем решать проблемы по мере их поступления.

Чтобы видеть что происходит, выведем поле parent_id в нашу таблицу.
В файле view/catrgoryes/tmpl/default.php
В секции заголовков таблицы добавляем заголовок
Код
<th style="text-align:center;">
<?php echo JHTML::_('grid.sort',   'Parent category', 'parent_id', $this->lists['order_Dir'], $this->lists['order'] );?>
</th>
И в теле таблицы поле
Код
<td style="text-align:center;">
<?php echo $row->parent_id; ?>
</td>
Переносим поле id рядом с полем parent_id для наглядности и заменяем его заголовок на «ID». Не обязательно, но желательно.
Кстати сделаем попутно поле «номер по порядку». Для этого самым первым заголовком ставим
Код
<th width="5">
<?php echo JText::_( '#' ); ?>
</th>
И первым полем в теле таблицы
Код
<td style="text-align:center;">
<?php echo $this->pagination->getRowOffset( $i ); ?>
</td>
Получаем поле 'Parent category' с нулевыми значениями. Надо заполнять. А для этого в форме редактирования сделать поле с выпадающим списком категорий. Чтобы вывести список надо его из БД получить, а функция getCategoryes, как помним, выводит нам только количество категорий на страницу. Поэтому в модели (models/categoryes.php) делаем новую функцию. Назовем ее getAllcategoryes()
В секции объявления переменных пишем
Код
var $_allcategoryes; //понадобится наверняка
И саму функцию
Код
function getAllcategoryes()
        {
            If (empty($this->_allcategoryes))
            {
            $db = $this->getDBO();
            $query = "SELECT * FROM ". $db->nameQuote('#__simcat_categories');
            $this->_allcategoryes = $this->_getList($query);
            }
        return $this->_allcategoryes;
        }
Поскольку форму мы вызывали прямо из контроллера то и данные получаем в нем же
(controllers/categoryes.php)
В функции editCats() выше $view->display('form');  добавляем
Код
JRequest::setVar('hidemainmenu', 1);//отключение верхнего меню админки, надо было сразу сделать
$allcategoryes = $model->getAllcategoryes();//получение списка категорий
    $cat_list = array();
//первая строка списка, переведем позже
    $cat_list[] = JHTML::_('select.option','0', '- '.JText::_('MAIN CATEGORY').' -', 'id', 'title');
        $k = 0;
//исключаем из списка саму редактируемую категорию
        foreach ($allcategoryes as $k=>$catlist)
      {
        if (($catlist->id != $category->id))$cat_list[] = $catlist;
      }
//создание самого списка
$lists['cat_list'] = JHTML::_('select.genericlist', $cat_list, 'parent_id', '', 'id', 'title', $category->parent_id);
//Передача в шаблон
        $view->assignRef('categorieslist', $lists);
И получаем все это добро в шаблоне (views/categoryes/tmpl/default_form.php) ниже заголовка добавляем
Код
<tr>
       <td width="100px" align="right" class="key">
<label for="greeting">
<?php echo JText::_( 'Parent category' ); ?>:
</label>
      </td>
      <td>
<?php echo $this->categorieslist['cat_list']; ?>
      </td>
</tr>
Упс. Функцию сохранения забыли. Делаем
В этом же файле вверху, где кнопки управления, вместо JToolBarHelper::editList(); ибо нафиг она здесь нужна, вставляем
Код
JToolBarHelper::save();
В контроллере (controllers/categoryes.php)
Регистрируем команду save
Код
$this->registerTask( 'save'       , 	'save' );
Ну и сам обработчик
Код
function save()
{
    $data = JRequest::get('POST');
    $model = $this->getModel();
    if ($model->store())
    {   
        $message = JText::_('Category').'  '.$data['name'].'  '.JText::_('Saved');
    }
    else
    {   
        $message = JText::_('Category Save Failed');
            }
       
        $this->setRedirect('index.php?option=com_simplecatalog', $message);
}
А скрытое поле
 
Код
<input type="hidden" name="id" value="" />
В views/categoryes/tmpl/default_form.php
Заменим на
Код
<input type="hidden" name="id" value="<?php echo $this->ct->id; ?>" /> 
Иначе будет не редактирование, а добавление.
Хм. Вот теперь здесь так и просится дерево категорий. Но это позже. Как его сделать, понятия пока не имею. Надеюсь, что следующий пост будет об этом, но это как бог даст и мозги сработают.


Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: Информация по написанию компонента
« Ответ #88 : 15.05.2009, 19:27:52 »
Цитировать
опшн через глобал, зато мейнфрейм - пожалте, переопределяем.
это как минимум странно...

$mainframe = JFactory::getApplication() - это где? фронт? админка? кхм...

mainframe является единой глобальной переменной, соотв. global $mainframe.
а $option = JRequest::getCmd( 'option' );
Цитировать
Результат экспериментов.  Smiley
В оригинальном примере global $option, $mainframe;
Пытался понять в чем разница
Понял кажется в чем разница. Когда global $mainframe; берем уже готовые данные из переменной,
а когда $mainframe = JFactory::getApplication(); создается лишний экземпляр класса, лишняя нагрузка.
Если не прав поправьте. crazy!
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Physicist

  • Глобальный модератор
  • 926
  • 186 / 0
  • Рябов Денис
Re: Информация по написанию компонента
« Ответ #89 : 15.05.2009, 19:28:48 »
Вот теперь здесь так и просится дерево категорий. Как его сделать, понятия пока не имею.

В версии Joomla!1.6 для этой цели есть (т.е. будет) класс JCategoryTree.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод компонента в качестве модуля

Автор fMichail

Ответов: 4
Просмотров: 2133
Последний ответ 06.08.2014, 15:16:29
от anar4ik
Переменные, доступные из любого компонента

Автор Serjo_man

Ответов: 3
Просмотров: 798
Последний ответ 03.02.2014, 05:22:00
от Arkadiy
Работа компонента Ninja RSS 1.1.11 на Joomla 1.5.26

Автор Adam.K

Ответов: 1
Просмотров: 822
Последний ответ 16.12.2013, 21:26:31
от Adam.K
Доработка компонента - нужна помощь

Автор wfire

Ответов: 5
Просмотров: 723
Последний ответ 24.09.2013, 13:17:28
от robert
Доработка компонента com_users в админке.

Автор dolphin_al

Ответов: 2
Просмотров: 1365
Последний ответ 04.02.2013, 08:45:12
от SolopoV