Перейти к содержимому


Фотография
- - - - -

Отобразить теги которые использует автор

tag

Лучший Ответ CB9TOIIIA , 22 June 2016 - 21:52

Cheren-dow сказал(а) 12 Июн 2016 - 14:12:

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

 
afef9c53b6f5b97f1a407783366d3a1a.jpg
  1. $querycounttagalltags = "SELECT name FROM " . ZOO_TABLE_TAG ."";
  2.  
  3. // Получаем все теги по полученным id материал
  4. $tagsArraytagalltags = array_unique($this->app->table->tag->database->queryResultArray($querycounttagalltags));
  5. //jbdump($tagsArraytagalltags,0,'Все теги');
  6. //echo implode(', ', $tagsArraytagalltags);
  7.  
  8. foreach ($tagsArraytagalltags as $tag) {
  9. // jbdump($tagsArraytagalltags,0,'dsadasd');
  10. //jbdump($tag,0,'Тег и кол-во');
  11.  
  12. $querycounttagalltagss = "SELECT COUNT(name) FROM " . ZOO_TABLE_TAG ." WHERE name = '$tag' GROUP BY name";
  13. $tagsArraytagalltagss = array_unique($this->app->table->tag->database->queryResultArray($querycounttagalltagss));
  14.  
  15. //jbdump($tagsArraytagalltagss,0,'Всего тег был использован: ');
  16.  
  17. echo '<a href="' . JRoute::_($this->app->route->tag($appId, $tag)) . '">' . $tag . '</a>' .' - '. $tagsArraytagalltagss[0].', ';
  18. }
  19.  
пашет :) Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 12

#1 CB9TOIIIA

CB9TOIIIA

Отправлено 10 June 2016 - 14:20

Всем привет! Как можно реализовать следующее:

Есть например 100 статей от 5 авторов.

 

1 пишет про еду: ставит теги, макароны, котлеты, борщ, суп

2 пишет про погоду: солнце, снег, лужи

3 пишет про одежду: рубашка, шорты

........

........

 

Суть в чем: как можно у автора например 1: вывести на его страничке (просто jbzoo item) - какие он использует теги в своих статьях?

 

Я так понимаю, можно узнать ID автора - далее по ID найти его статьи - далее у статей можно найти теги к ним... но потом как эту кашу переварить + убрать дубли + наиболее используемые показать например только...


  • 0

#2 Cheren-dow

Cheren-dow

Отправлено 11 June 2016 - 14:10

CB9TOIIIA, рабочее решение будет следующее:

  1. $db = JFactory::getDBO();
  2. /**
  3. * Текущий юзер, если карточка юзера это материал тогда подставь значение где хранится id пользователя
  4. * Сделал пример от авторизованного.
  5. */
  6. $user = JFactory::getUser();
  7. $userId = $user->get('id');
  8. $appId = 1;
  9.  
  10. // Выбираем id всех объектов пользователя
  11. $query = $db->getQuery(true);
  12. $query
  13. ->select($db->quoteName('id'))
  14. ->from($db->quoteName(ZOO_TABLE_ITEM))
  15. ->where($db->quoteName('created_by') . ' = ' . $db->quote($userId));
  16.  
  17. $db->setQuery($query);
  18. $itemIdsResult = $db->loadObjectList();
  19.  
  20. // Собираем массив id материалов
  21. $itemIds = array();
  22. foreach ($itemIdsResult as $it) {
  23. $itemIds[] = $it->id;
  24. }
  25.  
  26. $query = "SELECT name"
  27. ." FROM " . ZOO_TABLE_TAG
  28. ." WHERE item_id IN (" . implode(', ', $itemIds) . ")";
  29.  
  30. // Получаем все теги по полученным id материал
  31. $tagsArray = $this->app->table->tag->database->queryResultArray($query);
  32.  
  33. // Убираем дубли и строим ссылку
  34. $currentTags = array();
  35. foreach ($tagsArray as $tag) {
  36. if (!in_array($tag, $currentTags)) {
  37. $currentTags[] = '<a href="' . JRoute::_($this->app->route->tag($appId, $tag)) . '">' . $tag . '</a>';
  38. }
  39. }
  40.  
  41. echo implode(', ', $currentTags);

Главное id пользователя верный подставлять, что бы по его материалам искались теги.


  • 3
Изображение
 

#3 CB9TOIIIA

CB9TOIIIA

Отправлено 11 June 2016 - 15:29

Вроде отлично. Но дубли - дубли... я потом сделаю элемент в маркетплейс :)


  • 0

#4 Cheren-dow

Cheren-dow

Отправлено 11 June 2016 - 15:45

CB9TOIIIA сказал(а) 11 Июн 2016 - 14:29:

Но дубли - дубли

Дубли чего? Я ж там в цикле проверку делал что бы не выбрасывались повторяющиеся. Проверял не попадали. 


  • 0
Изображение
 

#5 CB9TOIIIA

CB9TOIIIA

Отправлено 11 June 2016 - 15:49

Вот так норм вариант? пашет:

  1.  
  2. // Убираем дубли и строим ссылку
  3. $currentTags = array();
  4. $tagsArray = array_unique($tagsArray);

Cheren-dow сказал(а) 11 Июн 2016 - 14:45:

