Хочу поделиться опытом создания раздела новостей.
Делать было нечего, захотелось сделать свои новости. Пример www.progdesign.ru
Итак,
1. Установил модуль CCK, в нем создал тип контента 'content_news'.
2. Для этого типа добавил поля:
field_text_value Краткое описание
field_content_value Текст
field_date_value Дата
Ну и естественно везде вставил текстовые пояснения, чтобы потом не думать где здесь что.
Если кто не знает где это создаеться то идем в "Типы материалов"--"Добавить тип содержимого", создаем тип материала, потом возле вновь созданого материала должно появиться между "изменить" и "удалить" вот такое вот "manage fields", тыркаем туда, заходим добавляем необходимые поля и будет вам счастье.
3. Код PHP для основной страницы новостей (список):
-
-
-
//выбрать все записи с нашим типом контента в обратном порядке
-
$news = db_query("SELECT * FROM node WHERE type= 'content_news' ORDER BY `vid` DESC");
-
while($item = db_fetch_object($news))
-
{
-
// получить заголовок новости
-
$title = l($item->title, "node/$item->nid");
-
-
// выбираем содержимое новости
-
$news_content = db_query("SELECT * FROM node_content_news WHERE nid=" . $item->nid);
-
-
-
$content = db_fetch_object($news_content);
-
//описание
-
$desc = $content->field_text_value;
-
//дата
-
$date= $content->field_date_value;
-
-
// склеиваем вывод
-
$output .=$title . "
" . $desc . ""
. $date. "";
-
-
}
-
// выводим для каждой новости
-
return $output;
-
-
?>
4. Этот код вставить в страницу, выбрать режим PHP и сохранить.
5. Чтобы что-то отобразить нужно сначала создать.
Идем в публикации, создание.
Выбираем тип, который мы создали и видим наши поля.
Вводим текст и сохраняем.
Идем на страницу новостей и наслаждаемся.
6. Чтобы добавить блок новостей на правую панель.
Создаем блок. В его тело пишем следующий код:
-
-
$news = db_query("SELECT * FROM node WHERE type= 'content_news' ORDER BY `vid` DESC LIMIT 3");
-
// limit 3 означает, что выведутся только три последние новости
-
-
while($item = db_fetch_object($news))
-
{
-
$title = l($item->title, "node/$item->nid");
-
-
-
$news_content = db_query("SELECT * FROM node_content_news WHERE nid=" . $item->nid );
-
$content = db_fetch_object($news_content);
-
$desc = $content->field_text_value;
-
$date= $content->field_date_value;
-
-
-
$output .=$title . "
" . $desc . ""
. $date. "";
-
}
-
//Типа ссылка на основную страницу новостей
-
$output .=l("Остальные новости", "news");
-
-
return
-
$output;
-
-
?>
7. Вы можете добавить поля которые нужны Вам
Иногда возникают проблемы с именами таблиц и полей.
Одно решение вот такое:
-
-
global $db_prefix;
-
$news = db_query("SELECT * FROM ".$db_prefix."node WHERE type= 'content_news' ORDER BY `vid` DESC LIMIT 3");
-
// limit 3 означает, что выведутся только три последние новости
-
-
while($item = db_fetch_object($news))
-
{
-
$title = l($item->title, $db_prefix."node/$item->nid");
-
-
$news_content = db_query("SELECT * FROM ".$db_prefix."content_type_content_news WHERE nid=" . $item->nid );
-
$content = db_fetch_object($news_content);
-
$desc = $content->field_text_value;
-
$date= $content->field_date_value;
-
-
$output .=$title . "
" . $desc . ""
. $date. "";
-
}
-
//Типа ссылка на основную страницу новостей
-
$output .=l("Остальные новости", "news");
-
-
return $output;
-
?>
В моем случае поля field_text_value называелись с еще одним _value (тоесть field_text_value_value), а таблица content_type_content_news.
В общем смотрите какие там создались таблицы и поля через пхпмайадмин например, помогает если покопаться
Возможно кому то пригодиться.
Часть материала позаимствована с http://www.drupal.ru/node/2782
Комментарии
Создание раздела новостей для Drupal
Вы просто Гений! Спасибо, очень понятно и грамотно расписали, сейчас буду пробовать. На друпал 7 надеюсь получится:)
Дружище! Спасибо тебе
Дружище! Спасибо тебе огромное! Все ясно и понятно! (только про PhpFilter, что надо включить не сказал, ну да черт с ним :)
Выручила эта статья не представляешь как!
Побольше надо таких!
Желаю удачи!
На сдоровье :) PhpFilter у
На сдоровье :)
PhpFilter у меня включен был, возможно забыл.
Отправить комментарий