Новости Joomla

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

Фей

  • Давно я тут
  • 743
  • 86 / 3
  • Истина в вине!
Re: Написание компонента для Joomla 1.6
« Ответ #150 : 11.04.2012, 19:00:12 »
Дык методом тыка все умеют  8) А вот пояснить, почему так - слабо? :)

А ты телепат ? Без полного кода тут вообще нехера чего подсказывать!
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Написание компонента для Joomla 1.6
« Ответ #151 : 16.04.2012, 23:38:46 »
Где-то уже оговорился, что хоту сделать поле в админпанели полностью аналогичное полю типа user. Поле это можно увидеть, например, когда создаёшь новость есть возможность сменить автора статьи.

Вот и поставлена цель сделать тоже самое, но для выбора родительского объекта - parent_id.

Приведу list типа user,... чтоб не бегать...
libraries/joomla/form/rules/user.php
Спойлер
[свернуть]

Собственно подскажите гуру как это проще решить? Я полез ковырять что это такое
Код
 function jSelectUser_' . $this->id . '(id, title) {
Если есть мысли пишите, я тоже буду отписывать!
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Написание компонента для Joomla 1.6
« Ответ #152 : 16.04.2012, 23:46:16 »
Цитировать
Код:

 function jSelectUser_' . $this->id . '(id, title) {

Если есть мысли пишите, я тоже буду отписывать!
Понял. Сморозил... Это просто функция... До сих пор не пойму как все заворачивается в ту табличку
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Написание компонента для Joomla 1.6
« Ответ #153 : 17.04.2012, 00:08:42 »
Собственно вот мой ответ
admin/models/fields/parentid.php
Код
<?php
defined('JPATH_PLATFORM') or die;

class JFormFieldParentid extends JFormField
{

public $type = 'Parentid';


public function getTable($type = 'Org', $prefix = 'PhonebookTable', $config = array())
{
return JTable::getInstance($type, $prefix, $config);
}


protected function getInput()
{
// Initialize variables.
$html = array();
$groups = $this->getGroups();
$excluded = $this->getExcluded();
$link = 'index.php?option=com_phonebook&amp;view=orgs&amp;layout=modal&amp;tmpl=component&amp;field=' . $this->id;

// Initialize some field attributes.
$attr = $this->element['class'] ? ' class="' . (string) $this->element['class'] . '"' : '';
$attr .= $this->element['size'] ? ' size="' . (int) $this->element['size'] . '"' : '';

// Initialize JavaScript field attributes.
$onchange = (string) $this->element['onchange'];

// Load the modal behavior script.
JHtml::_('behavior.modal', 'a.modal_' . $this->id);

// Build the script.
$script = array();
$script[] = ' function jSelectUser_' . $this->id . '(id, name) {';
$script[] = ' var old_id = document.getElementById("' . $this->id . '_id").value;';
$script[] = ' if (old_id != id) {';
$script[] = ' document.getElementById("' . $this->id . '_id").value = id;';
$script[] = ' document.getElementById("' . $this->id . '_name").value = name;';
$script[] = ' ' . $onchange;
$script[] = ' }';
$script[] = ' SqueezeBox.close();';
$script[] = ' }';

// Add the script to the document head.
JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));

// Load the current username if available.
//$table = JTable::getInstance('org');
$table = $this->getTable;
if ($this->value)
{
$table->load($this->value);
}
else
{
$table->username = JText::_('JLIB_FORM_SELECT_USER');
}

// Create a dummy text field with the user name.
$html[] = '<div class="fltlft">';
$html[] = ' <input type="text" id="' . $this->id . '_name"' . ' value="' . htmlspecialchars($table->name, ENT_COMPAT, 'UTF-8'). '"'
. ' disabled="disabled"' . $attr . ' />';
$html[] = '</div>';

// Create the user select button.
$html[] = '<div class="button2-left">';
$html[] = '  <div class="blank">';
if ($this->element['readonly'] != 'true')
{
$html[] = ' <a class="modal_' . $this->id . '" title="' . JText::_('JLIB_FORM_CHANGE_USER'). '"' . ' href="' . $link . '"'
. ' rel="{handler: \'iframe\', size: {x: 800, y: 500}}">';
$html[] = ' ' . JText::_('JLIB_FORM_CHANGE_USER'). '</a>';
}
$html[] = '  </div>';
$html[] = '</div>';

// Create the real field, hidden, that stored the user id.
$html[] = '<input type="hidden" id="' . $this->id . '_id" name="' . $this->name . '" value="' . (int) $this->value . '" />';

return implode("\n", $html);
}

/**
* Method to get the filtering groups (null means no filtering)
*
* @return  mixed  array of filtering groups or null.
*
* @since   11.1
*/
protected function getGroups()
{
return null;
}

/**
* Method to get the users to exclude from the list of users
*
* @return  mixed  Array of users to exclude or null to to not exclude them
*
* @since   11.1
*/
protected function getExcluded()
{
return null;
}
}

