Отображение комментариев на всех языках

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

Аватар пользователя Freedom Freedom 19 февраля 2008 в 15:59

Стоит двуязычный сайт. Как сделать чтобы пользователи не переключая язык видели все комментарии к заметке. Т. е. надо сделать 1 заметку на двух языках, а комментарии отображались везде, в полном объёме.

Комментарии

Аватар пользователя neochief neochief 20 февраля 2008 в 6:43

Мало кто вам сможет посоветовать что-то дельное по этому поводу. Это из раздела "жопных" ситуаций. Но я могу подсказать решение.
Есть такая функция в ядре comment_render(). Из названия уже следует, что она используется для вывода дерева комментов Smile

Есть такой малоизвестный хак, для вывода коментов в произвольном месте шаблона (node.tpl.php).

<?php
if (function_exists('comment_render') && $node->comment) {
   print comment_render($node, $node->cid);
   $node->comment = NULL;
}
?>

Вот эта строка в нем

$node->comment = NULL;

запрещает стандартный вывод комментов. Это вам нужно в первую очередь.
Во-вторых, вам нужно сделать свой вариант функции comment_render(). Проще говоря, скопипастить ее и изменить название, скажем, на multycomment_render(). А в своей функции, найти все места где встречается вот такое "WHERE nid = %d" (или примерно такое) и заменить из на правильный селектор, который в вашем случае будет выбирать еще и переведенную ноду. К сожалению, я уже не помню как в i18n устроены связи, но думаю это найти легче.

Когда все будет готово, вы вставляете вот такой код:

<?php
if (function_exists('comment_render') && $node->comment) {
   print multycomment_render($node, $node->cid); //выводите свои комменты
   $node->comment = NULL; // запрещаете стандартный вывод комментов
}
?>

в файл node.tpl.php вашей темы в то место, где должны быть комменты. И все будет чики-пики.

Пока писал, устали руки, но я крут Smile

Аватар пользователя Freedom Freedom 20 февраля 2008 в 15:50

Круто... А по проще никак?
я пока не дошёл до того, чтобы ковырять исходники друпала
но спасибо за ответ! попоробую, но не факт что всё получится...

Аватар пользователя neochief neochief 20 февраля 2008 в 22:48

Ковырять особо-то и не надо ничего. multycomment_render() вы можете скопипастить прямо со ссылки которую я дал и помещаете функцию в template.php вашей темы, а все остальные изменения которые я описал - в node.tpl.php вашей темы

Аватар пользователя Freedom Freedom 22 февраля 2008 в 11:40

Вопрос, что именно копипастить? Всю функцию comment_render() или какую то часть? И в какое место потом её вставлять template.php?

Аватар пользователя neochief neochief 22 февраля 2008 в 17:33

Всю функцию, заменить название. Вставить в произвольное место, напрмиер в конец файла. Заменить условия в запросах (как я и писал)