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

bantell

  • Захожу иногда
  • 93
  • 2 / 0
Избранное для материала
« : 20.02.2018, 17:51:12 »
Доброго времени, уважаемые сторожилы!
Ребят, кто разбирается в php - очень нужна ваша помощь  :'(
Появилась необходимость сделать избранные материалы, вопрос сессии пока не стоит - хотябы для зарегистрированных. Потратил много часов на поиски но так ничего и не нашел. " расширения всего и то платные. Помогите пжлст с написанием, практически 0 в PHP. Структурно я понимаю как оно должно выглядеть и скорее всего модуль осилю - а вот с плагином полная беда.
1. Через onContentAfterTitle я вставил форму, в которой лежит кнопка, которая будет и сохранять материал. Но возник затык - который час смотрю в монитор и понимаю, что ничего не понимаю. Мы можем $user = JFactory::getUser(); - прямо в плагине вызывать? (скажем ниже $input = JFactory::getApplication()->input; который уже в public function onContentAfterTitle() находится ) как я понял - нам требуется только id пользователя и id материала чтобы форма могла передать значения. По большому счету то больше вроде ничего и не нужно. и а экшене формы мы указываем другой файл в котором уже будет мучить БД? или можно сразу все это как-то делать? Помогите пжлст разобраться с азами - как происходит процесс отправки инфы в базу?
2.Когда данные запишутся - там проше, с модулем я вроде нашел похожие примеры которые подключаются прямым запросом к БД и берут оттуда значения.
3. Вопрос по БД - насколько сильно плохо, если мы работаем с 2мя таблицами? (если вгружить будем только ID материала, а потом по этому id коннектиться к другой таблице чтобы брать оттуда картинку и заголовок). Может будет лучше передавать данные сразу те что нужны - раз в материале находимся, а потом брать их с одного места?
« Последнее редактирование: 20.02.2018, 18:17:17 от bantell »
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Re: Избранное для материала
« Ответ #1 : 20.02.2018, 19:46:14 »
В плагине можете вызвать что угодно. Используйте var_dump(ваша переменная);, чтоб смотреть, что получили
Форму сабмитить лучше на туже страницу, на которой вы находитесь. Как передать данные - гуглите, что такое post запросы. Там же, в своём плагине вы их можете принять и обработать
Не понятно, что вы там нашли. Вам действительно понадобится модуль, чтобы выводить свои материалы из таблицы, в которую записали. Но модуль придётся делать свой. Точнее перепилить стандартный вывод новостей под свои нужды
База рассчитана на то, что в ней будут связи между таблицами. Поэтому вам достаточно в своей таблице хранить 2 значения : user_id и article_id
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Избранное для материала
« Ответ #2 : 20.02.2018, 21:28:06 »
kern.USR - мне вот интересно, как ты понял его задачу?

Избранные материалы уже есть в коробке
Сохранять пользователю его избранные материалы в отдельную таблицу? Это делается одной кнопкой в шаблоне, чуть JS и пхп обработчик (да, таблица два столбца по проектированию таблиц третьего типа)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

bantell

  • Захожу иногда
  • 93
  • 2 / 0
Re: Избранное для материала
« Ответ #3 : 20.02.2018, 21:57:33 »
kern.USR - мне вот интересно, как ты понял его задачу?

Избранные материалы уже есть в коробке
Сохранять пользователю его избранные материалы в отдельную таблицу? Это делается одной кнопкой в шаблоне, чуть JS и PHP обработчик (да, таблица два столбца по проектированию таблиц третьего типа)
kern.USR - спасибо! ответ был общий, но натолкнул на решение. В таблицу уже пишет и из нее берет. Есть маленькое но, не могу найти как избавиться от дублей. Если оба поля уже есть одинаковые то не писать значения. Можно это както совместить в одном запросе? в Факе Joomla не оч понятно. Я могу одним запросом инсерта воткнуть - но пока бродил по форумам, натыкался что вроде как инъекциями такой топорный подход череват. вот код
Код
}
$html .= '</form>';
if($_POST){
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$columns = array('userid', 'item');
$values = array($user->id,$id);
$query
->insert($db->quoteName('#__addfavor'))
->columns($db->quoteName($columns))
->values(implode(',', $values));
$db->setQuery($query);
$db->execute();
}

