Вот так можно правильно и просто прикрепить файл к ноде:

<?php
$node
= node_load($nid);

$image = file_get_contents('http://img.yandex.net/i/www/logo.png');
$file = file_save_data($image, 'public://logo.png', FILE_EXISTS_RENAME);
$file->display = 1;
$node->field_photo = array('und' => array('0' => (array)$file));

node_save($node);
?>

Если понадобилось вывести форму для коментирования ноды в произвольном месте, то:

<?php
print render(drupal_get_form("comment_form", (object)(array('nid' => $nid))));
?>

Где $nid - это nid нужной нам ноды (ну, думаю, это и так понятно).

Пишем свой хук hook_mail

<?php
function MYMODULE_mail($key, &$message, $params) {
  switch (
$key) {
    case
'invitation':
     
// note: data can be passed to this function in the $params array
     
$message['subject'] = t('EMAIL SUBJECT');
     
$message['body'] = t('MESSAGE BODY');
      break;   
  }
}
?>

...

Компактный clearfix.
Нашёл у xandeadx.ru

.clearfix:before,
.clearfix:after {
    content: "";
    display: table;
}
.clearfix:after {
    clear: both;
}
.clearfix {
    zoom: 1; /* IE 6/7 */
}

Сегодня столкнулся со странной задачей: вывести views exposed filter form в произвольном месте.
Вооружившись гуглом нашёл весьма красивое решение, которое и выкладываю на суд русскоязычной общественности!

Предполагаем, что у нас есть вьюшка my_view с дисплеем page_1.
У неё также есть exposed filter (причем не важно, в блоке он или нет).

<?php
  $view
= views_get_view('my_view');
 
$view->set_display('page_1');
 
$view->init_handlers();
 
$exposed_form = $view->display_handler->get_plugin('exposed_form');
  print
$exposed_form->render_exposed_form(TRUE);
?>

Каждый разработчик на Друпале рано или поздно сталкивается с тем, что нужно сделать свою форму и вызвать её в произвольном месте.
Вот пример наипростейшей формы в Drupal 7.

Задача: написать универсальную функцию для генерации XML с заданными ключами, значениями и т.п.
В интернете решения как-то сходу не нашлось - поэтому было решено изобрести велосипед.

Для начала привожу текст готовой рекурсивной функции:

Иногда возникает задача вывода формы редактирования ноды в произвольном месте.
Например, у меня была задача выводить форму редактирования прямо в месте обычного вывода ноды.

Делается довольно просто.
Предположим у нас уже есть объект $node.
Делаем следующее:

Для этого пишем простую функцию:

function getUrlVars() {
  vars = [], hash;
  var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
  for(var i = 0; i &lt; hashes.length; i++) {
    hash = hashes[i].split('=');
    vars.push(hash[0]);

 
В Drupal 6 мы могли выводить ноды либо тизером (teaser view) либо основным выводом (full node view). В Drupal 7 ситуация поменялась и мы можем добавить свой тип вывода для нод любого типа.
Сделать это можно одним хуком в своем модуле: