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

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

aftamat4ik, вы проблемы себе строите на будущее. Правильная поддержка сайта означает своевременное обновление ядра и модулей. Пиля ядро, вы делаете работу сайта непредсказуемой.

Да, пилить приходится, иногда, при глюках. Для этого я завожу папочку с изменёнными файлами, чтобы после обновления накатить патчи. Но это не от хорошей жизни, так сказать.

Если не трогать базу, обновления происходят легко, быстро, и даже красиво, особенно, из командной строки drush. Пробежался пальцами по клавиатуре, подождал, и сайт с последними апдейтами!

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
A4
На сайте с 05.01.2012
Offline
55
#12
вы проблемы себе строите на будущее. Правильная поддержка сайта означает своевременное обновление ядра и модулей. Пиля ядро, вы делаете работу сайта непредсказуемой.

Согласен. Однако требуется чтобы данная методика - навигация аякс, работала с Любыми(или почти любыми) друпал темами. Я бы написал модуль, но Как в модуле переопределить стандартную функцию вывода темы я не в курсе. И вообще оно возможно?О_0 что-то мне подсказывает что нет - ибо доступ к функциям ядра CMS из стороннего модуля - почитай кощунство. ДА и ООП не используется - не применимо наследование как понятие. Хотя если вы знаете как заставить Drupal заставить игнорировать встроенную функцию theme и обращаться к функции, определенной в модуле - было бы интересно узнать)

bsyomov
На сайте с 25.01.2012
Offline
31
#13
aftamat4ik:
Все, сам требуемое нашел :). Функция называется:
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, тогда поймёте, НАСКОЛЬКО вы хотели сделать неправильно.

Тут всё сделано для того, чтобы не вторгаться в код, поэтому Drupal весьма легко поддерживать. То, что вы делали на Joomla тут делать совершенно не нужно. Нужно понять, что это идеологически совершенно разные CMS, и ваш прошлый опыт и приёмы, тут могут быть более чем неуместны.

Почитайте сначала, как организована темизация в Drupal, и станет понятно, что вам не нужно переопределять или каким-то образом изменять функцию theme().

Для работы с AJAX у Drupal тоже есть соответствующее API (http://api.drupal.org/api/drupal/includes%21ajax.inc/group/ajax/7). Пишите модуль и пользуйтесь, для своих нужд. Только злоупотреблять AJAXом не стоит. Это экономия на спичках. Сама страница, весит очень немного, её передача будет не быстрее, чем AJAX запрос, или быстрее на ничтожно малое время. А картинки, которые обычно и составляют практически весь объём страницы, повторно не грузятся (если у вас всё правильно настроено конечно).

[Удален]
#14
Chalk:
Это какой такой DOCTYPE не подразумевает?

да он не один такой, в спецификациях html - всё есть подробно... ))

Alangasar:
http://api.drupal.org/api/drupal/inc...eme_html_tag/7

Спасибо, заработало, а в таких дебри ещё не заходил... ))

Но это как бы уже считается вмешательством в движок или не?

Ещё непонятно: зачем дописывается ?m96q63 уже после расширения имени файла

<script type="text/javascript" src="/sites/default/files/languages/ru_123.js?m96q63"
bsyomov
На сайте с 25.01.2012
Offline
31
#15
Pavel_:

Спасибо, заработало, а в таких дебри ещё не заходил... ))
Но это как бы уже считается вмешательством в движок или не?

Если вы решили переписать код в includes/theme.inc то да, конечно вмешательство, и так не делают.

Если вы почитали о темизации, и перекрыли её у себя в template.php, то это именно то, что надо было сделать.

[Удален]
#16
bsyomov:
Если вы почитали о темизации

К сожалению, всё что пытался читать по этой теме - сомнительной полезности содержания... Возможно плохо искал... ))

bsyomov:
Если вы почитали о темизации, и перекрыли её у себя в template.php, то это именно то, что надо было сделать.

В нескольких темах по Drupal фигурировала мысль: "не тем путём идёт развитие". Начинаю задумываться над этим: в варианте удаления невалидного слеша к примеру: редактирование theme.inc - 15 секкунд (ещё раз спасибо Alangasar) , в template.php же - непонятно зачем наворачивать странные конструкции для решения элементарного вопроса.

A4
На сайте с 05.01.2012
Offline
55
#17
В нескольких темах по Drupal фигурировала мысль: "не тем путём идёт развитие".

Верно, читал. Однако мое мнение по этому поводу совершенно иное - Drupal идет вперед слишком быстро. Например в 8 версии имеется идея отказа от поддержки эксплорера 6, из за почти полного перехода к html5. По идее я только ЗА эти изменения. Да и 7 версия мне нравится, хоть и не так удобна, и гораздо более запутана. Шаблоны для этого друпала я клепать не умею, зато умею менять дизайн стандартных шаблонов - мне этого хватает, все что угодно сверстаю.

Для работы с AJAX у Drupal тоже есть соответствующее API (http://api.drupal.org/api/drupal/inc...c/group/ajax/7). Пишите модуль и пользуйтесь, для своих нужд.

Благодарю.

---------- Добавлено 28.08.2012 в 11:49 ----------

В Drupal 7 появился новый AJAX Framework, который позволяет абстрагироваться от написания Javascript кода.

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

____________________________

Любите музыку - тогда добро пожаловать: http://www.aftamat4ik.ru

Alangasar
На сайте с 06.11.2008
Offline
98
#18
Pavel_:
редактирование theme.inc - 15 секкунд (ещё раз спасибо Alangasar) , в template.php же - непонятно зачем наворачивать странные конструкции для решения элементарного вопроса.

Я дал функцию, не для того, чтобы править файл theme.inc. Чтоб перекрыть ее достаточно скопировать ее в файл template.php вашей темы, и назвать ее не theme_html_tag, а имятемы_html_tag, после, очистить кэш и смело вносить правки в вашу функцию темизации. Тогда после обновления ядра, не придется применять патчи, а все продолжит работать, так, как работало

[Удален]
#19
Alangasar:
Я дал функцию, не для того, чтобы править файл theme.inc

Упс... чего-то я протупил... ))

С template.php тож работает, остался со слешем только тег <br />

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

Alangasar, Во! Давно бы так !)) Спасибо за простой и понятный ответ. ато все апи читай, да апи читай))

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