Господа, не могу понять, как вытащить поле картинки из node_revisions, точнее, как переделать уже работающий SQL-запрос с этим делом. Вот сам запрос:
SELECT DISTINCT(n.nid), n.created, n.title FROM {node} n INNER JOIN {term_node} tn ON n.nid = tn.nid WHERE tn.tid = 1928 AND n.type IN (" . db_placeholders($node_types, 'varchar') . ") AND n.status = 1 AND n.created < %d AND n.language = 'ru' ORDER BY n.created DESC, n.nid DESC
Требуется как-то в него вставить поле картинки. Посмотрел, как это делает вьюс:
node_data_field_image_news.field_image_news_list AS node_data_field_image_news_field_image_news_list,
node_data_field_image_news.field_image_news_data AS node_data_field_image_news_field_image_news_data, ...
LEFT JOIN node_revisions node_revisions ON node.vid = node_revisions.vid
LEFT JOIN content_type_news node_data_field_image_news ON node.vid = node_data_field_image_news.vid
Но как только ни пробовал, нифига.
Таблица самого поля в БД: content_field_news_image
Комментарии
Попробую объяснить суть: если Вам нужно получить картинку из БД, берется таблица нод {node}, т.е. префикс_node если без друпал АПИ, к ней цепляется таблица поля картинки content_field_news_image по полю vid, в этой таблице идет описание картинки(Альт, и тому подобная хрень) и самое главное fid, если быть точнее, то в Вашем варианте что-то вроде field_news_image_fid, по которому уже цепляется таблица {files} через fid, где можно получить поле filepath, оно, как я понял, и нужно, с ревизиями вроде примерно тоже самое(правда они мне пока еще даром небыли нужны), только нужно в цепочку зависимостей присоединить еще {node_revisions}, если не ошибаюсь, по тому же vid.
Правда я не понял, что общего Ваш вопрос имеет с данным Вами sql запросом?
Все описанное Вами именно так и нужно. Вот только синтаксисом не владею.
Привел запрос, к которому нужно присоединить "вытаскивание" картинки.
А лучше попробую объяснить конкретно под свои нужды:
Есть замечательный модуль Yandexnews, выводящий рсс-ку, которую подхватывает сервис Я-новостей. В модуле есть такой фрагмент кода:
<?php
function _yandexnews_getyandexnewsitems($node_types, $node_count) {
$args = array_merge($node_types, array(time()));
$time = time();
$sql = "SELECT DISTINCT(n.nid), n.created, n.title FROM {node} n INNER JOIN {term_node} tn ON
n.nid = tn.nid WHERE tn.tid = 1928 AND n.type IN (" . db_placeholders($node_types, 'varchar') .
") AND n.status = 1 AND n.created < %d AND n.language = 'ru' ORDER BY n.created DESC, n.nid DESC";
$query = db_query_range(db_rewrite_sql($sql), $args, 0, $node_count);
while ($node = db_fetch_object($query)) {
$item = node_load($node->nid);
$content .= "<item>\n";
$content .= "<title>" . check_plain($node->title) . "</title>\n";
$content .= "<link>" . url("node/" . $node->nid, array("absolute" => TRUE)) . "</link>\n";
$content .= "<pdalink>" . url("node/" . $node->nid, array("absolute" => TRUE)) . "</pdalink>\n";
$content .= "<description>" . check_plain(strip_tags(check_markup($item->teaser))) . "</description>\n";
// $content .= "<author>" . check_plain($node->uid) . "</author>\n";
$content .= "<yandex:full-text>" . check_plain(strip_tags(check_markup($item->body))) . "</yandex:full-text>\n";
$content .= "<pubDate>" . date("r", $node->created) . "</pubDate>\n";
$content .= "</item>\n";
}
return $content;
}
?>
Вот и хотел к запросу прицепить картинки от типа контента (я так понимаю, второй запрос нельзя писать же отдельный?), а затем вывести это:
<?php $content .= "<enclosure url($filepath, array("absolute" => TRUE))></enclosure\n"; ?>
В объекте ноды ($item) уже есть изображения - $item->field_news_image[0]['filepath'], кажется так
Большое спасибо! Буду пробовать.