Новости Joomla

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

maxis

  • Захожу иногда
  • 119
  • 1 / 0
Вот код:
Спойлер
[свернуть]

Этот отрезок кода из плагина (https://docs.joomla.org/Adding_custom_fields_to_the_article_component) и записывает и стирает записи. Где идёт сортировка действий? Не могу понять. Или направьте на документацию.
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
 if ($articleId && isset($article->rating) && (count($article->rating)))
Если $articleId не пустота и isset($article->rating) существует это поле и (count($article->rating)) в массиве $article->rating есть элементы!
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Вопрос поставлен немного странно.
Цитировать
Где идёт сортировка действий?
Это что значит? Почему сначала удаляет и потом записывает?
*

maxis

  • Захожу иногда
  • 119
  • 1 / 0
Istaan, благодарю!

Вопрос поставлен немного странно. Это что значит? Почему сначала удаляет и потом записывает?

Просто насколько я понял в этом блоки сначала проверяется, а потом выполняется попытка сначала удаления записи, после очистка запроса, а потом добавления записи.
Вот я и спрашиваю на основании чего делается вывод, что надо записывать или удалять? Судя по тому где размещено это условие плагин работает когда статью сохраняют, т.е. всегда при изменении. Но в одном случае, он пополняет БД данными, а в другом удаляет. Так вот как связаны эти действия плагина с действиями пользователя? Где проверка, что надо сохранить данные или удалить?
Хочу свой плагин написать, изучаю готовое. Pagebreak не осилил по первости, голосование тоже сложновато.

На самом деле нужен плагин, который подключается к удалённому серверу MSSQL и делает выборку по заданным критериям.
Насколько понял из форума надо:
- проверять статья ли это
- проверять установлена ли submit
Как получать и передавать данные из формы, пока не понял. Если знаете похожие плагины, киньте ссылкой, буду изучать. Или на руководство, буду благодарен.
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Но в одном случае, он пополняет БД данными, а в другом удаляет.
никаких случаев тут нет! по крайне мере в этом примере
это все одна операция - называется обновление данных
сначала удаляется существующая запись, если она есть, потом добавляется новая
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Цитировать
На самом деле нужен плагин, который подключается к удалённому серверу MSSQL и делает выборку по заданным критериям.
В какой момент он должен делать? При сохранении статьи?
*

maxis

  • Захожу иногда
  • 119
  • 1 / 0
В какой момент он должен делать? При сохранении статьи?

При выводе материала. Сначала выводится форма, если Submit не нажали, а если нажали результат запроса к БД. Ещё тут слышал, что нужно прописывать драйвер для работы с БД. Вот не знаю для MSSQL какой драйвер нужен?
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Какая форма? Вместо материала? Ничего не понятно...

http://joomlaportal.ru/blogs/development/2410-podklyuchenie-k-vneshnej-baze-dannykh


Драйвер mssql
*

maxis

  • Захожу иногда
  • 119
  • 1 / 0
Какая форма? Вместо материала? Ничего не понятно...

В том месте где есть метка, например {script} выводится форма, в эту форму пользователь вводит параметры запроса и нажимает Submit. Запрос обрабатывается и результат выводится на этой же странице.
В принципе всё.
*

b2z

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

maxis

  • Захожу иногда
  • 119
  • 1 / 0
Спойлер
[свернуть]

Пока вот родил первоначальную версию, но всё равно не работает :-) Изучу материалы - отпишусь.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
SELECT title FROM #_content WHERE created > '2012-12-31' AND created < '2013-12-31'"

#_content должно быть #__content

И раз уж Вы получаете объект $query = $db->getQuery(true); , зачем потом строку использовать? Используйте сам объект.
*

maxis

  • Захожу иногда
  • 119
  • 1 / 0
SELECT title FROM #_content WHERE created > '2012-12-31' AND created < '2013-12-31'"

#_content должно быть #__content

И раз уж Вы получаете объект $query = $db->getQuery(true); , зачем потом строку использовать? Используйте сам объект.

Статья отличная, я тут запрос свой поправил в таком вот виде теперь:
Спойлер
[свернуть]