И плюс ко всему создал layout
admin/views/orgs/tmpl/modal.php
Код
<?php
defined('_JEXEC') or die;

JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');

$field = JRequest::getCmd('field');
$function = 'jSelectUser_'.$field;
$listOrder = $this->escape($this->state->get('list.ordering'));
$listDirn = $this->escape($this->state->get('list.direction'));
?>
<form action="<?php echo JRoute::_('index.php?option=com_phonebook&view=orgs&layout=modal&tmpl=component');?>" method="post" name="adminForm" id="adminForm">
<fieldset class="filter">
<div class="left">
<label for="filter_search"><?php echo JText::_('JSEARCH_FILTER'); ?></label>
<input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" size="40" title="<?php echo JText::_('COM_PB_SEARCH_IN_ORG'); ?>" />
<button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button>
<button type="button" onclick="document.id('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button>
<button type="button" onclick="if (window.parent) window.parent.<?php echo $this->escape($function);?>('', '<?php echo JText::_('JLIB_FORM_SELECT_USER')?>');"><?php echo JText::_('JOPTION_NO_USER')?></button>
</div>

</fieldset>

<table class="adminlist">
<thead>
<tr>
<th class="left">
<?php echo JHtml::_('grid.sort', 'COM_PB_ORG_HEADING_NAME', 'a.name', $listDirn, $listOrder); ?>
</th>
<th class="nowrap" width="25%">
<?php echo JHtml::_('grid.sort', 'COM_PB_ORG_HEADING_TITLE', 'a.title', $listDirn, $listOrder); ?>

</tr>
</thead>
<tfoot>
<tr>
<td colspan="15">
<?php echo $this->pagination->getListFooter(); ?>
</td>
</tr>
</tfoot>
<tbody>
<?php
$i = 0;
foreach ($this->items as $item) : ?>
<tr class="row<?php echo $i % 2; ?>">
<td>
<a class="pointer" onclick="if (window.parent) window.parent.<?php echo $this->escape($function);?>('<?php echo $item->id; ?>', '<?php echo $this->escape(addslashes($item->name)); ?>');">
<?php echo $item->name; ?></a>
</td>
<td align="center">
<?php echo $item->title; ?>
</td>

</tr>
<?php endforeach; ?>
</tbody>
</table>
<div>
<input type="hidden" name="task" value="" />
<input type="hidden" name="field" value="<?php echo $this->escape($field); ?>" />
<input type="hidden" name="boxchecked" value="0" />
<input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" />
<input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" />
<?php echo JHtml::_('form.token'); ?>
</div>
</form>
Переводы соответственно пока не делал.
Гуру прошу делать замечания.
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Написание компонента для Joomla 1.6
« Ответ #154 : 17.04.2012, 09:14:52 »
Понял подсказку... Этот вариант у меня просто по образу и подобию...
Спасибо! Может что-то еще?
*

som555

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Re: Написание компонента для Joomla 1.6
« Ответ #155 : 19.04.2012, 15:56:00 »
Пишу компоненту использующую форму фильтров.
Вопрос такой: где(в каком месте кода) сбросить фильтры моей компоненты(удалить из сессии) при переходе на другой раздел сайта (переход по Главному меню)?
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Написание компонента для Joomla 1.6
« Ответ #156 : 19.04.2012, 17:17:02 »
Хмм, так не получится сделать. Как Вы в своем компоненте узнаете, что пользователь перешел на другую страницу не Вашего копонента?
*

som555

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Re: Написание компонента для Joomla 1.6
« Ответ #157 : 20.04.2012, 10:50:52 »
Ну, а если не в компоненте, то куда можно добавить обнуление фильтров?
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Написание компонента для Joomla 1.6
« Ответ #158 : 20.04.2012, 11:06:44 »
Тогда их нужно добавлять во все компоненты... А зачем Вам нужно их обнулять - они как-то мешают пользователю в дальнейшем?
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Написание компонента для Joomla 1.6
« Ответ #159 : 20.04.2012, 16:17:04 »
вообще то можно для этого написать плагин )

вообще то можно для этого написать плагин )
Да, чего-то про них я и забыл ^^
Я так понимаю, что лучше вешать на событие onAfterInitialise. А в какую группу поместить - system?
*

som555

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Re: Написание компонента для Joomla 1.6
« Ответ #160 : 20.04.2012, 20:06:27 »
Заметил, что route.php из компоненты вызывается каждый раз. Правильно ли заметил?
Может там можно что сделать?
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Написание компонента для Joomla 1.6
« Ответ #161 : 17.07.2012, 13:27:19 »
Привет всем! Давно тут не был...
Вопрос: Создаю в одном ВИДе и список позиций и показ конкретной. (т.е. есть весь список, каждый элемент как ссылка; по ссылке показывает страницы с подробным описанием элемента)

Так вот пытаюсь развести по разным layers (default.php и default_item.php) при помощи проверки JRequest::getInt('id', 0) но это всегда выдает 0.
Кликаю по элементу получаю ссылку типа http://localhost/adstext/text/4-Виктория и отсюда не берется id. ссылки обрабатываются в route.php и происходит slug-преобразование.
Кажется мне что дело в этом самом slug но не понимаю как решить.
Спасибо!
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Написание компонента для Joomla 1.6
« Ответ #162 : 17.07.2012, 15:20:57 »
print_r($_REQUEST); и смотрите или правильно прошел роутинг.. возможно роутер обработал как что то иное!
Огромное спасибо! Почему-то забыл о банальных проверках, хотя только ими и пользусь собственно.
да в переменных не было id. Его надо определять в массив $vars в router.php у меня там была ерунда написана. Всё исправил, всё заработало.
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Написание компонента для Joomla 1.6
« Ответ #163 : 18.07.2012, 12:59:44 »
всё заработало.
Не всё к сожалению. Прошу помочь разобраться с router.php
Код
function MagnitParseRoute($segments)
{
$vars = array();
$app  =& JFactory::getApplication();
$menu =& $app->getMenu();
$item =& $menu->getActive();
// view is always the first element of the array
$count = count($segments);

switch ($item->query['view'])
{
case 'text':
$id = explode ( ':', $segments[$count-1] );
$vars['id'] = (int) $id[0];
$vars['view'] = 'text';
break;
}                 

return $vars;
}

когда я делаю пункт меню (Alias = AdsText) то в компоненте все работает шикарно.
получаю ссылки типа
/adsrexr/text/1-петя и /adsrexr/text/8-вася
id вытаскивается из последнего сегмента - всё хорошо.

Но написал я модуль для компонента!
вписал обычную ссылку как я писал в компоненте.
но ссылка урезается по типу
/component/nameComponent/text/1-петя и /component/nameComponent/text/8-вася
и ссылки не работают.
понимаю что дело в том, что надо подвязать пункт меню сюда... Подскажите! Как?
Или подскажите правильное решение.
В итоге хочу получить: ссылки из модуля по типу /adsrexr/text/8-вася
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Написание компонента для Joomla 1.6
« Ответ #164 : 18.07.2012, 15:26:22 »
Да, с модулем есть такая засадка...

Некоторые разработчики просто в параметры модуля выносят настройку Itemid, и потом этот Itemid используют в коде.
Другие пишут хелпер, в котором определяют, как правильно создать ссылку. Например, вот как для com_content:
Код
$item->link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catslug));
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Написание компонента для Joomla 1.6
« Ответ #165 : 18.07.2012, 15:39:56 »
Другие пишут хелпер, в котором определяют, как правильно создать ссылку. Например, вот как для com_content используют:
Код
$item->link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catslug));
Если можно чуть подробнее... не всё схватил.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Написание компонента для Joomla 1.6
« Ответ #166 : 18.07.2012, 15:42:23 »
abstract class ContentHelperRoute

