Как определить стиль для вывода $content

Главные вкладки

Аватар пользователя BadD BadD 12 декабря 2009 в 3:24

Доброго дня.
Сел пару дней назад впервые за 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%.

Комментарии

Аватар пользователя BadD BadD 12 декабря 2009 в 16:15

Дело в том, что я ни в одном из файлов каталога themes\mytheme не нашел определения вывода таблицы в две колонки по 50% ширины, как показал файрбаг. В файлах css искомое тоже отсутствует. Вот и ломаю голову где генерируется стиль.
Плюсом не могу понять где формируется содержимое переменной $content.

Аватар пользователя toshaxtsa toshaxtsa 12 декабря 2009 в 17:46

Модуль panels возможно включен. С его помощью страницу можно хоть раком поставить с использованием через page.tpl.php смотрите в его сторону.

Аватар пользователя Dan Dan 12 декабря 2009 в 18:02

Поставьте модуль devel, в нём есть подмодуль devel_themer - он покажет все темплэйты. Потом модуль удалите.

Аватар пользователя F10 F10 12 декабря 2009 в 21:45

"F10" wrote:
Если хочешь, можешь для этих целей поставить модуль - contemplate[/module]

- извиняюсь, не прочел, то что у вас блок.

Аватар пользователя BadD BadD 13 декабря 2009 в 18:10

Кто-нибудь может объяснить как и где формируется содержимое (то, что по центру) главной страницы сайта? В файле node.tpl.php нашел строчку вывода $content, комментируя которую, я делаю пустым центральную часть страницы. Но в упор не могу найти где можно отключить/изменить этот вывод. Всю админку и все файлы каталога themes перекопал. Просто предыдущий разработчик сайта не позаботился о тех, кто будет допиливать его творение до ума и не оставил даже намеков где это все искать.

Аватар пользователя Dan Dan 13 декабря 2009 в 18:30

В формировании переменной $content участвуют все модули, которые хотят этого Smile
Как правило с помощью хука nodeapi.
Вмешаться в формирование $content можно тоже через этот хук.
Ещё есть препроцессинг - там можно изменить/удалить/добавить переменные для вывода на страницу.

Аватар пользователя F10 F10 13 декабря 2009 в 19:28

"BadD" wrote:
Кто-нибудь может объяснить как и где формируется содержимое (то, что по центру) главной страницы сайта? В файле node.tpl.php нашел строчку вывода $content, комментируя которую, я делаю пустым центральную часть страницы. Но в упор не могу найти где можно отключить/изменить этот вывод. Всю админку и все файлы каталога themes перекопал. Просто предыдущий разработчик сайта не позаботился о тех, кто будет допиливать его творение до ума и не оставил даже намеков где это все искать.

- это есть, имхо причина визуальной одинаковости сайтов на Drupal.
- в этой теме переопределен вывод ноды Product.
Посмотрите как у них это сделано, мне в свое время помогло.

Аватар пользователя BadD BadD 13 декабря 2009 в 20:21

"F10" wrote:
- это есть, имхо причина визуальной одинаковости сайтов на Drupal.
 acquia_prosper[/theme] - в этой теме переопределен вывод ноды Product.
Посмотрите как у них это сделано, мне в свое время помогло.

Скачал эту тему и попробовал ради эксперимента сделать дефолтной. Долбаный двухколоночный вывод содержимого на главной никуда не делся (хотя в админке публикация отключена вообще).
"Dan" wrote:
В формировании переменной $content участвуют все модули, которые хотят этого Smile
Как правило с помощью хука nodeapi.
Вмешаться в формирование $content можно тоже через этот хук.
Ещё есть препроцессинг - там можно изменить/удалить/добавить переменные для вывода на страницу.

Попробую покопать в этом направлении.

Кстати если вырубить модуль Php filter, то содержимое центральной части заменяется на примерно следующее.

'; $news_out.= '';} $news_out.='
       
'; 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.'
';} ?>
Аватар пользователя Dan Dan 13 декабря 2009 в 20:38

