Drupal snippets
Необходимо переопределить в template.php функцию темизации пунктов меню (theme_menu_item_link()).
function phptemplate_menu_item_link($link) {
if (empty($link['localized_options'])) {
$link['localized_options'] = array();
}
$link['localized_options']['html'] = true;
return l('<span>' . check_plain($link['title']) . '</span>', $link['href'], $link['localized_options']);
}
Необходимо переопределить в template.php функцию темизации пунктов меню (theme_menu_item_link()).
function phptemplate_menu_item_link($item) {
// Адрес для которого нужно убрать ссылку node/34
if ($item['link_path'] == 'node/34') {
$attributes['title'] = $item['description'];
return '<span'. drupal_attributes($attributes) .'>'. $item['title'] .'</span>';
}
else {
return l($item['title'], $item['href'], !empty($item['description']) ? array('title' => $item['description']) : array(), isset($item['query']) ? $item['query'] : NULL);
}
}
function THEMENAME_form_search_block_form_alter(&$form, &$form_state) {
$form['actions']['submit']['#type'] = 'image_button';
$form['actions']['submit']['#src'] = drupal_get_path('theme', 'THEMENAME') . '/images/button-search.png';
}
Даже если задать тип кнопки button, Drupal все равно выводит submit, это происходит изза того, что в функции темизации жестко прописан type="submit".
Исправить этот баг можно двумя путями:
1.исправить функцию темизации input’a в include/form.inc:theme_button()
Исправить строку
return '<input type="submit" '. (empty($element['#name']) ...
на
return '<input type="'.$element['#type'].'" '. (empty($element['#name']) ...
2. написать свою функцию темизации (phptemplate_button) в template.php
В info-файле темы должны быть строчки вида:
regions[left] = Left sidebar regions[right] = Right sidebar regions[content] = Content regions[footer] = Footer
Если этих строк нет - их нужно добавить, иначе все остальные регионы исчезнут.
Ниже нужно дабавит нечто вроде:
regions[con_top] = Content top
Чтобы содержимое нового региона выводилось на странице нужно в файл page.tpl.php темы добавить строку:
<div id="content_top"><?php echo $con_top?></div>
Чтобы изменения вступили в силу нужно очистить кэш (Администрирование › Настройка сайта › Производительность)
Для начала необходимо скопировать шаблон полей с модуля CCK (/sites/all/modules/cck/theme/content-field.tpl.php) в каталог с темой. Все изменения вносить в content-field.tpl.php темы.
Например, чтобы добавить каждому значению поля уникальный класс, нужно заменить строку
<div class="field-item <?php print ($count % 2 ? 'odd' : 'even') ?>">
на
<div class="field-item field-item-<?php print $delta; ?> <?php print ($count % 2 ? 'odd' : 'even') ?>">
function ИМЯМОДУЛЯ_form_alter(&$form, &$form_state, $form_id) {
dpm($form_id); // показывает ID формы
dpm($form); // показывает все элементы массива формы
if ($form_id == 'ID_ФОРМЫ') {
// Добавить к тэгу <form> class="container-inline"
$form['#attributes'] = array('class' => array('container-inline'));
}
}
Block category: Lists (Views)
relationship: Parent term
contextual filters: Taxonomy term: Parent term
fields: taxonomy term: Name
Для подключения JavaScript'ов и передачи параметров в Drupal используется функция drupal_add_js()
PHP код:
drupal_add_js(array(
'section' => array(
'param' => 'value'
)
), 'setting');
- section — имя секции(не обязательно)
- param — имя параметра
JavaScript:
alert(Drupal.settings.section.param);
function _get_vocabularis(){
$vids = array();
$r = db_query("SELECT v.vid FROM {vocabulary} v");
while($row = db_fetch_object($r)){
$vids[] = $row->vid;
}
return $vids;
}
Подключать внешние js/css файлы непосредственно в page.tpl.php нельзя! Все дополнительные файлы подключаются через файл ИМЯ_ТЕМЫ.info. Подключение css (общие):
stylesheets[all][] = ИМЯ_СТИЛЯ.css
Стили только для печати:
stylesheets[print][] = ИМЯ_СТИЛЯ.css
JavaScript:
scripts[] = ИМЯ_СКРИПТА.js
После изменения info-файла необходимо очистить кеш.
Через phpMyAdmin или команду mysql перейти в базу данных сайта и выполнить запрос
UPDATE users SET pass=MD5('NEWPASS') WHERE uid = 1;