Господа.
Много ходил по форумам и пытался найти ответ на свой вопрос. Но чёткой последовательности действий я для себя так и не вынес. Мне нужно сделать главную страницу не совсем стандартной. Схему размещения даннных см. на картинке.
Подскажите, пожалуйста, если можно по шагам, как добиться такого размещения контента на главной странице.
В качестве практической реализации подобной схемы можно привести пример www.basketball.ru
Вложение | Размер |
---|---|
Graphic1.jpg | 22.87 КБ |
Комментарии
Я думаю это надо в теме править. Отлавлиать вывод титульной страницы (см. как это в xtemplate сделано например) и для неё под стандартным выводом (можно использовать модуль node, как по умолчанию сделано - это верхняя часть страницы будет) выводить свой список статей. Блоки по бокам, шапка - тож всё стандартное. Разумеется для формирования списка статей понадобятся свои запросы - либо модулем простеньким либо в крайнем случае прямо в коде темы это забить.
Ещё есть front_page модуль, который позволяет почти тоже самое без правки темы, но там по-моему только HTML можно задействовать, для того чтобы он PHP воспринял придётся его доработать.
--
Axel,
www.axel.drupal.ru
Насколько я понимаю node выводит не список ссылок на новости, а заголовки новостей + начальный текст новости + служебные ссылки (комментарии и пр.). Также node не делит новости по датам (на картинке новости дня выделены маленькими подзаголовочками типа "31.12.2004").
Можно-ли без программирования подстроить node так, чтобы выводились только заголовки (и ничего более) и автоматом расставлялись подзаголовочки с датами?
Тогда тут пожалуй без программирования не обойтись, но код то достаточно небольшой - один запрос на выбор новостей, второй - на выборку статей. Дальше уже в теме раскрасить их вывод. Если б я так делал, то делал бы это отдельным модулем, который бы генерил такую страницу, которую можно было бы указать в настройках сайта как заглавную.
--
Axel,
www.axel.drupal.ru
Буду пробовать, спасибо.
Если что, могу ли я рассчитывать на помощь и консультации?
Буквально только что вышла новая версия FrontPage которая поддерживает PHP. Круто!
[url=http://cvs.drupal.org/viewcvs/*checkout*/drupal/contributions/modules/fr...Вот ссылочка на новый модуль[/url]
Итак, я поставил этот FrontPage с поддержкой PHP. И вставил на главную страницу следующий код:
function title_list($result, $title = NULL) {
$dt = "";
$cond = 0;
$out = "";
while ($node = db_fetch_object($result)) {
$a = getdate($node->created);
if ($cond == 0)
{
$y = $a['year'];
$m = $a['mon'];
$d = $a['mday'];
$dt = "<p><b>".$d.".".$m.".".$y."</b></p>";
$out = $out.$dt;
$cond = 1;
}
else
if (($y != $a['year']) || ($m != $a['mon']) || ($d != $a['mday']))
{
$out = $out.theme('node_list', $items, $title);
UnSet($items);
$a = getdate($node->created);
$y = $a['year'];
$m = $a['mon'];
$d = $a['mday'];
$dt = "<p><b>".$d.".".$m.".".$y."</b></p>";
$out = $out.$dt;
}
else
$dt = "";
$number = module_invoke('comment', 'num_all', $node->nid);
$items[] = l($node->title, 'node/'. $node->nid, $number ? array('title' => format_plural($number, '1 comment', '%count comments')) : '');
}
return $out.theme('node_list', $items, $title);
}
global $user;
if (user_access("access content"))
{
$stories = "";
$queryResult = db_query_range("SELECT n.uid, u.name, max(n.nid) FROM {node} n INNER JOIN {users} u ON u.uid = n.uid WHERE n.type = 'story' AND n.status = 1 GROUP BY n.uid, u.name ORDER BY 3 DESC", 0, 10);
while ($node = db_fetch_object($queryResult))
{
$stories .= title_list(db_query_range("SELECT n.title, n.nid, n.created FROM {node} n WHERE n.type = 'story' AND n.status = 1 AND n.uid = " . $node->uid . " ORDER BY n.nid DESC", 0, 10));
}
print $stories
. "
". l(t("more"), "story", array("title" => t("Просмотреть остальные новости."))) ."
";
}
?>
Всё работает отлично, выводятся списки новостей с расстановкой дат. Однако данные берутся абсолютно из всех словарей базы. Как подправить SQL-запрос, чтобы информация доставалась только из словаря, скажем, с названием "Статьи"?
я так понял вы хотите сделать группы блоков (по центру) - этого всем нехватает в друпале но почему-то все меня игнорируют - я где-то писал, но забыл в каком топике - используйте мой хак к модулю block и доделайте его по возможности что-б он с разными движками тем работал:
http://kiev1.org/download/block_module.zip
http://drupal.org/node/15854
Дело в том что в друпале отличительная особенность то что код простой и если его усложнять то это неправильно - мой хак не усложняет а наоборот упрощает код модуля block. Он позволяет в теме задавать произвольные зоны блоков которые могут быть размещены где угодно в теме - модуль block сам парсит файл темы находит выражения вида
$yyy=theme ("blocks", " anywhere 1 ");
$zzz=theme ("blocks", " for example here ");
$nnn=theme ("blocks", " and here it it is possible ");
и выдает их произвольные названия в виде выпадающего меню в административном интерфейсе вместо рабиобутона слева/справа а дизайнер в теме может позиционировать группу блоков где угодно выводя эти переменные а там где в настройках блоков "путь" - там прописывать правила появления этих блоков на главной и других страницах сайта стандартным способом. Это необходимо для создания практически любых сайтов и даже более - как в постнуке многие пришли к необходимости в настройках не ставить на главной странице какой-то модуль а модуль "пустой" - так и тут главная страничка должна состоять из одних блоков.
Эту тему я читал здесть на форуме раньше. Пришёл к вводу, что данный, несомненно полезный хак мне не совсем подойдёт.
Я так понимаю, речь идёт о PHPTemplate. Можно ли проделать данный трюк в XTemplate? И второй момент, который вызывает вопросы. Я хотел бы, чтобы изменения касались только главной страницы. Весь же сайт должен работать как обычный, немодифицированный Друпал.
PHPTemplate лучше и быстрее, а в теме box_grey поддерживаются все возможности XTemplate, в том числе и аватары...
дубль... хорошо бы хак был такой, чтобы, если один пользователь постит второй раз (за какое-то время) в одну и ту же тему, то это добавляется к его прежнему сообщению как "Добавлено:"...
ребят не в тему будет замечено, но вот после сообщения добавленного Пят, 18/02/2005 - 09:19 форматирование текста у всех последующих постов пошло, такое, которое затеял автор.
есть решение этой проблемы?
на друпале.орг есть модуль, называется он front, он позволяет делать нестандартные страницы...
а на www.basketball.ru я не понял в чем нестандартность первой страницы..