"BadD" wrote:
Кстати если вырубить модуль Php filter, то содержимое центральной части заменяется на примерно следующее.

Шикарно. Вывод сделан кодом на странице. Бывшему разработчика можно прописать ртутные компрессы. Должно помочь...

Аватар пользователя F10 F10 13 декабря 2009 в 20:59

"Dan" wrote:
Не самая простая тема для изучения :)

- а это единственная тема, где реально люди переделали вывод ноды(из тех, которыю я находил).
Все остальные создатели тем ограничиваются вот этим: <?php print $content ?>.
p.s. Если кто знает тему, где вывод ноды разложен в файле ....tpl.php, с удовольствием поизучаю.
Ну или на худой конец в template.php.

Аватар пользователя BadD BadD 13 декабря 2009 в 21:17

"Dan" wrote:
Шикарно. Вывод сделан кодом на странице. Бывшему разработчика можно прописать ртутные компрессы. Должно помочь...

Я уже давно на него зуб точу )
Можете посоветовать как в данном случае на этот кривой вывод повлиять? Ну или как его отрубить вообще. Смутное подозрение, что стиль вывода тупо берется из баз sql. Только как он там оказался и почему было не поюзать CSS - для меня загадка.

Аватар пользователя Dan Dan 13 декабря 2009 в 22:56

/admin/settings/site-information, Настройка в самом низу - Главная страница по умолчанию.
Найдите её и кидайте содержимое сюда. Или сами разбирайтесь Smile

Аватар пользователя BadD BadD 14 декабря 2009 в 0:27

Главная страница по-умолчанию - 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>
?>

Аватар пользователя Dan Dan 14 декабря 2009 в 1:23

Неправильно спросил. Я имел ввиду это в ноде или в блоке.

"BadD" wrote:
'; $news_out.= '';} $news_out.='

Надо найти где этот код лежит. Посмотрите html-код страницы - найдите оборачивающие этот код дивы, посмотрите на классы - они подскажут в каком блоке лежит этот код.

Аватар пользователя BadD BadD 14 декабря 2009 в 8:51

Самое забавное, что $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>&nbsp;</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>&nbsp;</td>\r\n            <td class=\"dotted\">&nbsp;</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)).\'

Больше ни в одном из файлов такого вхождения нет.

Аватар пользователя Dan Dan 14 декабря 2009 в 9:30

Чем дальше в лес, тем толще партизаны...
Этот код должен быть на странице /node/2, которая называется "Главная".
В принципе уже и так видно, что там запрос к БД и вывод данных в виде таблицы сырым html.

Аватар пользователя BadD BadD 14 декабря 2009 в 10:03

"Dan" wrote:

Чем дальше в лес, тем толще партизаны...
Этот код должен быть на странице /node/2, которая называется "Главная".
В принципе уже и так видно, что там запрос к БД и вывод данных в виде таблицы сырым html.

Какие существуют пути решения проблемы?

Аватар пользователя Dan Dan 14 декабря 2009 в 13:06

Определитесь с проблемой Smile
В вашем случае, скорее всего - [module=views]. Если я правильно понял проблему.

Аватар пользователя BadD BadD 14 декабря 2009 в 22:47

"Dan" wrote:
Определитесь с проблемой :)

Проблема в неубиваемых блоках Новости и Статьи на главной, которые занимают по 50% width и хрен знает где это можно изменить.
Думаю не Views. Удалил все, что были на сайте. Ничего с главной никуда не исчезло.

Аватар пользователя baa baa 15 декабря 2009 в 10:24

думаю что $content можно изменить лишь создав свой модуль узла, так как стандартный изменять не рекомендуется))

Аватар пользователя Dan Dan 15 декабря 2009 в 10:44

"BadD" wrote:
Проблема в неубиваемых блоках Новости и Статьи на главной, которые занимают по 50% width и хрен знает где это можно изменить.

Весь Ваш код в /node/2. Я Вам об этом саказал. Вы ЭТО проверили? Если да, то: меняйте его, удаляйте, переписывайте, переходите на views (один из путей решения), пишите модуль... Если нет, то так и скажите, зачем views-то грохать?