Подскажите, пожалуйста, какая функция в Друпале отвечает за вывод уже в броузер?
Например, создала я модуль, в нем есть хук, который строит блок, в блоке прописываю теги, эти теги при выводе на страницу тупо удаляются. Вот я и хочу посмотреть, какая функция отвечает за вывод. Надо, наверное, в common.inc и ему подобных искать?
Комментарии
Наверное надо фильтр ввода поменять на Full HTML.
У меня фильтр ввода php-формат, потому как я выборку из базы делаю и все остальное и без php никак.
Интересно просто стало, где происходит вывод. Допустим, есть в блоке контент, и где в ядре происходит что-то типа print $content - я думаю, где-то там это вырезается, скорее всего, что-то типа strip_tags() происходит, хочу это место найти.
По идее блок выводится на страницу с помощью темы, которая подключается по умолчанию (theme_block()), смотрела я эту функцию и все с ней связанные - ничего такого там нет.
В каждой теме есть файл block.tpl.php, в нем вывод по умолчанию содержимого каждого блока:
<?php if (!empty($block->subject)): ?>
<h2><?php print $block->subject ?></h2>
<?php endif;?>
<div class="content"><?php print $block->content ?></div>
</div>
Если вы сами блок создавали в модуле, то описывали его через хук _block, в который передавали массив, и в этом массиве $block['content'] = содержимое блока. Естественно содержимое в формате html, т.е. теги ест-нно понимаются браузером как теги. Попробуйте
> вместо >
" вместо "
т.е. если вы хотите
вывести на экран строку "<br>", то $block['content']="<br>"
А что конкретно вырезается?
Есть запрос:
$sql = "SELECT CONCAT_WS('\r\n',td.name,n.title) book_name,
n.nid nnid,
td.tid tt,
th.parent tp
FROM {node} n
JOIN {term_node} tn ON tn.nid=n.nid
JOIN {term_data} td ON td.tid = tn.tid
JOIN {term_hierarchy} th ON td.tid = th.tid
WHERE td.vid=%d AND th.parent <>0 AND n.type='library'";
?>
Два поля выбираются в один столбец book_name. У меня вот какой момент не получается: в CONCAT_WS ставлю разделитель '\r\n' и строка не переводится(это все вырезается почему-то), т. е. мне нужно, чтобы было:
запись1
запись2
А у меня сейчас запись1запись2 - все на одной строке.
Только что попробовала поставить разделитель
- на страницу выводится
запись1
запись2
Вывод идет через block.tpl.php
Я не понял, проблема решена?
Нет, проблема не решена.
Почему, когда я делаю
CONCAT_WS('\r\n'
'\r\n' при выводе вырезается, а когда делаю
CONCAT_WS('<br>'
, у меня этот<br>
остается неизменным, на страницу выводится в таком виде:запись3<br>запись4
зачем такие извращения?
Осмелюсь предположить, что
\r\n
вырезается потому что воспринимаются именно как спецсимволы при присвоении значения переменной $sql, и теоретически $sql = @"..." должно помочь. Другое дело, что при выводе в html такие спецсимволы не помогут вам перевести строку.Могу вам предложить немного модифицировать запрос
$sql = "SELECT td.name, n.title, n.nid nnid ...
а потом при выводе результатов запроса в блок записывать уже
<?phpprint $row->name."<br>".$row->title;?>