Почему в статье встречается сначала такой формат записи запроса? ... $db->quoteName... ?
Что такое quoteName? Где можно прочитать про то, в какие моменты вызывается плагин? Ссылка от старших на материал очень помогла бы. Просто я в статье (http://egeshi.com/уроки/joomla/joomla-2-5-по-русски/создание-плагина-для-контента) увидел, что для метода, который я описываю везде указывают разные свойства. Так не может быть. К тому же сейчас плагин пусть ничего не выводит, но и не стирает метку, а по логике должен.
Спойлер
[свернуть]

Уже хочется просто что-нибудь написать на странице  ;D
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Цитировать
Что такое quoteName?
Там же есть документация по этому методу. Первый материал о JDatabase.

Цитировать
Где можно прочитать про то, в какие моменты вызывается плагин?
https://docs.joomla.org/Plugin/Events

По поводу реализации - посмотрите любой плагин контента
https://github.com/joomla/joomla-cms/tree/staging/plugins/content
*

maxis

  • Захожу иногда
  • 119
  • 1 / 0
Там же есть документация по этому методу. Первый материал о JDatabase.
https://docs.joomla.org/Plugin/Events

Да, всё изучил, теперь выводит данные. Благодарю.

Вот так выглядит теперь метод:
Спойлер
[свернуть]

К сожалению не получается через конструктор запросов делать запрос, только прямой запрос использовал. Не подскажете почему не работает? (он закомментирован в коде)
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Потому что вы перепутали знаки больше меньше для запроса в конструкторе запросов:
 created > '2012-06-01',  а у вас 'created <' . $db->quote('2012-06-01')
created < '2012-12-31', а у вас ('created >' . $db->quote('2012-12-31')
*

maxis

  • Захожу иногда
  • 119
  • 1 / 0
Потому что вы перепутали знаки больше меньше для запроса в конструкторе запросов:
 created > '2012-06-01',  а у вас 'created <' . $db->quote('2012-06-01')
created < '2012-12-31', а у вас ('created >' . $db->quote('2012-12-31')

Благодарю, невнимательность мой бич.
Ещё вот форму запихнуть хочу, не знаю где почитать насчёт использования jform (если правильно собрался идти). Не подскажите?
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Цитировать
Ещё вот форму запихнуть хочу, не знаю где почитать насчёт использования jform (если правильно собрался идти). Не подскажите?
Если форма маленькая, то JForm Вам не нужен.

https://www.ostraining.com/howtojoomla/how-tos/development/getting-started-with-jform/

Пример использования в плагине profile:
https://github.com/joomla/joomla-cms/blob/staging/plugins/user/profile/profile.php

Или просто форма:
https://github.com/joomla/joomla-cms/blob/staging/plugins/content/vote/vote.php
*

maxis

  • Захожу иногда
  • 119
  • 1 / 0
Или просто форма:
https://github.com/joomla/joomla-cms/blob/staging/plugins/content/vote/vote.php

Да, действительно, форма не нужна, это слишком сложно для моих задач, я так понял к Jhtml надо подробнее приглядется. Я просто в том примере как налету использовали объект Jtable для формирования таблицы, хотел по образу сделать форму.

Я так понял в этой строке (из примера голосования) выводится кнопка Submit?: $html .= JHtml::_('form.token');

*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
$html .= JHtml::_('form.token');
Выводиться токен (это такое скрытое поле для защиты вашей формы от использования не на вашем сайте)
*

maxis

  • Захожу иногда
  • 119
  • 1 / 0
Выводиться токен (это такое скрытое поле для защиты вашей формы от использования не на вашем сайте)

Понятно, хотя ничего не понятно. А как же проверка клавиши Submit?
Я тут пример vote смотрю.
Не могу понять куда всё время автор ссылается?:
$row->state
$row->id
$row->rating

Спойлер
[свернуть]
(чуть убрал не нужное мне) Это аттрибуты статьи? Или в данном случае другие, какие-то?
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
А зачем проверять клавишу Submit oO

$row - это не атрибуты статьи ) Это сама статья (точнее строка из таблицы статей с определенным ID в виде объекта)
« Последнее редактирование: 10.01.2015, 01:23:48 от Istaan »
*

maxis

  • Захожу иногда
  • 119
  • 1 / 0
А зачем проверять клавишу Submit oO

$row - это не атрибуты статьи ) Это сама статья (точнее строка из таблицы статей с определенным ID в виде объекта)

Не знаю с какой стороны подойти к вопросу. Если запрос отправлен ($submit), то выводим результат запроса, если нет - форму.
Я в vote подглядел как проверяет на установленность параметров:
if (!empty($params) && $params->get('show_vote', null))
но плагин привязан к другому событию, пожет в этом месте $params содержит в себе другую информацию? (onContentBeforeDisplay($context, &$row, &$params, $page=0)) у меня onContentPrepare.

Следующий момент добраться до переменных, которые переданы по кнопке отправить
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Не знаю с какой стороны подойти к вопросу. Если запрос отправлен ($submit), то выводим результат запроса, если нет - форму.
Ну у вас например стоит $html .= '<input type="hidden" name="task" value="article.vote" />';
это значит что автоматом в контроллере article запустит задачу vote и ненадо каких либо проверок!
Если будете аяксом слать то просто можно установить какой то таск в дефолтном контроллере например так: http://ссылка вырезана, так как домен распространяет вирусы/blog/joomla/ajax-v-joomla

Я в vote подглядел как проверяет на установленность параметров:
if (!empty($params) && $params->get('show_vote', null))
но плагин привязан к другому событию, пожет в этом месте $params содержит в себе другую информацию? (onContentBeforeDisplay($context, &$row, &$params, $page=0)) у меня onContentPrepare.
Параметры передаются во все события!
*

maxis

  • Захожу иногда
  • 119
  • 1 / 0
Ну у вас например стоит $html .= '<input type="hidden" name="task" value="article.vote" />';
это значит что автоматом в контроллере article запустит задачу vote и ненадо каких либо проверок!
Я этот пример слизал с голосования не зная, как он работает. За разъяснение благодарю, буду иметь ввиду.
С AJAX'ом пока не разобрался, пока сложно для меня.

С параметрами тоже, спасибо, помогли разобраться, только как я понял это мне не поможет данные цеплять. Думал проверку на параметры сделать, чтобы вывод начать, а это параметры самого плагина.

Вот наваял:
Спойлер
[свернуть]

Данные принимает и передаёт в работу, НО в строке 40 такая ошибка: Warning: Invalid argument supplied for foreach() in /var/www/tennru/data/www/te.nn.ru/plugins/content/basesql/basesql.php on line 40
Что я неправильно делаю? Даты передают строго по формату yyyy-mm-dd через форму. Без ввода через форму, эта строка работала, а сейчас выдаёт ошибку. Может календарь ввода даты поможет?
« Последнее редактирование: 19.01.2015, 17:15:35 от maxis »
*

maxis

  • Захожу иногда
  • 119
  • 1 / 0
Данные принимает и передаёт в работу, НО в строке 40 такая ошибка: Warning: Invalid argument supplied for foreach() in /var/www/tennru/data/www/te.nn.ru/plugins/content/basesql/basesql.php on line 40

Фёдор в этой ветке подробно объяснил откуда она: http://joomlaforum.ru/index.php/topic,94260.0.html

Выяснилось, что такой метод запроса формирования запроса через объект, формирует неполный запрос (конфигурация запроса ниже):
Спойлер
[свернуть]
SELECT title FROM #__content WHERE created >'2012-06-01' AND created <

Добился результата такой записью:
$query = 'SELECT title FROM #__content WHERE created >'.$db->quote($elements[0]).' AND '.$db->quote($elements[1]);

Может кто знает в чём разница?
« Последнее редактирование: 20.01.2015, 10:56:54 от maxis »
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Может кто знает в чём разница?
Разница снова в банальной невнимательности новичка (Поставьте среду разработки PhpStorm она сразу будет выделять такие проколы)
Итак ваш запрос:
$query->where('created >' . $db->quote($elements[0]));
$query->where('created <' . $db->quote($elentnts[1]));
Найдите 5 отличий в написании слова $elements в первой строке и второй )
*

maxis

  • Захожу иногда
  • 119
  • 1 / 0
Итак ваш запрос:
$query->where('created >' . $db->quote($elements[0]));
$query->where('created <' . $db->quote($elentnts[1]));
Найдите 5 отличий в написании слова $elements в первой строке и второй )

Ураа! Всё работает! Благодарю за терпение. Кстати - а как можно прикрутить к форме календарь с выбором даты и потом эту дату перевести в формат SQL? Я вот нашёл такое решение: http://jqueryui.com/datepicker/#date-range но скрипты не прописываются в этом методе этого класса. Я использовал :
$doc = JFactory::getDocument();
$doc->addStyleSheet(JURI::root(true).'//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css');
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
$doc->addStyleSheet(JURI::root(true).'//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css');
Просто $doc->addStyleSheet( '//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css' );
не надо JURI::root(true)!
*

maxis

  • Захожу иногда
  • 119
  • 1 / 0
Просто $doc->addStyleSheet( '//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css' );
не надо JURI::root(true)!

А это проверка на то, что к с сайта загружается. Понял. Убрал. Но всё равно не подключает ни скрипты, ни стили. Честно говоря метод подключения скриптов содрал с СИСТЕМНОГО плагина RSForm, может поэтому не работает?
« Последнее редактирование: 21.01.2015, 12:16:57 от maxis »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Доработать плагин импорта полей CFI от joomline

Автор R31rus

Ответов: 1
Просмотров: 205
Последний ответ 21.12.2022, 10:40:11
от R31rus
Плагин Smart Search для своего компонента

Автор ftp27

Ответов: 1
Просмотров: 1606
Последний ответ 07.01.2017, 19:44:04
от newvideo
Плагин заказа обратного звонка

Автор maska

Ответов: 14
Просмотров: 1520
Последний ответ 22.05.2016, 18:28:00
от maska
Запустить контент-плагин в модуле

Автор mohax

Ответов: 10
Просмотров: 4797
Последний ответ 30.03.2015, 18:04:20
от twins717
Плагин загрузить аватор для Joomla 1.5

Автор espey

Ответов: 0
Просмотров: 1038
Последний ответ 10.10.2014, 20:24:27
от espey