Добавление нового действия к комментариям

Главные вкладки

Аватар пользователя Виктория Виктория 19 ноября 2014 в 23:27

Здравствуйте! Подскажите,с помощью какой функции можно добавить новое действие к комментариям (помимо действий "удалить" и "изменить")? Например, в 6 версии друпала это можно сделать хуком hook_link. А как сделать в 7 версии?

Комментарии

Аватар пользователя vlucas vlucas 19 ноября 2014 в 23:48

Если вам нужно просто иметь свою ссылку в управляющих ссылках комментария, то можно в шаблоне comment.tpl.php, перед выводом ссылок:

$content['links']['#links']['custom_linc'] = array(
'title' =>'your event',
'href' =>'custom_url',
'html' =>'true',

);

Не знаю как это будет увязываться с правами пользователей, но если что-то простое, то можно и так

Аватар пользователя Виктория Виктория 19 ноября 2014 в 23:51

Василий Сергеевич wrote:
Если вам нужно просто иметь свою ссылку в управляющих ссылках комментария, то можно в шаблоне comment.tpl.php, перед выводом ссылок:

$content['links']['#links']['custom_linc'] = array(
'title' =>'your event',
'href' =>'custom_url',
'html' =>'true',

);

Не знаю как это будет увязываться с правами пользователей, но если что-то простое, то можно и так


Это нужно сделать в отдельном модуле, своем собственном

Аватар пользователя CSoft CSoft 20 ноября 2014 в 0:14

"Виктория" wrote:
Например, в 6 версии друпала это можно сделать хуком hook_link

Обычно в таких ситуациях смотрите страницу документации старого хука:

https://api.drupal.org/api/drupal/developer%21hooks%21core.php/function/...

Очень часто в комментариях кто-то обязательно пишет решение для новой версии Drupal. Вот и здесь так же:

https://api.drupal.org/api/drupal/developer%21hooks%21core.php/function/...

Аватар пользователя Виктория Виктория 20 ноября 2014 в 0:18

CSoft wrote:
"Виктория" wrote:
Например, в 6 версии друпала это можно сделать хуком hook_link

Обычно в таких ситуациях смотрите страницу документации старого хука:

https://api.drupal.org/api/drupal/developer%21hooks%21core.php/function/...

Очень часто в комментариях кто-то обязательно пишет решение для новой версии Drupal. Вот и здесь так же:

https://api.drupal.org/api/drupal/developer%21hooks%21core.php/function/...
Спасибо, попробую

Аватар пользователя dashiwa dashiwa 20 ноября 2014 в 3:12

комменты хранят данные в своей таблице. Имеют свои хуки можно посмотреть что там в самом модуле. + все хуки друпала..И своя логика на своих функциях..
Для утверждения комментариев идите на страницу управления комментариев смотрите адрес меню..Потом ищите callback функцию для этой страницы,потом пишите все что нужно..копируйте ее в свой модуль вызвайте и тд...Примерно так делается таблица редактирования нод что в модуле node

Аватар пользователя drupby drupby 20 ноября 2014 в 7:55

вот добавление ссылки

function MYMODULE_comment_view($comment, $view_mode, $langcode) {
  if (user_access('administer comments')) {
    switch ($comment->status) {
      case 0:
        $comment->content['links']['comment']['#links']['comment-publish'] = array(
          'title' => 'Опубликовать',
          'href' => 'comment/publish/' . $comment->cid . '/nojs',
          'html' => TRUE,
          'attributes' => array(
            'class' => array('use-ajax'),
          ),
        );
        break;
      case 1:
        $comment->content['links']['comment']['#links']['comment-publish'] = array(
          'title' => 'Снять с публикации',
          'href' => 'comment/publish/' . $comment->cid . '/nojs',
          'html' => TRUE,
          'attributes' => array(
            'class' => array('use-ajax'),
          ),
        );
        break;
    }
    drupal_add_library('system', 'drupal.ajax');
  }
}

ну и дальше

function MYMODULE_menu() {
 
  $items['comment/publish/%comment/%'] = array(
    'page callback' => 'comments_publish_ajax_callback',
    'page arguments' => array(2, 3),
    'access callback' => TRUE,
    'delivery callback' => 'ajax_deliver',
    'theme callback' => 'ajax_base_page_theme',
    'type' => MENU_CALLBACK,
  );
  return $items;
}

callback

function comments_publish_ajax_callback($comment, $js) {

  switch($js) {

    // If no js support
    case 'nojs':
      //code
      break;

    // If js support
    default:
      //В зависимости от $comment->status реализуем публикацию/депубликацию
      //В li.comment-publish меняем ссылку на соответствующую
      //Вообщем то заново изобретаем flag и rules
  }
}

Аватар пользователя Виктория Виктория 21 ноября 2014 в 20:32

drupby wrote:
вот добавление ссылки

function MYMODULE_comment_view($comment, $view_mode, $langcode) {
  if (user_access('administer comments')) {
    switch ($comment->status) {
      case 0:
        $comment->content['links']['comment']['#links']['comment-publish'] = array(
          'title' => 'Опубликовать',
          'href' => 'comment/publish/' . $comment->cid . '/nojs',
          'html' => TRUE,
          'attributes' => array(
            'class' => array('use-ajax'),
          ),
        );
        break;
      case 1:
        $comment->content['links']['comment']['#links']['comment-publish'] = array(
          'title' => 'Снять с публикации',
          'href' => 'comment/publish/' . $comment->cid . '/nojs',
          'html' => TRUE,
          'attributes' => array(
            'class' => array('use-ajax'),
          ),
        );
        break;
    }
    drupal_add_library('system', 'drupal.ajax');
  }
}

ну и дальше

function MYMODULE_menu() {
 
  $items['comment/publish/%comment/%'] = array(
    'page callback' => 'comments_publish_ajax_callback',
    'page arguments' => array(2, 3),
    'access callback' => TRUE,
    'delivery callback' => 'ajax_deliver',
    'theme callback' => 'ajax_base_page_theme',
    'type' => MENU_CALLBACK,
  );
  return $items;
}

callback

function comments_publish_ajax_callback($comment, $js) {

  switch($js) {

    // If no js support
    case 'nojs':
      //code
      break;

    // If js support
    default:
      //В зависимости от $comment->status реализуем публикацию/депубликацию
      //В li.comment-publish меняем ссылку на соответствующую
      //Вообщем то заново изобретаем flag и rules
  }
}

Поясните, пожалуйста, если не трудно последнюю функцию