Дубли чего? Я ж там в цикле проверку делал что бы не выбрасывались повторяющиеся. Проверял не попадали. 

 

дубли тегов - ну повторы tag :)


  1.  
  2. // Выбираем id всех объектов пользователя
  3. $query = $db->getQuery(true);
  4. $query
  5. ->select($db->quoteName('id'))
  6. ->from($db->quoteName(ZOO_TABLE_ITEM))
  7. ->where($db->quoteName('created_by') . ' = ' . $db->quote($userId));
  8.  
  9. $db->setQuery($query);
  10. $itemIdsResult = $db->loadObjectList();
  11.  
  12. // Собираем массив id материалов
  13. $itemIds = array();
  14. foreach ($itemIdsResult as $it) {
  15. $itemIds[] = $it->id;
  16. }
  17.  
  18. $query = "SELECT name"
  19. ." FROM " . ZOO_TABLE_TAG
  20. ." WHERE item_id IN (" . implode(', ', $itemIds) . ")";
  21.  
  22. // Получаем все теги по полученным id материал
  23. $tagsArray = $this->app->table->tag->database->queryResultArray($query);
  24.  
  25. // Убираем дубли и строим ссылку
  26. $currentTags = array();
  27. $tagsArray = array_unique($tagsArray);
  28.  
  29. foreach ($tagsArray as $tag) {
  30. if (!in_array($tag, $currentTags)) {
  31.  
  32. $currentTags[] = '<a href="' . JRoute::_($this->app->route->tag($appId, $tag)) . '">' . $tag . '</a>';
  33. }
  34. }
  35.  
  36. echo implode(', ', $currentTags);
  37. echo ' '.count($currentTags);

  • 0

#6 Cheren-dow

Cheren-dow

Отправлено 11 June 2016 - 18:18

CB9TOIIIA, вот так по идее не должно быть дублей:

  1. // Выбираем id всех объектов пользователя
  2. $query = $db->getQuery(true);
  3. $query
  4. ->select($db->quoteName('id'))
  5. ->from($db->quoteName(ZOO_TABLE_ITEM))
  6. ->where($db->quoteName('created_by') . ' = ' . $db->quote($userId));
  7.  
  8. $db->setQuery($query);
  9. $itemIdsResult = $db->loadObjectList();
  10.  
  11. // Собираем массив id материалов
  12. $itemIds = array();
  13. foreach ($itemIdsResult as $it) {
  14. $itemIds[] = $it->id;
  15. }
  16.  
  17. $query = "SELECT name"
  18. ." FROM " . ZOO_TABLE_TAG
  19. ." WHERE item_id IN (" . implode(', ', $itemIds) . ")";
  20.  
  21. // Получаем все теги по полученным id материал
  22. $tagsArray = array_unique($this->app->table->tag->database->queryResultArray($query));
  23.  
  24. $currentTags = array();
  25. foreach ($tagsArray as $tag) {
  26. $currentTags[] = '<a href="' . JRoute::_($this->app->route->tag($appId, $tag)) . '">' . $tag . '</a>';
  27. }
  28.  
  29. echo implode(', ', $currentTags);

Сообщение отредактировал Cheren-dow: 11 June 2016 - 18:18

  • 2
Изображение
 

#7 CB9TOIIIA

CB9TOIIIA

Отправлено 11 June 2016 - 21:16

Вроде пашет :) Спасибо, раз тема тегов: "количество текстов связанных с тегом" - т.е. кол-во статей сколько раз он ВООБЩЕ был использован, такое есть или нет?


  • 0

#8 Cheren-dow

Cheren-dow

Отправлено 11 June 2016 - 22:17

CB9TOIIIA сказал(а) 11 Июн 2016 - 20:16:

Вроде пашет Спасибо, раз тема тегов: "количество текстов связанных с тегом" - т.е. кол-во статей сколько раз он ВООБЩЕ был использован, такое есть или нет?

Готового нет, сделать можно, нужно запросы делать в БД. По аналогии но только для столбца name использовать оператор LIKE.

fuj6_200x0.png  


  • 2
Изображение
 

#9 Cheren-dow

Cheren-dow

Отправлено 11 June 2016 - 22:22

Запрос на произвольный тег для получения количества:

j87r_200x0.png


  • 2
Изображение
 

#10 CB9TOIIIA

CB9TOIIIA

Отправлено 12 June 2016 - 14:54

  1. $querycounttag = "SELECT COUNT(name) FROM " . ZOO_TABLE_TAG ." WHERE name = 'МОЙ_ТЕГ';";
  2.  
  3. $tagsArraytag = $this->app->table->tag->database->queryResultArray($querycounttag);
  4. jbdump($tagsArraytag,0,'МОЙ_ТЕГ');
  5. echo implode(', ', $tagsArraytag);

Потом подумаю как получить все теги (или нужны ли все теги мне) - потом уже кол-во посчитать :)

 

Вообще у меня просили типо сколько раз автора использовал теги (но я так понимаю такой инфы вообще нет) - или же выборку  Автор: Даша - тег: котлеты  - отобразить статьи Даши с тегом котлеты... такое же нереально? или как-то можно.


  • 0





Темы с аналогичным тегами tag

Click to return to top of page in style!