[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Генерация переменных в Друпале
DedMorozzz
Подскажите, где генерится переменные которые в дальнейшем передаются в шаблон?
Вот к примеру переменная $head или $head_title
Вот как она вызывается в шаблоне:
<head>
<title><?php print
$head_title ?></title>
<?php print
$head ?>
<?php print
$styles ?>

В упор не могу найти где генериться



Спустя 2 часа, 9 минут, 28 секунд (5.04.2011 - 13:47) Игорь_Vasinsky написал(а):
Пока что понял что при помощи этих функций:

template_preprocess()
template_preprocess_page()


они указаны в комментах в page.tpl.php и maimtenance-page.tpl.php

Спустя 4 минуты, 17 секунд (5.04.2011 - 13:51) Игорь_Vasinsky написал(а):
может здесь include/common.inc

к примеру вот кусок:

 * This function can be called as long the headers aren't sent.
*/
function drupal_set_html_head($data = NULL) {
static $stored_head = '';

if (!is_null($data)) {
$stored_head .= $data ."\n";
}
return $stored_head;
}

/**
* Retrieve output to be displayed in the head tag of the HTML page.
*/
function drupal_get_html_head() {
$output = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n";
return $output . drupal_set_html_head();
}

/**
* Reset the static variable which holds the aliases mapped for this request.
*/
function drupal_clear_path_cache() {
drupal_lookup_path('
wipe');
}

/**
* Set an HTTP response header for the current page.
*
* Note: When sending a Content-Type header, always include a '
charset' type,
* too. This is necessary to avoid security bugs (e.g. UTF-7 XSS).
*/
function drupal_set_header($header = NULL) {
// We use an array to guarantee there are no leading or trailing delimiters.
// Otherwise, header('') could get called when serving the page later, which
// ends HTTP headers prematurely on some PHP versions.
static $stored_headers = array();

if (strlen($header)) {
header($header);
$stored_headers[] = $header;
}
return implode("\n", $stored_headers);
}

Спустя 22 минуты, 33 секунды (5.04.2011 - 14:14) DedMorozzz написал(а):
да вроде бы через template_preprocess_page(), но уж как-то криво работает
Точнее не совсем даже работает =)

Спустя 2 минуты, 43 секунды (5.04.2011 - 14:17) Игорь_Vasinsky написал(а):
а что именно не так?

Спустя 8 минут, 33 секунды (5.04.2011 - 14:25) DedMorozzz написал(а):
Игорь_Vasinsky, да, хедер таки там генерился! Спасибо. Осталось разобраться что за ф-я template_preprocess_page().
Что не так? А вот смотри
function phptemplate_preprocess_page(&$vars)
{
if (isset($vars['node']) && ($vars['node']->nid == 1 || $vars['node']->nid == 99))
{
$vars['template_files'][] = 'page-someword';
}
}

Создал шаблон page-someword.tpl.php
Но всё равно 404 выдаётся. Кэш чистил

Спустя 3 минуты, 38 секунд (5.04.2011 - 14:29) Игорь_Vasinsky написал(а):
я тока вчера начал с ней тыркаться... так что до разбора полётов у меня ума ещё не хватает...

может там ещё что создаётся вместе с новым шаблоном, так каких тока расширений у файлов нету...

Спустя 4 минуты, 57 секунд (5.04.2011 - 14:34) Michael написал(а):
Цитата
phptemplate_preprocess_page

в template.php темы поместил?

Спустя 1 минута, 16 секунд (5.04.2011 - 14:35) Игорь_Vasinsky написал(а):
1. а они там должны прописываться руками?
2. а если я под конкретную тему добавить хочу новый шаблон?

Спустя 1 минута, 10 секунд (5.04.2011 - 14:36) DedMorozzz написал(а):
Такс, а как переобозвать переменную. К примеру $logo?
Поменять имедж надобно. Только в "лоб" выходит



Спустя 2 минуты, 4 секунды DedMorozzz написал(а):
Цитата
в template.php темы поместил?
Конечно, помоему всего 1 вариант куда кидать сию ф-ю

Спустя 3 минуты, 57 секунд (5.04.2011 - 14:40) DedMorozzz написал(а):
Игорь_Vasinsky лови статью http://xandeadx.ru/blog/drupal/89

Спустя 7 минут, 18 секунд (5.04.2011 - 14:47) Игорь_Vasinsky написал(а):
спасиб. пригодиться.

Спустя 2 минуты, 54 секунды (5.04.2011 - 14:50) Игорь_Vasinsky написал(а):
ну... там написано
1. промудить с кодом - как ты сделал
2. создать page-someword.tpl.php
3. очистить кэш
4. Мы всё-таки порвали друпал

т.е.

function phptemplate_preprocess_page(&$vars)
{
// page-someword.tpl.php для нод с nid равным 1 или 99
if (isset($vars['node']) && ($vars['node']->nid == 1 || $vars['node']->nid == 99))
{
$vars['template_files'][] = 'page-someword';
}
}


нужно ещё прописать в template.php

и ещё

Написанное актуально для Drupal 6.x

Спустя 36 минут, 2 секунды (5.04.2011 - 15:26) DedMorozzz написал(а):
у меня 6.2 друпал. иль 6.1..

Спустя 2 часа, 58 минут, 7 секунд (5.04.2011 - 18:25) Игорь_Vasinsky написал(а):
странно... должно работать... раз написано...

Спустя 13 часов, 9 минут, 46 секунд (6.04.2011 - 07:34) Michael написал(а):
так что не работает еще?
1) Точно реестр тем перестраивал? Administer - site configuration - performance - Clear cached data
2) Там куда ты кинул page-someword.tpl.php лежит page.tpl.php ?
3) Поставь себе Devel Themer и в нем смотри как выбрался шаблон для страницы и какие функции препроцесса зарегистрированы

