Доброго дня.
Сел пару дней назад впервые за Drupal и начал осваивать. Более-менее все понятно, кроме пары вещей.
Суть в том, что смотрю Firebug'ом код для каждого элемента и пытаюсь поменять стиль вывода в одну колонку. Вот какой код выдает Firebug на нужном блоке:
<?php <div class="content clear-block">
<table border="0" width="100%" class="primarypage">
<tbody>
<tr>
<td width="50%" class="table-title b">
<h3>Новости</h3>
</td>
<td> </td>
<td width="50%" class="table-title bb">
<h3>Статьи</h3>
</td>
</tr>
?>
По советам с форума полез в файл page.tpl.php. Но вместо задания стилей вывода блоков увидел
<?php <div class="clear-block">
<?php print $content ?>
</div>?>
Затем полез в файл node.tpl.php, надеясь там увидеть оформление вывода блоков. Но обнаружил точно такую же строчку, что и выше.
Вопрос: как задать стиль вывода $content на главной? Не могу понять в каком файле искать например строчки, которые выдал Firebug,
<?php<td width="50%" class="table-title b">
<h3>Новости</h3>
</td>
?>
и как поменять вывод 50% на 100%.
Комментарии
api.drupal.ru
Только не надо говорить что это будет слишком долго.
Если хочешь, можешь для этих целей поставить модуль -
Модулей ставить нельзя. Стоит задача изменить текущий дизайн.
Если вам нужно поменять стиль вывода блоков, то смотреть надо block.tpl.php, box.tpl.php и т.п.
Дело в том, что я ни в одном из файлов каталога themes\mytheme не нашел определения вывода таблицы в две колонки по 50% ширины, как показал файрбаг. В файлах css искомое тоже отсутствует. Вот и ломаю голову где генерируется стиль.
Плюсом не могу понять где формируется содержимое переменной $content.
Модуль panels возможно включен. С его помощью страницу можно хоть раком поставить с использованием через page.tpl.php смотрите в его сторону.
Поставьте модуль devel, в нём есть подмодуль devel_themer - он покажет все темплэйты. Потом модуль удалите.
- извиняюсь, не прочел, то что у вас блок.
Кто-нибудь может объяснить как и где формируется содержимое (то, что по центру) главной страницы сайта? В файле node.tpl.php нашел строчку вывода $content, комментируя которую, я делаю пустым центральную часть страницы. Но в упор не могу найти где можно отключить/изменить этот вывод. Всю админку и все файлы каталога themes перекопал. Просто предыдущий разработчик сайта не позаботился о тех, кто будет допиливать его творение до ума и не оставил даже намеков где это все искать.
В формировании переменной $content участвуют все модули, которые хотят этого![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
Как правило с помощью хука nodeapi.
Вмешаться в формирование $content можно тоже через этот хук.
Ещё есть препроцессинг - там можно изменить/удалить/добавить переменные для вывода на страницу.
- это есть, имхо причина визуальной одинаковости сайтов на Drupal.
- в этой теме переопределен вывод ноды Product.
Посмотрите как у них это сделано, мне в свое время помогло.
Скачал эту тему и попробовал ради эксперимента сделать дефолтной. Долбаный двухколоночный вывод содержимого на главной никуда не делся (хотя в админке публикация отключена вообще).
Попробую покопать в этом направлении.
Кстати если вырубить модуль Php filter, то содержимое центральной части заменяется на примерно следующее.
'; while ($data=db_fetch_object($newsresult)) { $news_out.= '
'.date('j.m.Y',$data->node_changed).' '.strip_tags(drupal_substr($data->teaser,0,51)).' Просмотреть...
'; $articleresult=db_query("SELECT node.changed AS node_changed, node.nid AS nid, node.title AS title FROM {node} node WHERE (node.status <> 0) AND (node.type='article') ORDER BY node_changed DESC LIMIT 5"); $i=0; while ($data_a=db_fetch_object($articleresult)) { $i=$i+1; $article_out.= ''.$i.'. '; $article_out.= ''.$data_a->title.'
';} $notice=db_query("SELECT node.changed AS node_changed, node.nid AS nid, node.title AS title FROM {node} node WHERE (node.status <> 0) AND (node.type='notice') ORDER BY node_changed DESC LIMIT 5"); $i=0; while ($data_a=db_fetch_object($notice)) { $i=$i+1; $notice_out.=''.date('j.m.Y',$data_a->node_changed).''; $notice_out.= ' '.$data_a->title.'
';} ?>
Не самая простая тема для изучения
Шикарно. Вывод сделан кодом на странице. Бывшему разработчика можно прописать ртутные компрессы. Должно помочь...
- а это единственная тема, где реально люди переделали вывод ноды(из тех, которыю я находил).
Все остальные создатели тем ограничиваются вот этим:
<?php print $content ?>
.p.s. Если кто знает тему, где вывод ноды разложен в файле ....tpl.php, с удовольствием поизучаю.
Ну или на худой конец в template.php.
Я уже давно на него зуб точу )
Можете посоветовать как в данном случае на этот кривой вывод повлиять? Ну или как его отрубить вообще. Смутное подозрение, что стиль вывода тупо берется из баз sql. Только как он там оказался и почему было не поюзать CSS - для меня загадка.
Это на главной или в блоке код?
На главной.
/admin/settings/site-information, Настройка в самом низу - Главная страница по умолчанию.![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
Найдите её и кидайте содержимое сюда. Или сами разбирайтесь
Главная страница по-умолчанию - node. Не понял, что кидать. node.tpl.php?
<?php
// $Id: node.tpl.php,v 1.5 2007/10/11 09:51:29 goba Exp $
?>
<div id="node-<?php print $node->nid; ?>" class="node<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?>">
<?php print $picture ?>
<?php if ($page == 0): ?>
<?php if (!$is_front) {?><h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2><?php }?>
<?php endif; ?>
<?php if ($submitted): ?>
<span class="submitted"><?php print $submitted; ?></span>
<?php endif; ?>
<div class="content clear-block">
<?php print $content ?>
</div>
<div class="clear-block">
<div class="meta">
</div>
<?php if ($links): ?>
<div class="links"><?php print $links; ?></div>
<?php endif; ?>
</div>
</div>
?>
Неправильно спросил. Я имел ввиду это в ноде или в блоке.
Надо найти где этот код лежит. Посмотрите html-код страницы - найдите оборачивающие этот код дивы, посмотрите на классы - они подскажут в каком блоке лежит этот код.
Самое забавное, что $news_out присутствует только в следующем файле:
public_html\sites\default\files\backup_migrate\manual\-2009-06-12T17-44-19.sql.
Привожу кусок кода из него
INSERT INTO `node_revisions` VALUES ('2','2','1','Главная','<?php\r\n$newsresult=db_query(\"SELECT node.changed AS node_changed, node.nid AS nid, node_rev.teaser AS teaser FROM {node} node INNER JOIN {node_revisions} node_rev ON node.nid = node_rev.nid WHERE (node.status <> 0) AND (node.type=\'news\') ORDER BY node_changed DESC \");\r\n$news_out=\'<table width=\"100%\" border=\"0\" class=\"primarypage\">\';\r\nwhile ($data=db_fetch_object($newsresult)) {\r\n$news_out.= \'<tr><td class=\"blue\"><strong>\'.date(\'j.m.Y\',$data->node_changed).\'</strong></td>\';\r\n$news_out.= \'<td>\'.strip_tags(drupal_substr($data->teaser,0,51)).\' ...</td></tr>\';}\r\n$news_out.=\'</table>\';\r\n$articleresult=db_query(\"SELECT node.changed AS node_changed, node.nid AS nid, node.title AS title FROM {node} node WHERE (node.status <> 0) AND (node.type=\'article\') ORDER BY node_changed DESC LIMIT 5\");\r\n$i=0;\r\nwhile ($data_a=db_fetch_object($articleresult)) {\r\n$i=$i+1;\r\n$article_out.= \'<strong>\'.$i.\'. </strong>\';\r\n$article_out.= \'<a href=\"/\'.drupal_get_path_alias(\'node/\'.$data_a->nid).\'\">\'.$data_a->title.\'</a><br>\';}\r\n?>\r\n<table width=\"100%\" border=\"0\" class=\"primarypage\">\r\n <tbody>\r\n <tr>\r\n <td class=\"table-title b\" width=\"50%\">\r\n <h3>Новости</h3>\r\n </td>\r\n <td> </td>\r\n <td class=\"table-title bb\" width=\"50%\">\r\n <h3>Статьи</h3>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td class=\"dotted\"><?php print $news_out; ?></td>\r\n <td> </td>\r\n <td class=\"dotted\"> </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n<table width=\"100%\" border=\"0\" class=\"primarypage\" style=\"margin-top:5px;\">\r\n <tbody>\r\n <tr>\r\n <td class=\"table-title bbb\">\r\n <h3>Статьи</h3>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td class=\"dotted\"><?php print $article_out;?></td>\r\n </tr>\r\n </tbody>\r\n</table>','<?php\r\n$newsresult=db_query(\"SELECT node.changed AS node_changed, node.nid AS nid, node_rev.teaser AS teaser FROM {node} node INNER JOIN {node_revisions} node_rev ON node.nid = node_rev.nid WHERE (node.status <> 0) AND (node.type=\'news\') ORDER BY node_changed DESC \");\r\n$news_out=\'<table width=\"100%\" border=\"0\" class=\"primarypage\">\';\r\nwhile ($data=db_fetch_object($newsresult)) {\r\n$news_out.= \'<tr><td class=\"blue\"><strong>\'.date(\'j.m.Y\',$data->node_changed).\'</strong></td>\';\r\n$news_out.= \'<td>\'.strip_tags(drupal_substr($data->teaser,0,51)).\'
Больше ни в одном из файлов такого вхождения нет.
Чем дальше в лес, тем толще партизаны...
Этот код должен быть на странице /node/2, которая называется "Главная".
В принципе уже и так видно, что там запрос к БД и вывод данных в виде таблицы сырым html.
Какие существуют пути решения проблемы?
Определитесь с проблемой![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
В вашем случае, скорее всего - [module=views]. Если я правильно понял проблему.
Проблема в неубиваемых блоках Новости и Статьи на главной, которые занимают по 50% width и хрен знает где это можно изменить.
Думаю не Views. Удалил все, что были на сайте. Ничего с главной никуда не исчезло.
думаю что $content можно изменить лишь создав свой модуль узла, так как стандартный изменять не рекомендуется))
Весь Ваш код в /node/2. Я Вам об этом саказал. Вы ЭТО проверили? Если да, то: меняйте его, удаляйте, переписывайте, переходите на views (один из путей решения), пишите модуль... Если нет, то так и скажите, зачем views-то грохать?