Стоит двуязычный сайт. Как сделать чтобы пользователи не переключая язык видели все комментарии к заметке. Т. е. надо сделать 1 заметку на двух языках, а комментарии отображались везде, в полном объёме.
Мало кто вам сможет посоветовать что-то дельное по этому поводу. Это из раздела "жопных" ситуаций. Но я могу подсказать решение.
Есть такая функция в ядре comment_render(). Из названия уже следует, что она используется для вывода дерева комментов
Есть такой малоизвестный хак, для вывода коментов в произвольном месте шаблона (node.tpl.php).
запрещает стандартный вывод комментов. Это вам нужно в первую очередь.
Во-вторых, вам нужно сделать свой вариант функции comment_render(). Проще говоря, скопипастить ее и изменить название, скажем, на multycomment_render(). А в своей функции, найти все места где встречается вот такое "WHERE nid = %d" (или примерно такое) и заменить из на правильный селектор, который в вашем случае будет выбирать еще и переведенную ноду. К сожалению, я уже не помню как в i18n устроены связи, но думаю это найти легче.
Когда все будет готово, вы вставляете вот такой код:
Ковырять особо-то и не надо ничего. multycomment_render() вы можете скопипастить прямо со ссылки которую я дал и помещаете функцию в template.php вашей темы, а все остальные изменения которые я описал - в node.tpl.php вашей темы
Комментарии
Мало кто вам сможет посоветовать что-то дельное по этому поводу. Это из раздела "жопных" ситуаций. Но я могу подсказать решение.
Есть такая функция в ядре comment_render(). Из названия уже следует, что она используется для вывода дерева комментов
Есть такой малоизвестный хак, для вывода коментов в произвольном месте шаблона (node.tpl.php).
if (function_exists('comment_render') && $node->comment) {
print comment_render($node, $node->cid);
$node->comment = NULL;
}
?>
Вот эта строка в нем
запрещает стандартный вывод комментов. Это вам нужно в первую очередь.
Во-вторых, вам нужно сделать свой вариант функции comment_render(). Проще говоря, скопипастить ее и изменить название, скажем, на multycomment_render(). А в своей функции, найти все места где встречается вот такое "WHERE nid = %d" (или примерно такое) и заменить из на правильный селектор, который в вашем случае будет выбирать еще и переведенную ноду. К сожалению, я уже не помню как в i18n устроены связи, но думаю это найти легче.
Когда все будет готово, вы вставляете вот такой код:
if (function_exists('comment_render') && $node->comment) {
print multycomment_render($node, $node->cid); //выводите свои комменты
$node->comment = NULL; // запрещаете стандартный вывод комментов
}
?>
в файл node.tpl.php вашей темы в то место, где должны быть комменты. И все будет чики-пики.
Пока писал, устали руки, но я крут
Круто... А по проще никак?
я пока не дошёл до того, чтобы ковырять исходники друпала
но спасибо за ответ! попоробую, но не факт что всё получится...
Ковырять особо-то и не надо ничего. multycomment_render() вы можете скопипастить прямо со ссылки которую я дал и помещаете функцию в template.php вашей темы, а все остальные изменения которые я описал - в node.tpl.php вашей темы
Вопрос, что именно копипастить? Всю функцию comment_render() или какую то часть? И в какое место потом её вставлять template.php?
Всю функцию, заменить название. Вставить в произвольное место, напрмиер в конец файла. Заменить условия в запросах (как я и писал)
Это единственное решение?
В 7-ом друпале вообще не нашёл функции "comment_render", каким может быть его аналог???