Новости Joomla

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

denism300

  • Захожу иногда
  • 209
  • 5 / 0
У элементов есть несколько параметров, каждый из которых имеет два состояния (да или нет), по типу как у статуса элемента (опубликовано/не опубликовано).
Для этих параметров создан собственный тип поля, являющийся аналогом поля list.
Здесь на форуме мне посоветовали не писать отдельную функцию для переключения состояний каждого параметра, а использовать одну, куда аргументом передавать имя переключаемого параметра.
Ввиду того, что я недавно начал изучать программирование под Joomla, возник ряд вопросов:
1. Для фильтрации элементов по данным параметрам нужно будет писать отдельную функцию для каждого параметра или достаточно одной, в которую аргументом будет передаваться имя параметра.
2. Как взять имя параметра для передачи его в функцию?
Что бы было более понятно, приведу кусок кода /administrator/com_vmgtx/views/products/default_body.php:
Код: php
<tr class="row">
<td><?php echo JHtml::_('grid.id', $i, $item->id); ?></td>
<td><a href="index.php?option=com_vmgtx&task=product.edit&id=<?php echo $item->id; ?>" title="<?php echo JText::_('COM_VMGTX_EDIT_PRODUCT'); ?>"><?php echo $item->product_name; ?></a></td>
<td><?php echo JHTML::_('jgrid.published', $item->state, $i, 'products.', $canChange); ?></td>
<td><?php echo JHTML::_('vmgtx.filters.changeState', $item->is_shipping, $i, 'products.', $canChange); ?></td>
<td><?php echo JHTML::_('vmgtx.filters.changeState', $item->use_pickup, $i, 'products.', $canChange); ?></td>
<td><?php echo JHTML::_('jgrid.published', $item->use_store, $i, 'products.', $canChange); ?></td>
</tr>
Собственно, параметры, состояния которых необходимо переключать: is_shipping, use_pickup, use_store
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
для начала стоит определиться, что надо делать либо фильтровать либо переключать)
*

denism300

  • Захожу иногда
  • 209
  • 5 / 0
для начала стоит определиться, что надо делать либо фильтровать либо переключать)
и фильтровать по параметрам да/нет и, собственно, менять эти параметры на странице списка элементов
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
чет вас созсвем не в ту степрь унесло.. аналог поля лист для да/нет =) хотя даже для опубликованных используется поля List просто у самих кнопок если итемлисте админке есть одельная функция. Это так к слову.
Второе. Вся фильтрация сортировка и т.д делается в model
Третье. Как нам вам помогать если мы просто видим кусок не пойми чего. vmgtx.filters.changeState - это как я понимаю функция смены как-того вашего параметра, и ни как не связана ни с фильтрацией ни с сортировкой. Да и вообще ее нахождение в итемлисте сомнительно.
Четвертное. Какая функция фильрация. Базово все просто на onChange вешается отправка формы(this.form.submit()), отправляемся на ту же страницу с post и делаем выборку уже с учетом параметров.

P.S простите но с каждым топиком убеждаюсь "не по Сеньке и шапка". Как я вижу логику вы на ходу придумываете да и базовых знаний не хватает.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

denism300

  • Захожу иногда
  • 209
  • 5 / 0
чет вас созсвем не в ту степрь унесло.. аналог поля лист для да/нет =) хотя даже для опубликованных используется поля List просто у самих кнопок если итемлисте админке есть одельная функция. Это так к слову.
Второе. Вся фильтрация сортировка и т.д делается в model
Третье. Как нам вам помогать если мы просто видим кусок не пойми чего. vmgtx.filters.changeState - это как я понимаю функция смены как-того вашего параметра, и ни как не связана ни с фильтрацией ни с сортировкой. Да и вообще ее нахождение в итемлисте сомнительно.
Четвертное. Какая функция фильрация. Базово все просто на onChange вешается отправка формы(this.form.submit()), отправляемся на ту же страницу с post и делаем выборку уже с учетом параметров.

P.S простите но с каждым топиком убеждаюсь "не по Сеньке и шапка". Как я вижу логику вы на ходу придумываете да и базовых знаний не хватает.
сейчас постараюсь объяснить подробнее.

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

2. я в курсе, что сортировка и фильтрация делается в модели.

