1. Главная
  2. Форумы
  3. Техподдержка Drupal
  4. Решение проблем

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

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

Здравствуйте! Подскажите,с помощью какой функции можно добавить новое действие к комментариям (помимо действий "удалить" и "изменить")? Например, в 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
}
}

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

Логотип drupal.ru

Содержимое сайта публикуется на условиях CreativeCommons Attribution-ShareAlike 3.0 или более поздней версии. Программные коды в тексте статей — на условиях GNU GPL v2 или более поздней версии.

Документация по совместной работе с репозиторием drupal.ru – https://docs.drupal.ru/code

Drupal – торговая марка Дриса Бёйтарта

12+

AltStyle によって変換されたページ (->オリジナル) /