Archive for the ‘drupal’ Category

ui slider и drupal6

Monday, April 6th, 2009

В шестерке по умолчанию стоит jquery 1.2.6, а по slider документацию с сайта уже успели убрать. поэтому пришлось по кусочкам собирать.

$(’#slider’).slider({
min: 300,
max: 500,
steps: 20,
startValue: $(”#edit-sizew”).attr(’value’),
slide: function(event, ui) {
$(”#edit-sizew”).attr(’value’, ui.value);
}
});

startValue вместо value в 1.3.x

$(”#slider2″).slider(”moveTo”, 550 ); - задать новые значения уже существующего слайдера

Получить новое за день, неделю и месяц

Wednesday, March 25th, 2009

В таблице есть поле created где ввиде timestamp указана дата публикации статьи. С помошью запроса можно получить

статьи за день

SELECT nid, title FROM node n where FROM_UNIXTIME(created, ‘%Y-%m-%d’) = CURRENT_DATE();

за неделю

SELECT nid, title FROM node n where FROM_UNIXTIME(created, ‘%Y-%m-%d’) > Date_sub(CURRENT_DATE(), INTERVAL 1 WEEK )

и за месяц

SELECT nid, title FROM node n where FROM_UNIXTIME(created, ‘%Y-%m-%d’) > Date_sub(CURRENT_DATE(), INTERVAL 1 MOUTH )

Узнать родителей в иерархическом словаре

Sunday, March 22nd, 2009

// получаем наш термин по его id

$term = taxonomy_get_term($tid);
$parent[] = $term->name;

// рекурсивно получаем родителей

    while($p = taxonomy_get_parents($tid, $key = 'tid')){
        $term = end($p);
        $parent[] = $term->name;
        $tid = $term->tid;
    }
    $parent = implode(' / ',array_reverse($parent);

В итоге получим цепочку ввиде

дедушка / отец /сын

Сортируемая таблица в Друпал

Wednesday, March 4th, 2009

// шаг первый — создаем шапку

$header = array(

array(

‘data’ => ‘Пользователь’, // человеко читаемое название колонки

’sort’ => ‘asc’,  // сортировка сразу по умолчанию

‘field’ => ‘uid’ // привязка к полю таблици

) ,

array(

‘data’ => ‘Лента’,

‘field’ => ‘feed_name’

) ,

array(

‘data’ => ‘Тип’,

‘field’ => ‘content_type’

) ,

array(

‘data’ => ‘Статус’,

‘field’ => ‘cron’

) ,

);

$sql = ‘ здесь ваш запрос без сортировки ‘;

// шаг второй — используем функцию tablesort_sql для сортировки.
// Банально она возвращается ORDER BY feed_name ASC_
// значение $before будет перед названием колонки

$obj = db_query($sql, tablesort_sql($header, $before = ‘ ‘));

while ($line = db_fetch_object($obj)) {

$cells = array(

‘user’ => $line->uid ,

’set’ => $line->url ,

‘ctype’ => $line->content_type,

’status’ => $line>cron ,

);

$rows[] = array(

‘data’ => $cells

);

}

// шаг третий — создаем таблицу

return theme(’table’, $header, $rows);

В результате у вас появится таблица каждую колонку которой можно будет отсотировать

получить теги ноды из словаря

Saturday, January 31st, 2009

Есть такая замечательная функция

$terms = taxonomy_node_get_terms_by_vocabulary($nid, $vid);

где по идеи $nid это id ноды, а $vid - id словаря.
Однако по идеи но не так, начиная с 6 версии нужно вместо $nid использовать $node. В итоге получается

$node = node_load($nid);
$terms = taxonomy_node_get_terms_by_vocabulary($node, $vid);

Получить список словарей в Drupal

Wednesday, January 28th, 2009

$vocabularies = taxonomy_get_vocabularies();

Список нодов одного контент типа

Friday, January 23rd, 2009

$sql = “SELECT node.nid, node.title FROM {node} where node.type=’page‘ order by node.title”;
$output = array();
$result = db_query($sql);
while ($anode = db_fetch_object($result)) {
print_r => l(”$anode->title”,”node/$anode->nid”);
}

Создание ссылки в Друпале

Thursday, January 22nd, 2009

print l($anode->title, “node/$anode->nid”);

Добавление JavaScript в Drupal inline

Tuesday, January 20th, 2009

Если не хочется создавать файл под JavaScript а хочется добавить его парой строчек то можно сделать так

drupal_add_js(”

$(document).ready( function() {

console.log(’js’);

});

“, ‘inline’);

Отображать блок на станице определенного контент типа

Saturday, January 10th, 2009

в поле ‘Show block on specific pages:‘ выбираем Show if the following PHP code returns TRUE (PHP-mode, experts only) и вставляем туда код

< ? php
$match = FALSE;
if (arg(0) == 'node' && is_numeric(arg(1))) {
  $nid = arg(1);
  $node = node_load(array('nid' => $nid));
  $type = $node->type;
  if($type=="page"){
    $match = TRUE;
  }
}
return $match;
? >

в данном примере блок будет показываться на всех страницах контента типа page