3. vmgtx.filters.changeState - это фильтр. вот его код:
Код: php
public static function changeState($value, $i, $prefix = '') {
JHtml::_('bootstrap.tooltip');
if (is_object($value)) {
$value = $value->is_shipping;
}
$task = $value ? 'unshipped' : 'shipped';
$alt = $value ? JText::_('JPUBLISHED') : JText::_('JUNPUBLISHED');
$action = $value ? JText::_('JLIB_HTML_UNPUBLISH_ITEM') : JText::_('JLIB_HTML_PUBLISH_ITEM');
$icon = $value ? 'publish' : 'unpublish';
 
return '<a href="#" class="btn btn-micro hasTooltip' . ($value == 1 ? ' active' : ''). '" onclick="return listItemTask(\'cb' . $i . '\',\'' . $prefix . $task . '\')" title="' . $action . '">
<span class="icon-' . $icon . '"></span>
</a>';
}
но его надо адаптировать для всех параметров фильтрации, либо писать для каждого свой. пока он написан только для параметра is_shipped

4. с реализацией фильтрации мне более-менее все понятно. не понятно, как реализовать одну функцию, в которую аргументом будет передаваться параметр, состояние которого надо изменить.

5. логику я придумываю не на ходу, она уже продумана. базовых знаний api Joomla, действительно, не хватает. "не по Сеньке шапка" - а вы родились со знаниями всего этого, не учились, не задавали глупых вопросов? когда ко мне обращаются люди с глупым, на мой взгляд, вопросом в той области, в которой я компетентен, я стараюсь доходчиво объяснить человеку, общаясь, при этом, на понятном ему языке, т.е. с минимумом профессиональных терминов. при этом, я не считаю свое поведение правильным или нет, и уж, тем более, не призываю никого к такому же поведению.
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
начну с пятного. Вопрос не только в api Joomla а вообще в понимании того что вы делаете. "не по Сеньке шапка"  - не значит что не надо учиться или же что вы не сможете. Просто сейчас вам это не посилам. Делайте все постепенно. Вы же в омут с головой прыгаете. И тут не только не получиться то что вы хотите, или будет ли оно работать как надо( а судя по коду вообще будет чудом если оно будет работать) но столько гемороя без отдачи напрочь отобьет у вас желание что либо делать. А потом вы будите кричать что это Joomla фигня.  Начните с простого, с модулей, плагинов, шаблонов, чтобы понять как вообще это работает. А не содитесь пилить компонент довесок в vm. Возможно с вашей ситуацией вообще справиться плагин. Доп компонент вообще пилят лишь в крайнем случае и при любом раскладе он увеличит вес и поползут проблемы с оптимизацией.
Да и вообще в какой извращенной вселенной вы решили что функция changeState (Дословно смена состояния) связанна с сортировкой. Ееезадача сменить состояние. К примеру опубликовано/ не опубликовано.

Для сортировки через через заглавие таблицы исполеться JHTML::_('searchtools.sort' для фильтрации поля беруться из XML файла. И тот и тот ни требует ни какой дополнительной функции (ну кроме  populateState  getStoreId и getSortFields и то фильтрация будет работать и без них). Фильтрация и сортировка это просто работа с моделью.
Свой тип поля вам посоветовали, потому что вы всех давно уже вогнали в ступор. Вы пытаетесь писать умными словами и запутываете всех еще больше. И простите вы спрашиваете  
Цитировать
Как взять имя параметра для передачи его в функцию?.
Вашего параметра в вашем компоненте для вашей функции, как взять как определите как и взмете.  мы даже не видим что вы там на вытворяли.
Поэтому то и  "не по Сеньке шапка" без обид ничего личного. Просто тут за вас уже пол 3\4 написали. А вы плодите бессмысленные посты ведь не возможно сказать будет ли ваш код работать не видя всей механики. Максимум что можно это сказать что синтаксических ошибок тут нет.
Я уж промолчу что это все ни каким боком к Общие вопросы веб разработки.
« Последнее редактирование: 13.10.2016, 20:38:05 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

denism300

  • Захожу иногда
  • 209
  • 5 / 0
начну с пятного. Вопрос не только в api Joomla а вообще в понимании того что вы делаете. "не по Сеньке шапка"  - не значит что не надо учиться или же что вы не сможете. Просто сейчас вам это не посилам. Делайте все постепенно. Вы же в омут с головой прыгаете. И тут не только не получиться то что вы хотите, или будет ли оно работать как надо( а судя по коду вообще будет чудом если оно будет работать) но столько гемороя без отдачи напрочь отобьет у вас желание что либо делать.
Мне не интересно писать всякую ерунду типа "hello world", которая не несет практической пользы. Поэтому, как-то так.

А потом вы будите кричать что это Joomla фигня.  Начните с простого, с модулей, плагинов, шаблонов, чтобы понять как вообще это работает.
У меня есть опыт работы с Joomla!. Делал сайты-визитки, интернет-магазины с несложным функционалом на VM и JS. Опять же шаблоны делал несложные. Поэтому, кричать, что Joomla! - фигня я не буду.

А не содитесь пилить компонент довесок в vm. Возможно с вашей ситуацией вообще справиться плагин. Доп компонент вообще пилят лишь в крайнем случае и при любом раскладе он увеличит вес и поползут проблемы с оптимизацией.
это не в довесок к VM, это отдельный компонент, который берет товары из VM, добавляет определенные параметры и выводит на экран. От VM там используется только БД с товарами.

Да и вообще в какой извращенной вселенной вы решили что функция changeState (Дословно смена состояния) связанна с сортировкой. Ееезадача сменить состояние. К примеру опубликовано/ не опубликовано.
Тут согласен, фигня с названием получилась. Переделал во избежание путаницы.

Для сортировки через через заглавие таблицы исполеться JHTML::_('searchtools.sort' для фильтрации поля беруться из XML файла. И тот и тот ни требует ни какой дополнительной функции (ну кроме  populateState  getStoreId и getSortFields и то фильтрация будет работать и без них). Фильтрация и сортировка это просто работа с моделью.
с сортировкой разобрался.

Но это все оффтоп.
Собственно, вопрос по теме: я правильно понимаю алгоритм того, что я пытаюсь сделать?
1. добавляем дополнительный параметр $optionName в /administrator/com_vmgtx/views/products/default_body.php, например, так:
Код: php
<td class="center">
<?php echo JHTML::_('vmgtxhtml.productadministrator.productOptions', $item->is_shipping, $i, 'products.', $canChange, $optionName='is_shipping'); ?>
</td>
2. передаем этот параметр в модель, где на основании значения параметра меняем значения в БД?

если мыль моя верна, подскажите, как этот параметр передать в модель.
*

denism300

  • Захожу иногда
  • 209
  • 5 / 0
немного переосмыслил алгоритм.
берем значение переменной $optionName отсюда: /administrator/components/com_vmgtx/views/products/default_body.php
Код: php
<td class="center">
<?php echo JHTML::_('vmgtxhtml.productadministrator.available', $item->is_shipping, $i, 'products.', $canChange, $optionName='is_shipping'); ?>
</td>

передаем сюда в функцию productOptions, которая в /administrator/components/com_vmgtx/helpers/html/productadministrator.php
Код: php
public static function available($value, $i, $canChange = true, $optionName) {
JHtml::_('bootstrap.tooltip');
dump($optionName, 'optionName');
$states = array(
0 => array('unavailable', 'products.available', 'JPUBLISHED'),
1 => array('available', 'products.unavailable', 'JUNPUBLISHED'),
);
$state = JArrayHelper::getValue($states, (int) $value, $states[1]);
$icon = $value ? 'publish' : 'unpublish';

if ($canChange) {
$html = '<a href="#" onclick="return listItemTask(\'cb' . $i . '\',\'' . $state[1] . '\')" class="btn btn-micro hasTooltip'
. ($value == 1 ? ' active' : ''). '" title="' . JHtml::tooltipText($state[3]). '"><span class="icon-' . $icon . '"></span></a>';
}
else {
$html = '<a class="btn btn-micro hasTooltip disabled' . ($value == 1 ? ' active' : ''). '" title="'
. JHtml::tooltipText($state[2]). '"><span class="icon-' . $icon . '"></span></a>';
}
 
return $html;
}
далее вызываем функцию в контроллере с этим параметром, который, в свою очередь, вызывает функцию в модели, которая меняет параметр в БД.
Алгоритм верен?
Собственно, вопрос:
1. Как в эту функцию передать значение переменной? У меня, почему-то, она становится булевой и принимает значение TRUE, хотя в /administrator/components/com_vmgtx/views/products/default_body.php ей присвоено строковое значение.
2. Как затем это значение передать в контроллер?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Юникод при записи параметров в базу данных

Автор Taatshi

Ответов: 12
Просмотров: 872
Последний ответ 30.10.2017, 14:27:31
от SeBun
Функция из модели в публичной части компонента в админке

Автор denism300

Ответов: 2
Просмотров: 741
Последний ответ 23.11.2016, 14:01:39
от denism300
Не подключается функция из php скрипта

Автор smls

Ответов: 5
Просмотров: 855
Последний ответ 19.08.2016, 21:55:27
от smls
Функция округления вниз или отсечения дробных в less или чистом js

Автор AlekVolsk

Ответов: 7
Просмотров: 976
Последний ответ 21.02.2016, 12:00:29
от AlekVolsk
J3. Получение параметров шаблона в error.php шаблона

Автор AlekVolsk

Ответов: 2
Просмотров: 1002
Последний ответ 18.11.2014, 09:44:26
от AlekVolsk