Переезд с Serendipity на Drupal: комментарии

· На чтение уйдёт 2 минуты · (326 слов)

Как обычно, очень легко перевести на другую CMS сами ваши статьи или посты из блога. Но что если речь идёт о не менее ценном и не менее уникальном материале — комментариях пользователей? Давайте создадим программно комментарий.

Самый простой способ, который мне удалось найти — это эмуляция отправки формы. Для этого нам потребуется несколько вещей.

Первой из них будет авторизация. Нам нужно, чтобы неанонимные комментарии так и остались неанонимными. Для этого будем использовать глобальную переменную $user:

<?php
global $user;
$user = user_load(array(uid => 1));
?>

Теперь создадим «форму» комментария:

<?php
$comment = array(
 'values' = array(
  'author' => $user->name,
  'subject' => "Test Comment",
  'comment' => 'Test',
  'op' => t('Save'),
  'nid' => 13, // 13 статья
 )
);
comment_form_submit("comment_form", $comment);
?>

Кстати, мы добавляли комментарий к ноде (статье) за номером 13. Если этот способ не сработал — возможно также создавать объекты комментариев напрямую, но так код получается чуть более громоздким:

<?php
$comment = new stdClass();
$comment->nid = 13; // 13 статья. Снова!
$comment->cid = 0;
$comment->pid = 0; // Если это ответ на другой коммент, нужно указать его идентификатор
$comment->uid = 1; // Автор жжот!
$comment->mail = 'baron@baron.su';
$comment->name = 'BaRoN!'; // Это можно пропустить
$comment->hostname = '127.0.0.1';
$comment->created = time();
$comment->is_anonymous = 0;
$comment->homepage = 'http://baron.su/';
$comment->status = COMMENT_PUBLISHED; 
$comment->language = LANGUAGE_NONE; 
$comment->subject = 'Test comment'; 
$comment->comment_body[$comment->language][0]['value'] = 'Comment body text';
$comment->comment_body[$comment->language][0]['format'] = 'filtered_html'; 
comment_submit($comment); // запишем коммент в базу уже
comment_save($comment);
?>

Разумеется, в случае импорта — надо подставлять правильные домашнюю страницу, ник пользователя и даже его IP, взяв их из вашего текущего движка.

Ах да, чуть не забыл чертовски важную вещь! Вы таки мне не поверите. Да я таки и сам себе бы не поверил! Однако этот пост не появился бы на свет, если бы не лучшие игровые автоматы. Не знал я чем заняться, но мысли об автоматах не давали мне покоя, и так родилась заметка о комментариях в Drupal. Поверили? Нет? Ну ё-моё. Я бы уже поверил. Ну в общем как-то так, засим прощаюсь.

Полезное