Обратите внимание на метод _findItem($needles = null)
По сути Вам необходимо найти нужный Itemid во всех пунктах меню и потом использовать его в коде модуля.
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Написание компонента для Joomla 1.6
« Ответ #167 : 18.07.2012, 17:09:54 »
Итак, то что я понял.
если к ссылке прикрепляем &Itemid=427 (это пример моего конкретного случая), то все у нас начинает работать.
вопрос в том, чтоб модуль сам нашел этот Itemid.
Взяв за основу модули и хелперы сказанного выше непонятнось вызывает строка
Код
$needles = array(
'article' => array((int) $id)
);
что в этой переменной должно быть?
ассоциативный массив с ключем как название view? и содержащим еще массив с одним значением id? собственно и какого id
в _findItem почти все понятно, кроме тех операций что $needles происходит.
и докучу что происходит в $lookup и зачем там массивы "лепятся"?

Убил всю функцию _findItem до вида
Код
$app = JFactory::getApplication();
$menus = $app->getMenu('site');
$component = JComponentHelper::getComponent('com_magnit');
$items = $menus->getItems('component_id', $component->id);
return $items[0]->id;

Скорее всего кучу нужного срезал. Но никак не пойму как заставить работать с lookup и needles понормальному и зачем там все это.
to b2z огромное спасибо.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Написание компонента для Joomla 1.6
« Ответ #168 : 18.07.2012, 21:39:54 »
Ну суть в том, чтобы для каждого view обнаружить в менюшке id. needles скорее всего и не нужны. А $items[0]->id; ничего не выдает?
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Написание компонента для Joomla 1.6
« Ответ #169 : 20.07.2012, 10:48:04 »
А $items[0]->id; ничего не выдает?
Все выдает и решает мою частную задачу. Но я же срезал все вот и хотел узнат что именно я срезал.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Написание компонента для Joomla 1.6
« Ответ #170 : 20.07.2012, 15:44:16 »
Все выдает и решает мою частную задачу. Но я же срезал все вот и хотел узнат что именно я срезал.
Да я и сам не вникал в этот хелпер, если честно ^-^
*

alex-inc

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: Написание компонента для Joomla 1.6
« Ответ #171 : 21.10.2012, 00:45:05 »
Здравствуйте. Помогите разобраться с XML в админке.
Есть поле в xml:
Код
<field 
    name="cat"
    type="sql"
    default=""
    label="COM_ALEXESTATE_SELECT_CATEGORY"
    query="SELECT category.id, category.name FROM #__alexestate_category AS category"
    key_field="id"
    value_field="name"
    />
Как сделать чтобы defaul принимало значение залогиненного пользователя?
*

alex-inc

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: Написание компонента для Joomla 1.6
« Ответ #172 : 21.10.2012, 14:52:39 »
Спасибо большое. В моем примере id пользователя и не пахнет, т.к. писал глубокой ночью, и случайно не ту часть кода скопировал, но принцип мне понятен.
*

TrOn

  • Захожу иногда
  • 91
  • 0 / 0
Re: Написание компонента для Joomla 1.6
« Ответ #173 : 05.02.2013, 20:43:12 »
Всем привет, помогите разобраться как сохранить файл в админке.

сейчас в админке выводить поле из XML
Код
<field name="catalog_pdf" type="file" label="PDF (описание)" description="выбирите файл размером до 10 мегабайт" size="10" accept="application/pdf" />
а вот как его обработать в моделе? я че-то думал он там сразу выдат путь куда сохранилось.... :)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Документация по созданию модуля для Joomla 2.5 и Joomla 3.x

Автор b2z

Ответов: 1
Просмотров: 1990
Последний ответ 29.07.2015, 09:40:30
от b2z
Создание компонента MVC

Автор borodatych

Ответов: 36
Просмотров: 3436
Последний ответ 13.04.2015, 08:17:30
от flyingspook
Подскажите как сделать русификацию компонента)

Автор stardel

Ответов: 4
Просмотров: 6502
Последний ответ 08.04.2015, 09:08:00
от oxotnikkz
JPluginHelper::importPlugin('content') в Joomla 1.7

Автор Dutch

Ответов: 2
Просмотров: 4467
Последний ответ 30.03.2015, 14:22:51
от twins717
Документация по созданию компонента для Joomla 2.5

Автор Sulpher

Ответов: 74
Просмотров: 55376
Последний ответ 17.11.2014, 13:43:07
от limon142