я разобралась, что если задать cid = 1 например, то на выходе можно получить данные коммента с идентификатором 1. но другая задача встаёт: нужно получить cid данного комментария. как это сделать?
В каком месте Вы хотите получить ID ? С какой страницы Вашего сайта ?!
на странице со статьей, под которой размещены комментарии. под каждым комментарием есть ссылка, наподобие ссылок "удалить" "ответить. у меня ссылка "оценить задачу". по этой ссылке открывается форма в модальном ctools окне. есть обработки кнопки этой формы. и в этом обработчике мне надо как-то получить cid комментария, чтобы по нем узнать id автора комментария, т.е. выполнить такую команду
скорее всего cid есть в ссылке "оценить задачу" в ее href
тогда получить его скорее всего из обработчика можно при помощи arg(0) или arg(1) - в зависимости от расположения cid в адресе
скорее всего cid есть в ссылке "оценить задачу" в ее href
тогда получить его скорее всего из обработчика можно при помощи arg(0) или arg(1) - в зависимости от расположения cid в адресе
извините, я новичок, поясните пожалуйста момент насчет arg(0) или arg(1)?
ну и если там в этом обработчике у тебя есть $form_state то загляни что в внутри нее. с включенным модулем devel
написать в обработчике:
dpm($form_state);
и вызвать модальную форму и обновить страницу - выведет содержимое массива. если там есть build_args или args внутри этого $form_state то скорее всего cid там есть
ну и если там в этом обработчике у тебя есть $form_state то загляни что в внутри нее. с включенным модулем devel
написать в обработчике:
dpm($form_state);
и вызвать модальную форму и обновить страницу - выведет содержимое массива. если там есть build_args или args внутри этого $form_state то скорее всего cid там есть
хорошо, я вас поняла. допустим, cid там есть. но ведь нужна такая функция, которая определит этот cid комментария, чтобы воспользоваться comment_load. ссылка "оценить" есть под каждым комментарием, то есть cid не конкретный идентификатор
ну и если там в этом обработчике у тебя есть $form_state то загляни что в внутри нее. с включенным модулем devel
написать в обработчике:
dpm($form_state);
и вызвать модальную форму и обновить страницу - выведет содержимое массива. если там есть build_args или args внутри этого $form_state то скорее всего cid там есть
после выполнения команды dpm($form_state) вот что было на выходе (см. изображение). "args (Array, 0 elements)" - это значит что элемента cid нет?
arg это функция, параметром передаем ей номер аргумента в адресной строке который хотим получить, если модальное окно открывается по ссылке с адресом например:
/nojs/comment/1922/modal
то получить 1922 мы можем так:
$cid = arg(2); // то есть третий аргумент (нумерация от нуля)
если ссылка под каждым комментарием значит каждая ссылка содержит cid этого комментария. тот кто делал эту ссылку определял в какой позиции там находится cid, думаю это визуально заметно, вы получаете значение cid при помощи функции arg больше вам ничего не нужно, дальше используете comment_load с этим значением
если ссылка под каждым комментарием значит каждая ссылка содержит cid этого комментария. тот кто делал эту ссылку определял в какой позиции там находится cid, думаю это визуально заметно, вы получаете значение cid при помощи функции arg больше вам ничего не нужно, дальше используете comment_load с этим значением
arg(номер_позиции_в_адресе) будет возвращать вам нужный cid вы только номер позиции правильно укажите
вы же пытаетесь получить cid в обработчике а он вызывается для каждого комментария и в момент выполнения arg вам будет возвращать то что нужно. пробуйте увидите
arg(номер_позиции_в_адресе) будет возвращать вам нужный cid вы только номер позиции правильно укажите
вы же пытаетесь получить cid в обработчике а он вызывается для каждого комментария и в момент выполнения arg вам будет возвращать то что нужно. пробуйте увидите
видимо у вас просто не указан cid в ссылке оценить и она для всех комментариев выглядит одинаково, верно?
тогда вам нужно ее доработать, описать как 'href' => 'ajax_publish/nojs/comment/%'
и подставлять $cid при формировании этой ссылки. а уже потом в обработчике действовать как и собирались по описанному выше
видимо у вас просто не указан cid в ссылке оценить и она для всех комментариев выглядит одинаково, верно?
тогда вам нужно ее доработать, описать как 'href' => 'ajax_publish/nojs/comment/%'
и подставлять $cid при формировании этой ссылки. а уже потом в обработчике действовать как и собирались по описанному выше
хорошо, но остается непонятным, как именно подставить $cid при формировании ссылки? вот так :
хорошо, но остается непонятным, как именно подставить $cid при формировании ссылки? вот так :
примерно так да. там где формируете скорее всего доступен или $cid или $comment
используйте
dpm(get_defined_vars());
там где формируете ссылку - обновите страницу и оно выведет вам доступные переменные (модуль devel нужен)
хорошо, но остается непонятным, как именно подставить $cid при формировании ссылки? вот так :
примерно так да. там где формируете скорее всего доступен или $cid или $comment
используйте
dpm(get_defined_vars());
там где формируете ссылку - обновите страницу и оно выведет вам доступные переменные (модуль devel нужен)
$cid = arg(2);
dpm(get_defined_vars());
вот:"cid (String, 7 characters ) comment
$...['cid']"
в чем ошибка?
arg(2) - comment
arg(3) - cid
только я уже говорил, что делается так
$items['ajax_publish/%ctools_js/comment/%comment']// ссылка остается 'ajax_publish/nojs/comment/'. $cid
и в callback функцию передается объект коммента
function comments_publish_ajax_callback($js = FALSE, $comment){
dpm($comment); }
сделала все, как указано выше. на выходе вот что получилось:
... (Array, 4 elements)
form (Array, 26 elements)
form_state (Array, 22 elements)
cid (NULL)
comment (Boolean) FALSE
Комментарии
Ид есть в обьекте,который возращает данная функция
да,это пои заданном cid. а как этот cid комментария получить, чтобы по нем найти нужные данные?
я разобралась, что если задать cid = 1 например, то на выходе можно получить данные коммента с идентификатором 1. но другая задача встаёт: нужно получить cid данного комментария. как это сделать?
Тогда вопрос - как вы получаете данный комментарий?
В каком месте Вы хотите получить ID ? С какой страницы Вашего сайта ?!
на странице со статьей, под которой размещены комментарии. под каждым комментарием есть ссылка, наподобие ссылок "удалить" "ответить. у меня ссылка "оценить задачу". по этой ссылке открывается форма в модальном ctools окне. есть обработки кнопки этой формы. и в этом обработчике мне надо как-то получить cid комментария, чтобы по нем узнать id автора комментария, т.е. выполнить такую команду
$comment = comment_load($cid);
$comment->uid
вот как найти значение cid?
скорее всего cid есть в ссылке "оценить задачу" в ее href
тогда получить его скорее всего из обработчика можно при помощи arg(0) или arg(1) - в зависимости от расположения cid в адресе
извините, я новичок, поясните пожалуйста момент насчет arg(0) или arg(1)?
ну и если там в этом обработчике у тебя есть $form_state то загляни что в внутри нее. с включенным модулем devel
написать в обработчике:
dpm($form_state);
и вызвать модальную форму и обновить страницу - выведет содержимое массива. если там есть build_args или args внутри этого $form_state то скорее всего cid там есть
хорошо, я вас поняла. допустим, cid там есть. но ведь нужна такая функция, которая определит этот cid комментария, чтобы воспользоваться comment_load. ссылка "оценить" есть под каждым комментарием, то есть cid не конкретный идентификатор
после выполнения команды dpm($form_state) вот что было на выходе (см. изображение). "args (Array, 0 elements)" - это значит что элемента cid нет?
arg это функция, параметром передаем ей номер аргумента в адресной строке который хотим получить, если модальное окно открывается по ссылке с адресом например:
/nojs/comment/1922/modal
то получить 1922 мы можем так:
$cid = arg(2); // то есть третий аргумент (нумерация от нуля)
то есть это производится не для одного единственного коммента, а для всех. и для каждого нужно знать cid
если ссылка под каждым комментарием значит каждая ссылка содержит cid этого комментария. тот кто делал эту ссылку определял в какой позиции там находится cid, думаю это визуально заметно, вы получаете значение cid при помощи функции arg больше вам ничего не нужно, дальше используете comment_load с этим значением
ссылка такова:
'href' => 'ajax_publish/nojs/comment/'
item такой:
$items['ajax_publish/%ctools_js/comment']
как определить позицию cid?
arg(номер_позиции_в_адресе) будет возвращать вам нужный cid вы только номер позиции правильно укажите
вы же пытаетесь получить cid в обработчике а он вызывается для каждого комментария и в момент выполнения arg вам будет возвращать то что нужно. пробуйте увидите
спасибо большое за отзывчивость!
видимо у вас просто не указан cid в ссылке оценить и она для всех комментариев выглядит одинаково, верно?
тогда вам нужно ее доработать, описать как 'href' => 'ajax_publish/nojs/comment/%'
и подставлять $cid при формировании этой ссылки. а уже потом в обработчике действовать как и собирались по описанному выше
хорошо, но остается непонятным, как именно подставить $cid при формировании ссылки? вот так :
'ajax_publish/nojs/comment/'. $cid
l($title, $uri . '/' .$cid);
спасибо!
примерно так да. там где формируете скорее всего доступен или $cid или $comment
используйте
dpm(get_defined_vars());
там где формируете ссылку - обновите страницу и оно выведет вам доступные переменные (модуль devel нужен)
спасибо вам!
Если бы мужик спросил как получить cid - ему бы хер кто помогать так стал
в page callback которая выполняется для 'ajax_publish/%ctools_js/comment/% вы добавили $cid в парметры функции в скобочках? добавьте и используйте
вот callback-функция :
function comments_publish_ajax_callback($js = FALSE,$cid)
вот ссылка:
'ajax_publish/nojs/comment/'. $cid
это item:
$items['ajax_publish/%ctools_js/comment/%']
а то, что получается при выполнении команд
$cid = arg(2);
dpm(get_defined_vars());
вот:"cid (String, 7 characters ) comment
$...['cid']"
в чем ошибка?
укажите в page arguments => array(1,3)
а в функции которая указана как page callback:
function ИМЯ_ВАШЕЙ_ФУНКЦИИ($js, $cid) {
//используйте
}
arg(2) - comment
arg(3) - cid
только я уже говорил, что делается так
и в callback функцию передается объект коммента
dpm($comment);
}
сделала все, как указано выше. на выходе вот что получилось:
... (Array, 4 elements)
form (Array, 26 elements)
form_state (Array, 22 elements)
cid (NULL)
comment (Boolean) FALSE
Почему,в результате выполнения этой функции:
function comments_publish_ajax_callback($js = FALSE, $comment) {
dpm($comment);
}
при нажатии на ссылку к любому комменту, на выходе значение 1?
решено! ссылка должна быть такой:
'ajax_publish/nojs/contact/'. $comment->cid
спасибо всем огромное!!!