Система лайка для виджета на главной

InstantCMS 2.X
#1 23 октября 2017 в 04:00
Друзья на главной странице создал систему лайка для новостей, все работает, теперь хочу вывести количество лайков но так как на одной странице несколько id не знаю как передать в model что бы отфильтровать и вывести количество.

Выводится только общее количетсво как можно сделать? Или как то incrementom записывать в сon_news ?

#2 23 октября 2017 в 10:57
АП
#3 23 октября 2017 в 11:23
Кто же знает что и как вы создали.) На скрине вроде выведено кол-во(8). О чём тогда вопрос? И вы к чему вывели лайки, к одной новости или сразу ко всем? Вы бы ещё всё затёрли, только вывод лайков оставили и ждали ответа…
#4 23 октября 2017 в 15:13


Кто же знает что и как вы создали.) На скрине вроде выведено кол-во(8). О чём тогда вопрос? И вы к чему вывели лайки, к одной новости или сразу ко всем? Вы бы ещё всё затёрли, только вывод лайков оставили и ждали ответа...

Lora

При нажатие на лайк а базу с помощью аякс отправляются данные id новости id пользователя.

Теперь я хочу вывести количество лайков данной темы.

Вот код вывода

  1. public function getLikeCount(){
  2. return $this->getCount('like');
  3. }
Но я не знаю как вывести количество лайков темы, а то что на фотке это общие лайки (то есть 8 лайков было)
#5 23 октября 2017 в 16:14
Нико,
Так и посмотрите на функцию в модели
  1. public function getCount($table_name, $by_field='id'){
Туда надо отправлять имя таблицы, где эти лайки хранятся и по какому полю считать (id новости).
#6 23 октября 2017 в 16:21


Нико,
Так и посмотрите на функцию в модели

  1. public function getCount($table_name, $by_field='id'){
Туда надо отправлять имя таблицы, где эти лайки хранятся и по какому полю считать (id новости).

Ris

Спасибо за подсказку, но не очень хорошо вас понял,

Я с помощью аякс отпраляю данные вот пример

  1. $('.button_like<?php echo $item['id']; ?>').click( function() {
  2. $.ajax({
  3. type: 'POST',
  4. url: '/content/like',
  5. data: 'content_id=<?php echo $item['id']; ?>',
  6. success: function(msg){
  7. $('.buttons19<?php echo $item['id']; ?>').css('display', 'none');
  8. $('.buttons18<?php echo $item['id']; ?>').css('display', 'block');
  9. var follow = <?php echo $total_like ?> + 1; // или минус 1
  10. $('.like_num').html(follow);
  11. }
  12. });
  13. });
Получаю в экшене и отправляю в модель
  1.  
  2. $content_id = $this->request->get('content_id');
  3. $like['content_id'] = $content_id;
  4. $user_like = $this->model->Like($like);
  5.  
А там записываю
  1. public function Like($like){
  2. return $this->insert('like', $like);
  3. }
И теперь хочу вывести количество
  1.  
  2. public function getLikeCount(){
  3. return $this->getCount('like');
  4. }
  5.  
#7 23 октября 2017 в 16:57
Нико, Выложите ваш код запроса, а не пример. Распишите что и как. По вашему примеру вообще ничего работать не должно.)
#8 23 октября 2017 в 17:09


Нико, Выложите ваш код запроса, а не пример. Распишите что и как. По вашему примеру вообще ничего работать не должно.)

Lora
Вот в шаблоне виджета отправляю запрос.


  1. <span class="like">Нравится <span class="like_num"><?php echo $total_like ?></span></span>
  2. <?php foreach ($like as $lk) {
  3. if ($lk['content_id'] == $item['id']) {
  4. $lk_cnt = $lk['content_id'];
  5. }
  6. }
  7. if (cmsUser::isLogged()){
  8. if ($item['id'] == $lk_cnt) {
  9. $user = cmsUser::getInstance();
  10. ?>
  11. <div class="buttons18<?php echo $item['id']; ?>"><i class="fa fa-heart button_unlike<?php echo $item['id']; ?>" aria-hidden="true"></i></div>
  12.  
  13. <div class="buttons19<?php echo $item['id']; ?>" style="display:none;"><i class="fa fa-heart-o button_like<?php echo $item['id']; ?>" aria-hidden="true"></i></div>
  14.  
  15. <script>
  16. $('.button_like<?php echo $item['id']; ?>').click( function() {
  17. $.ajax({
  18. type: 'POST',
  19. url: '/content/like',
  20. data: 'content_id=<?php echo $item['id']; ?>',
  21. success: function(msg){
  22. $('.buttons19<?php echo $item['id']; ?>').css('display', 'none');
  23. $('.buttons18<?php echo $item['id']; ?>').css('display', 'block');
  24. var follow = <?php echo $total_like ?> + 0; // или минус 1
  25. $('.like_num').html(follow);
  26. }
  27. });
  28. });
  29. $('.button_unlike<?php echo $item['id']; ?>').click( function() {
  30. $.ajax({
  31. type: 'POST',
  32. url: '/content/unlike',
  33. data: 'content_id=<?php echo $item['id']; ?>',
  34. success: function(msg){
  35. $('.buttons18<?php echo $item['id']; ?>').css('display', 'none');
  36. $('.buttons19<?php echo $item['id']; ?>').css('display', 'block');
  37. var follow = <?php echo $total_like ?> - 1 ; // или минус 1
  38. $('.like_num').html(follow);
  39. }
  40. });
  41.  
  42. });
  43. </script>
  44.  
  45. <?php } else { ?>
  46.  
  47.  
  48. <div class="buttons18<?php echo $item['id']; ?>" style="display:none;"><i class="fa fa-heart button_unlike<?php echo $item['id']; ?>" aria-hidden="true"></i></div>
  49.  
  50. <div class="buttons19<?php echo $item['id']; ?>"><i class="fa fa-heart-o button_like<?php echo $item['id']; ?>" aria-hidden="true"></i></div>
  51.  
  52. <script>
  53. $('.button_like<?php echo $item['id']; ?>').click( function() {
  54. $.ajax({
  55. type: 'POST',
  56. url: '/content/like',
  57. data: 'content_id=<?php echo $item['id']; ?>',
  58. success: function(msg){
  59. $('.buttons19<?php echo $item['id']; ?>').css('display', 'none');
  60. $('.buttons18<?php echo $item['id']; ?>').css('display', 'block');
  61. var follow = <?php echo $total_like ?> + 1; // или минус 1
  62. $('.like_num').html(follow);
  63. }
  64. });
  65. });
  66. $('.button_unlike<?php echo $item['id']; ?>').click( function() {
  67. $.ajax({
  68. type: 'POST',
  69. url: '/content/unlike',
  70. data: 'content_id=<?php echo $item['id']; ?>',
  71. success: function(msg){
  72. $('.buttons18<?php echo $item['id']; ?>').css('display', 'none');
  73. $('.buttons19<?php echo $item['id']; ?>').css('display', 'block');
  74. var follow = <?php echo $total_like ?> ; // или минус 1
  75. $('.like_num').html(follow);
  76. }
  77. });
  78.  
  79. });
  80. </script>
  81.  
  82. <?php } } ?>
[/code]

Вот frontend content где получаю запрос

  1. public function actionLike(){
  2.  
  3. $date_follow = date('Y-m-d H:i:s');
  4. $user = $this->cms_user;
  5. $content_id = $this->request->get('content_id');
  6.  
  7. $like['user_id'] = $user->id;
  8. $like['content_id'] = $content_id;
  9.  
  10. $user_like = $this->model->Like($like);
  11. }
  12.  
  13. public function actionUnlike(){
  14. //$user_id = $this->request->get('user_id');
  15. $content_id = $this->request->get('content_id');
  16.  
  17. $this->model->deleteLike($content_id);
  18.  
  19. }
  20.  
Вот widjet.php

Вывожу тум
  1.  
  2. $total_like = $model->getLikeCount($content_id);
  3.  
  4. $like = $model->getLike($id);
  5.  
Вот сам model.php


  1. //============================================================================//
  2. //================================= Лайк =================================//
  3. //============================================================================//
  4. public function getLike($id){
  5. $user = cmsUser::getInstance();
  6. $this->filterEqual('user_id', $user->id);
  7. return $this->get('like');
  8. }
  9.  
  10. public function Like($like){
  11. return $this->insert('like', $like);
  12. }
  13.  
  14. public function deleteLike($content_id){
  15. $user = cmsUser::getInstance();
  16. $this->filterEqual('user_id', $user->id);
  17. $this->filterEqual('content_id', $content_id);
  18. return $this->delete('like', $content_id, $content_id);
  19. }
  20.  
  21. public function getLikeCount(){
  22. return $this->getCount('like');
  23. }
  24.  
#9 23 октября 2017 в 17:11
  1. public function getLikeCount(){
  2. $this->filterEqual("content_id = $content_id");
  3. return $this->getCount('like');
  4. }
#10 23 октября 2017 в 17:22


  1. public function getLikeCount(){
  2. $this->filterEqual("content_id = $content_id");
  3. return $this->getCount('like');
  4. }

Ris

А как мне отправить вот это? $content_id если я только его могу отправить при нажатие на кнопку ajax не постоянно.
  1. Call to undefined method modelContent::where() in /var/www/u16916/data/www/3x3portal.com/system/controllers/content/model.php on line 2772
#11 23 октября 2017 в 22:31
  1. public function getLikeCount(){
  2. $this->model->filterEqual("content_id = $content_id");
  3. return $this->model->getCount('like');
  4. }
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.