Drupal 7 - получение определенной части страницы

A4
На сайте с 05.01.2012
Offline
55
5310

Здравствуйте Уважаемые форумчане.

В общем требуется получить часть страницы, например в блоке <div id="someid">. Как известно движок Drupal формирует страницу из шаблона, с прикруткой определенных элементов. То есть все внутренние урлы перенаправляются через mod_rewrite на главную страницу - index.php, внутри которой адрес получается из переменной $_SERVER['REQUEST_URI'], разбирается системой, и формируется вывод. Такова функция движка(сам делал так-же). Страница формируется движком на основе шаблона(template).

Так вот, мне интересно - как называется в друпал 7 файл, формирующий страницу из шаблона. То-есть то место, где происходит инклюд шаблона(с последующей его обработкой), или на худой конец то место - где происходит вывод сформированной страницы на экран пользователя(echo как я подозреваю..). Дальше я сам разберусь. Кто копался во внутренней архитектуре друпала - подскажите пожалуйста, где искать.

Ps. Вообще вся теория описанная выше всего лишь мое убогое представление действительности.

Но по любому(я знаю это хД) - должно быть место, где страница выводится на экран пользователя(формируется документ). Иначе друпал бы не работал. Где это самое место?)

_______________________________

Аякс не дремлет.

Прошу простить за корявое объяснение вопроса. Если не совсем меня поняли - напишите.

bsyomov
На сайте с 25.01.2012
Offline
31
#1

Скорее всего, вы по незнанию Drupal неправильно ставите задачу. Вам совершенно не нужно это самое место. =) Если вам нужно изменить вывод чего-либо, это можно сделать в слое темизации, с помощью различных preprocess или шаблонов...

[Удален]
#2
bsyomov:
Если вам нужно изменить вывод чего-либо

А как убрать слеши закрытия между тегами head?

Как бы DOCTYPE их не подразумевает, а они есть. ))

Пример:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Alangasar
На сайте с 06.11.2008
Offline
98
#3
Pavel_:
А как убрать слеши закрытия между тегами head?
Как бы DOCTYPE их не подразумевает, а они есть. ))
Пример:

html.tpl.php (modules/system) скопировать в каталог с темой, очистить кэш

http://api.drupal.org/api/drupal/modules%21system%21html.tpl.php/7

A4
На сайте с 05.01.2012
Offline
55
#4

Все, сам требуемое нашел :). Функция называется:

function theme($hook, $variables = array());

Файл - /includes/theme.inc

cтрока(у меня в нотепаде) - 751.

Имейте ввиду - это Drupal 7

В конце функции есть строка, возвращающая результат:

return $output;

Так вот с этим $output можно играться, например так:

$pos = strpos("<body>",$output);

$output=substr($pos,$output);
$output=$output."<p>1231313131231231</p></body></html>";

Тогда на главной и любой другой странице друпал покажет только текст 1231313131231231

А следовательно - Переменная $output - это и есть итоговый вид страницы сайта.

Скорее всего, вы по незнанию Drupal неправильно ставите задачу. Вам совершенно не нужно это самое место. =) Если вам нужно изменить вывод чего-либо, это можно сделать в слое темизации, с помощью различных preprocess или шаблонов...

Нет. Точнее я не хочу так делать. Да я знаю что так можно - но в текущий момент - не нежно.

Давайте попытаюсь разъяснить вам в чем основной "прикол" моей задачи.

Прикол в Ajax. Нет не в формах, к которым все уже 1тыс раз обращались а полностью в аякс подгрузке нодов - статей, при этом ссылка должна указывать на нединамическую(реальную) копию страницы Но при клике на нее ссылка посредством js кода преобразуется в хеш.

То есть имеется ссылка site.ru/node/animals - она указывает на страницу которая загрузится при клике на ссылку, если у юзера не включен js, если же js включен - ссылка переделается в вид site.ru/#/node/animals с помошью яваскрипта, а на сервер будет отправлен запрос, например такого вида:

POST: load:/node/animals

на сервере на странице index.php будет принят параметр $_POST['load'] и в ответ передан только блок, в котором находится статья,а не вся страница(трафик экономицо). Этот блок посредством js же, будет вставлен в слой где статьи обычно выводятся(сначала очистим слой, а потом добавим новый текст).

________________

По ходу теперь все кажется вам еще запутаннее. Ну не умею я объяснять)

---------- Добавлено 27.08.2012 в 11:58 ----------

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

К стати если поиграться с переменной $output - эти теги можно закрыть. Легко хД

DV
На сайте с 01.05.2010
Offline
644
#5

aftamat4ik, вы не тем занимаетесь. Не трогайте файлы в той директории. У вас есть sites, там можете переназначить дефолтное.

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
Alangasar
На сайте с 06.11.2008
Offline
98
#6

согласен с DenisVS, aftamat4ik, вообще не трогайте исходники, для этого придумана темизация

[Удален]
#7
Alangasar:
html.tpl.php

в html.tpl.php - только "джентельменский набор"

<?php print $head; ?>

<?php print $styles; ?>

<?php print $scripts; ?>

Chalk
На сайте с 05.11.2009
Offline
48
#8

Неее, ребята, так издваться над Drupal'ом нельзя. Все настраивается темизацией и модулями. Дальше папки sites/all вообще не стоит вылазить в процессе разработки.

Pavel_:
А как убрать слеши закрытия между тегами head?
Как бы DOCTYPE их не подразумевает, а они есть. ))

Это какой такой DOCTYPE не подразумевает?

Alangasar
На сайте с 06.11.2008
Offline
98
#9
A4
На сайте с 05.01.2012
Offline
55
#10

хм) А в чем соль то собственно? Вроде бы Drupal - опенсорцная CMS - а значит можно модифицировать ее так - как мне требуется. Я на джумле и не аткое проворачивал - выпилил как-то стандартный Com_content полностью(вплоть до выбора типа пункта меню) и заменил его на com_k2. Вроде работает отлично. Почему-бы и друпал так не перепилить, ведь лицензия это допускает. И не надо бояться копать внутренности. Там все раскомментировано)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий