Drupal 7

 →  Вывод тэгов с количеством нод в блок

published 06 August 2011

t(‘Tags’), ); return $blocks; } function tax_menu_block_view($delta = ‘’) { $block = array( ‘subject’ => ‘’, ‘content’ => ‘’,
); if ($delta == ’tax_menu’) { $block[‘subject’] = ‘Tags’; $block[‘content’] = get_items(); } return $block; } function get_items() { $query = db_select(’node’, ’n’); $query->innerJoin(‘field_revision_field_tags’, ’t’, ’n.nid = t.entity_id’); $query->innerJoin(’taxonomy_term_data’, ’td’, ’t.field_tags_tid = td.tid’); $query->condition(’td.vid’, VOCABULARY. ‘=’); $query->fields(’td’, array(’name’, ’tid’)); $query->groupBy(’td.tid’); $query->addExpression(‘COUNT(*)’, ‘c’); $query->orderBy(’td.name’, ‘ASC’); $result = $query->execute(); foreach ($result as $item) { $items[] = l($item->name . ‘(’ . $item->c . ‘)’, ’taxonomy/term/’ . $item->tid ); } $attributes = array( ‘id’ => ’tax_menu_list’, ); $output = theme(‘item_list’, array(‘items’ => $items, ’type’ => ‘ul’, ‘attrebutes’ => $attributes )); return $output ; }

 →  Вывод меню в шаблон

published 26 July 2011

menu_navigation_links(‘menu-mobile-menu’), ‘attributes’ => array( ‘class’ => array (‘mobile-menu’), ), )); ?>

 →  Два селекта на ajax

published 23 July 2011

Два селекта: марка и модель. Выбираем марку и у нас подгружается список моделей. В коллбэк функции возвращаем форму, которую хотим изменить. Через** $form_state** получаем значение. Будьте внимательны, форма перестраивается занова, но визуально меняется только изменяющийся элемент.

//функция создания формы function bull_form($form, $form_state,$nid = NULL) { //запрос к таксономии для заполнения селекта $query = db_select(’taxonomy_term_data’, ’t’); $query->innerJoin(’taxonomy_term_hierarchy’, ‘r’, ’t.tid = r.tid’); $query->fields(‘r’,array(‘parent’)); $query->fields(’t’); $query->condition(‘r.parent’, PARENT, ‘=’ ); $query->orderBy(’t.name’, ‘ASC’); $result = $query->execute(); $options = array(); //заполняем option для select foreach($result as $item){ $options[$item->tid] = $item->name; } //проверям выбрана ли марка, делаем запрос по моделям этой марки (то есть пришел ли запрос от аякса) if(isset($form_state[‘values’][‘marka’])) { $tid = $form_state[‘values’][‘marka’]; $query = db_select(’taxonomy_term_data’, ’t’); $query->innerJoin(’taxonomy_term_hierarchy’, ‘r’, ’t.tid = r.tid’); $query->fields(’t’); $query->fields(‘r’,array(‘parent’)); $query->condition(‘r.parent’, $tid, ‘=’ ); $query->orderBy(’t.name’, ‘ASC’); $result = $query->execute(); $options2 = array(); //собираем опции для селекта foreach($result as $item){ $options2[$item->tid] = $item->name; } } // селект марки $form[’left’][‘marka’] = array ( ‘#type’ => ‘select’, ‘#title’ => t(‘Producer’), ‘#options’ => $options, ‘#ajax’ => array( //прописываем какую звать функцию при изменение селекта ‘callback’ => ‘ajax_get_models’, //какой элемент html в форме заменять ‘wrapper’ => ‘replace_models_div’, ),
); $form[‘right’][‘model’] = array ( ‘#type’ => ‘select’, ‘#title’ => t(‘Model’), ‘#options’ => (isset($options2)) ? $options2 : array(‘choose model’), //оборачиваем в div для замены ‘#prefix’ => ‘’, ‘#suffix’ => ‘’,
); return $form;