Спустя 1 день, 5 часов, 39 минут, 18 секунд (7.04.2011 - 13:14) DedMorozzz написал(а):
Кстати, чёт намного проще оказалось свой темплейт создавать для страницы. Просто имя в темплейта дать page-url.tpl.php и всё. Не надо ничё в темплейте указывать.

Но возник вопрос, нормально ли для друпала, рисовать кучу темплейтов для страниц?

Спустя 6 минут, 11 секунд (7.04.2011 - 13:20) Michael написал(а):
различной компоновке страницы - свой темплейт.

Спустя 10 минут, 28 секунд (7.04.2011 - 13:30) DedMorozzz написал(а):
А кого тогда в page.tpl.php по умолчанию(хотя сайт уже разрабатывали иные ребята) были "все" страницы внутри оной. Проверка была что за страница и грузилось нужное. Собсно сие и смутило

Спустя 38 минут, 43 секунды (7.04.2011 - 14:09) Michael написал(а):
"По-хорошему" в шаблоне нужно именно выводить данные, которые уже есть, а не логику программировать(доставать данные, запросы). Шаблон - чисто html со вставками php.
В реальности делают кто как хочет.
Если просто разные данные выводить на определенных страницах, то для этого есть блоки.

Спецы некоторые говорят - чтобы увидеть что на друпале наговнокодили - глянь шаблоны.

Спустя 38 минут, 56 секунд (7.04.2011 - 14:48) DedMorozzz написал(а):
<?php if ($show_messages) { print $messages; } ?>
<?php
print $help ?>
<?php
print $content; ?>
<?php
print $feed_icons; ?>
<?php
print $content_bottom; ?>

Очередные переменные, где сие имеет смысл искать

Хотя конкртено интересует ф-я "avia_clubs_block", она генерит список клубов, я её поменял генерит всё отлично, но!!! Она нигде(!) не вызывается!
Где её искать имеет смысл. Иль же переменные где создаются указаные в начале поста

Спустя 15 минут, 33 секунды (7.04.2011 - 15:03) Michael написал(а):
Переменные для шаблона создаются в функциях препроцесса
Вот например где основные(первоначальные) переменные для страницы создаются.

Спустя 1 минута, 54 секунды (7.04.2011 - 15:05) DedMorozzz написал(а):
Цитата (Michael @ 7.04.2011 - 14:03)
Вот например где основные(первоначальные) переменные для страницы создаются.

No search results found.

Спустя 19 минут, 54 секунды (7.04.2011 - 15:25) Michael написал(а):
это форум как то режет...

Функция называется template_preprocess_page

Спустя 12 минут, 38 секунд (7.04.2011 - 15:38) DedMorozzz написал(а):
а, ну дык template_preprocess_page это всего лишь переопределение переменных, а не описание оных

Спустя 7 минут, 11 секунд (7.04.2011 - 15:45) DedMorozzz написал(а):
мм, нашел, в theme.inc прописана сия ф-я


_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.