return $html;
}
   


beliyadm - в коробке я такого не нашел. Конечно был бы рад... поэтому уже почти готова таблица в плагине. Только давайте не будем мериться что-там у вас... Я впервые в Joomla залез и мой вопрос был не из разряда как надпись с синего на красный поменять. Есть чем помочь - предлагайте, а вот эти - чуть то чуть се - не особо умесны. Не судите всех по своим знаниям.
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Re: Избранное для материала
« Ответ #4 : 21.02.2018, 09:31:29 »
kern.USR - мне вот интересно, как ты понял его задачу?
Лежал на диване, втыкал в телефон. Был вечер. Я устал после работы.
Так и понял. В лоб! Человек про плагин спросил - я ответил.
Избранные материалы уже есть в коробке
Ну так иногда полезно повторить стандартный функционал по-своему. Понимание приходит. Человек же не претендует на то, чтоб своё расширение оформить и распространять (с принципиально новыми обоями =) ). А для себя изобрести велосипед - это удовольствие и опыт.

Это делается одной кнопкой в шаблоне
Ну что за методы? Функционал во вьюхах пилить? Поменют шаблон, и что дальше? Искать, откуда ноги росли?
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Избранное для материала
« Ответ #5 : 21.02.2018, 15:46:16 »
Ну что за методы? Функционал во вьюхах пилить? Поменют шаблон, и что дальше? Искать, откуда ноги росли?
Ну так можно же плагином\модулем воткнуть кнопку, чтоб не привязываться к въюшкам, не суть принципиальная разница )
Просто те сайты что я делаю целиком и потом веду - мне проще на уровне шаблона что-то прописать, чем выносить куда-то (неправильный подход, знаю, но когда я единственный кто этим занимается - мне так проще)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

bantell

  • Захожу иногда
  • 93
  • 2 / 0
Re: Избранное для материала
« Ответ #6 : 21.02.2018, 18:37:58 »
Кнопку победил, модуль вывода тоже  :D  :D :D
« Последнее редактирование: 21.02.2018, 18:56:38 от bantell »
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Re: Избранное для материала
« Ответ #7 : 21.02.2018, 23:29:37 »
но когда я единственный кто этим занимается - мне так проще

Ну вы же далеко не новичёк! Вам ли не знать, что рано или поздно сайт попадает на сопровождение к кому-то другому. И начинаются пляски с поиском чего-либо в модулях, а оно, оказывается в шаблоне захардкоджено.
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Избранное для материала
« Ответ #8 : 23.02.2018, 21:53:52 »
И начинаются пляски с поиском чего-либо в модулях, а оно, оказывается в шаблоне захардкоджено.
И мне такое попадало, и аналогично искал концы. Может это плагин, может модуль, да нет же в шаблоне должно быть.
А черт, оказывается это подгружается AJAX из какого то левого модуля где разраб написал базовый функционал сайта.
В общем может быть все что угодно. Свои сайты я документирую и если уходят на сторону в плане поддержки - такие хвосты легко отследить.
Скажем так - это меньшее из зол, что встречается в работе.

Подобные вещи легко находятся в консоли и поиском по файлам с названием тега\класса.
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод даты материала в списке тегов

Автор androv77

Ответов: 2
Просмотров: 876
Последний ответ 09.11.2023, 16:33:08
от denxio
Вывод дополнительного поля материала в модуле

Автор timofe

Ответов: 10
Просмотров: 1479
Последний ответ 06.10.2023, 14:02:24
от Mitriy
Как сделать отображение времени создания материала?

Автор Pzhigalov

Ответов: 0
Просмотров: 310
Последний ответ 27.09.2023, 22:45:29
от Pzhigalov
[Решено] Получить список тегов каждого материала в блоге категории

Автор goga_pgasovav

Ответов: 1
Просмотров: 393
Последний ответ 02.03.2023, 14:20:21
от goga_pgasovav
ajax загрузка компонента на странице материала К2

Автор Divn

Ответов: 0
Просмотров: 520
Последний ответ 13.01.2023, 15:05:52
от Divn