Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*
- * Модуль, отображающий список выбора города
- */
- function cityfilters_init()
- {
- drupal_add_library('system', 'jquery.cookie');
- drupal_add_css(drupal_get_path('module', 'cityfilters') . '/css/cityfilters_style.css');
- drupal_add_js(drupal_get_path('module', 'cityfilters') . '/js/cityfilters_jfunctions.js');
- }
- function cityfilters_block_info()
- {
- $blocks['city_filter'] = array(
- 'info' => t('City filter'),
- 'cache' => DRUPAL_NO_CACHE,
- );
- $blocks['city_filter_list'] = array(
- 'info' => t('Select your City (List)'),
- 'cache' => DRUPAL_NO_CACHE,
- );
- return $blocks;
- }
- /**
- * @param string $delta
- * @return array|bool
- */
- function cityfilters_block_view($delta = '')
- {
- $block = array();
- if (user_access('access content')) {
- $block['subject'] = t('Select your city');
- switch ($delta) {
- case 'city_filter':
- $block['content'] = drupal_get_form('cityfilters_select_city_form');
- return $block;
- case 'city_filter_list':
- $block['content'] = cityfilters_select_city_list();
- return $block;
- }
- }
- return false;
- }
- /**
- * Form constructor for city select form.
- *
- */
- function cityfilters_select_city_form($form, &$form_state)
- {
- $cities = cityfilters_get_cities();
- $form['widget'] = [
- '#type' => 'container',
- '#attributes' => ['class' => ['container-inline']],
- ];
- $form['widget']['city'] = [
- '#type' => 'select',
- '#title' => t('Выберите город'),
- '#title_display' => 'attribute',
- '#options' => $cities,
- '#default_value' => $_COOKIE['clicat_city'],
- '#required' => TRUE,
- ];
- $form['widget']['actions'] = ['#type' => 'actions'];
- $form['widget']['actions']['submit'] = [
- '#type' => 'submit',
- '#value' => t('Select'),
- '#id' => 'selectcity-submit',
- ];
- return $form;
- }
- function cityfilters_select_city_form_submit($form, &$form_state)
- {
- // установка coocies в JS.
- // dpm($_COOKIE);
- }
- /**
- * Form constructor for city select form.
- *
- */
- function cityfilters_select_city_list()
- {
- $cities = cityfilters_get_cities();
- $res = '<ul class="cities">';
- foreach ($cities as $key => $city){
- $classes = 'cityfilters-list-item' . ($key === $_COOKIE['clicat_city'] ? ' selected' : '');
- $res .= '<li><a class="' . $classes . '" data-city="' . $key . '">' . $city . '</a></li>';
- }
- $res .= '</ul>';
- return $res;
- }
- /*
- * Выбираем список городов
- */
- function cityfilters_get_cities()
- {
- $query = db_select('node', 'n');
- $query->leftJoin('field_data_field_address', 'a', 'n.nid = a.entity_id');
- $query->fields('a', ['field_address_locality']);
- $query->addExpression('COUNT(*)', 'count');
- $query->condition('n.status', '1');
- $query->condition('n.type', 'clinic');
- $query->groupBy('a.field_address_locality');
- $query->orderBy('count', 'DESC');
- $all = $query->execute()->fetchAll();
- $cities['all'] = 'Все';
- foreach ($all as $city) {
- $city_name = $city->field_address_locality . ' (' . $city->count . ')';
- $cities[$city->field_address_locality] = $city_name;
- }
- return $cities;
- }
- // $block['subject'] = t('City filter');
- // // Load the view.
- // $view = views_embed_view('catalog', 'attachment_cities');
- // if ($view) {
- // $block['content'] = $view;
- // }
- // else {
- // $block['content'] = t('The view is empty');
- // }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement