Показаны сообщения с ярлыком drupal 7. Показать все сообщения
Показаны сообщения с ярлыком drupal 7. Показать все сообщения

4 янв. 2012 г.

Добавление свего валидатора формы

<?php
function mymodule_form_alter(&$form, &$form_state, $form_id) { if ($form_id == 'views_exposed_form') { $form['#validate'][] = 'mymodule_my_validate'; $form['#submit'][] = 'mymodule_my_submit'; } }

function 
mymodule_my_validate($form, &$form_state) { }

function 
mymodule_my_submit($form, &$form_state) { }

2 янв. 2012 г.

Table view with rows/columns switched | drupal.org

Drupal: Установка Drush на Windows

Drupal: Установка Drush на Windows | xandeadx.ru

Drush — это мощная утилита для управления друпалом из командной строки. С помощью неё можно скачивать, устанавливать, включать и выключать модули, проверять обновления, устанавливать темы, очищать кэш, делать синхронизацию баз и много другое.

XML-RPC в Drupal 7 | InternetDevels, The Ukrainian Drupal Company

29 нояб. 2011 г.

drupal 7 создание массива options функцией drupal_map_assoc

 $form['nice_menus_type_' . $delta] = array(
    '#type' => 'select',
    '#title' => t('Menu Style'),
    '#description' => t('right: menu items are listed on top of each other and expand to the right') . '<br />' . t('left: menu items are listed on top of each other and expand to the left') . '<br />' . t('down: menu items are listed side by side and expand down'),
    '#default_value' => variable_get('nice_menus_type_' . $delta, 'right'),
    '#options' => drupal_map_assoc(array('right', 'left', 'down')),
  );

14 нояб. 2011 г.

Ниже приведён беглый обзор модулей для работы с меню в Drupal.

Надеюсь многим он будет полезен и многие добавят свои описания и замечания к нему.


  • Quick Admin Menus - JS меню администратора
  • Drupal Administration Menu - JS навесок, который показывает в админке пункты меню для админки(быстрая и удобная навигация по админке)
  • Administration Menu Dropdown - добавка к предыдущему, позволяющая скрывать его по Ctrl+Tab
  • DHTML Menu - делает любое вложенное меню разворачивающимся без перезагрузки страницы
  • Quickmenu - примерный аналог, позволяющий сделать преобразовать обычное меню в разворачивающееся
  • Аieldset Menus - с расширеными настройками(сильно не разбирался)
  • Dropdown Menu - выводит через тему JS меню с нескольким уровнями вложенности
  • YUI Menu - использует YUI модуль для создания JS выпадающего многоуровневого меню (с красивой анимации)
  • SimpleMenu - JS меню в виде блока, прикрепляемое к верху.
  • Nice Menus - только CSS для большинства браузеров, и с минимумом JS для IE меню
  • Nice Primary Menus - вместе с предыдущим делает красивое меню для Primary
  • Lucid menu - клон Nice menus с расширенными настройками
  • imagemenu - в админке drupal меню добавляет свои пункты, для создания меню из картинок(одна из них реагирует на hover)
  • jumpmenu - добавляет в блок комбобокс со списком пунктов люого выбраного меню
  • loginmenu - простой модуль, создающий ссылку на /login страницу
  • Menu Block Split - позволяет разбить меню по нескольким блокам и управлять ими
  • Menu Display API - модуль для поддержки других модулей(ставится, только если его требуют другие модули)
  • Menu per Role - делает пункты меню доступными в зависимости от роли
  • Menu Subtree Permissions - позволяет пользователям изменять части меню, не давая разрешения для всего меню.
  • Sitemenu - Модуль предоставляет "site map" стиль для страницы с навигацией по по категориям сайта и другие варианты
  • Menu Trim - Модуль обеспечивает хитрое сворачивание\разворачивание меню для уменьшения количества отображаемых пунктов
  • Submenu Tree - Позволяет организовывать сложные древовидные меню
  • Menu Tree - Простая структура меню Drupal
  • Remove Non-viewable Menu Items - гарантирует, что пользователь не увидет те пункты меню, которые ему не положены по роли
  • Sliced Menu - создает под каждый уровень меню свой блок
  • Menu Trails - Улучшения стандартного меню(в чем суть сильно не понятно)
  • Menu Translation Этот модуль обеспечивает, удобный интерфейс чтобы перевести пункты меню (i18n модуля).
  • MiniMenus - Google-подобную регистрацию на сайте
  • OG Menu - Позволяет делать меню, видимое только членам группы.
  • Tax'o'Menu - навигация по словарям таксономии
  • Taxonomy menu - добавляет в меню ссылки на термины таксономии.
  • Menu Page?
  • Menu Scout?

источник
http://www.drupal.ru/node/11082

10 нояб. 2011 г.

Принцип использования темизации и препроцесс функций


<?php
theme
('uc_abas_V',array('elements' => $vie) );?>


А так же добавив:

<?phpfunction uc_abas_preprocess_uc_abas_V(&$variables) {
    
template_preprocess_node($variables);
}
?>



uc_abas - имя модуля

uc_abas_V - имя темы которую регестрируем

Только вот правильный ли способ, работать то работает, но может есть что погибше и валиднее для таких ситуаций.
Код:


<?php//Регестрируем тему, файл темы node.tpl.php,
//в той же папке что и модуль
function uc_abas_theme() {
    return array(
        
'uc_abas_V'  => array(
            
'template' => 'node',
        ),
    );
}
//Хук вносим изменения в переменные,
//так как это бы сделал template_preprocess_node
function uc_abas_preprocess_uc_abas_V(&$variables) {
    
template_preprocess_node($variables);
}
//Рендерим ноду с указанным ID, делаем этот рендер нашей темой!
//в theme через элемент массива 'elements' => $vie,
//передаем данные чтоб все в uc_abas_preprocess_uc_abas_V
//нормально работало
function uc_abas_amen() {
   
    
$nod=node_load(1);
    
$vie=node_view($nod);
   
    
$res=array(
        array(
'#markup' => theme('uc_abas_V',array('elements' => $vie) )),
    );
   
    return 
$res;   

}
?>

23 сент. 2011 г.

Theme_select

Для вывода select с собственными данными можно использовать функцию
 $sel =  array('element'=>array(
     '#type' => 'select',
     '#ajax_processed'=>'myfunc',
     '#options' =>array(1=>'first', 2=>'second', 3=>'third')
 ));
echo  theme_select($sel);   


  дополнительные параметры

//Array ( [element] => Array ( [#type] => select
//[#default_value] =>
//[#empty_value] => -1
//[#title_display] => invisible
//[#title] => Регион для блока Сейчас на сайте
//[#options] => Array ( [-1] => - Нет - [sidebar_first] => Левая колонка [sidebar_second] => Правая колонка [content] => Содержимое [header] => Заголовок [footer] => Подвал [highlighted] => Закреплено [help] => Справка )
//[#input] => 1
//[#multiple] => [#process] => Array ( [0] => form_process_select [1] => ajax_process_form )
//[#theme] => select
//[#theme_wrappers] => Array ( [0] => form_element )
//[#pre_render] => Array ( [0] => ctools_dependent_pre_render )
//[#defaults_loaded] => 1
//[#tree] => 1
//[#parents] => Array ( [0] => blocks [1] => user_online [2] => region )
//[#array_parents] => Array ( [0] => blocks [1] => user_online [2] => region )
//[#weight] => 0.005 [#processed] => 1
//[#required] =>
//[#attributes] => Array ( [class] => Array ( [0] => block-region-select [1] => block-region--1 ) )
//[#id] => edit-blocks-user-online-region
//[#name] => blocks[user_online][region]
//[#value] =>
//[#empty_option] => - Нет -
//[#ajax_processed] =>
//[#sorted] => 1
//[#children] => ) )



25 авг. 2011 г.

Программное добавление термина таксономии

Этот код работает для DRUPAL 7
поддерживается создание связей терминов и полей таксономии
PS:
Обязательно проверьте чтоб ваш скрипт был в кодировке utf


/**
 * Arguments
 * name
 * vid
 * arg[parent] =0
 * arg[termFields] = array(array(key=>value))
*/
function _taxonomy_term_add($name, $vid, $arg = array()){
   
    $term = new stdClass;
    $term->name = $name;
    $term->vid = (int)$vid;
    $term->parent = (int)$arg['parent']>0? (int)$arg['parent'] : 0;
    $term->path = array(
     "alias" => '',
     "pid" => null,
     "source" => null,
     "language" => "und",
     "pathauto" => 1
     );
  
   
    if(isset($arg['termFields']) && is_array($arg['termFields'])){
      $termFields = $arg['termFields'];
     
      foreach($termFields as $field){
        list($fieldName,$fieldValue) = each($field);
     
        $term->{$fieldName} = array(
                            "und" => array(
                                     array("value" => $fieldValue)
                                          )
                                 );
       }
    }
   
    taxonomy_term_save($term);
    _taxonomy_manager_update_voc($term->vid, $term->parent);
    taxonomy_terms_static_reset();
 
  return $term;
    
}

/**
 * Helper function that updates the hierarchy settings of a voc
 */
function _taxonomy_manager_update_voc($vid, $parents = array()) {
  $voc = taxonomy_vocabulary_load($vid);
  if ($voc->vid == $vid) {
    $current_hierarchy = count($parents);
    if ($current_hierarchy > 2) {
       $current_hierarchy = 2;
    }
    if ($current_hierarchy > $voc->hierarchy) {
      $voc->hierarchy = $current_hierarchy;
      taxonomy_vocabulary_save($voc);
    }
  }
}

//пример добавления термина

$termname = 'Кама';
$vid = 4;
$arg = array(
             'parent' =>0
             'termFields' => array(array('taxonomy_field_name'=>$termname))
            );

_taxonomy_term_add($termname, $vid, $arg);

19 авг. 2011 г.

Как программно вывести exposed форму

Так можно вывести exposed форму даже если в views-е эта форма не вынесена в блок 

<?php 

function get_view_exposed_form($view_name = 'some_view', $display_id = 'some_display') {
  if (
$view = views_get_view($view_name)) {
      if (
$view->access($display_id)) {
          
$view->set_display($display_id);
          if (isset(
$view->display_handler)) {
              
$view->init_handlers();
              if (
$view->display_handler->uses_exposed()) {
                  
$exposed_form = $view->display_handler->get_plugin('exposed_form');
                  
$rendered_form = $exposed_form->render_exposed_form();
                  
$view->destroy();
                  return 
$rendered_form;
              }
           
          }
       
      }
      
$view->destroy();
  }

  
drupal_set_message('Something gone wrong', 'error');
  return 
'';
}
}
?>


PS:
Еще раз спасибо за решение deb
http://www.drupal.ru/node/67236

Views preprocess функции


  1. hook_preprocess_views_view — вызывается перед темизацией всего представления.
  2. hook_preprocess_views_view_fields — вызывается перед темизацией строки с полями.
  3. hook_preprocess_views_view_field — вызывается перед темизацией поля в строке.
  4. hook_preprocess_views_view_unformatted — вызывается перед темизацией списка Unformatted list.
  5. hook_preprocess_views_view_list — вызывается перед темизацией списка HTML list.
  6. hook_preprocess_views_view_grid — вызывается перед темизацией Grid-а.
  7. hook_preprocess_views_view_table — вызывается перед темизацией таблицы.
  8. hook_preprocess_views_view_summary — вызывается перед темизацией упорядоченного summary списка.
  9. hook_preprocess_views_view_summary_unformatted — вызывается перед темизацией неупорядоченного summary списка.
  10. hook_preprocess_views_view_rss — вызывается перед темизацией rss ленты.
  11. hook_preprocess_views_view_row_rss — вызывается перед темизацией строки в rss ленте.
  12. hook_preprocess_views_exposed_form — вызывается перед темизацией формы с раскрытыми фильтрами.

1) Примеры использования views_pre_view

    function examplemodule_views_pre_view(&$view, &$display_id, &$args){

if($view->name == 'mytestview){

//назначаем новый фильтр по ТИПУ МАТЕРИАЛА
$filterType = array(
"id" => "type",
"table" => "node",
"field" => "type",
"relationship" => "none",
"group_type"=> "group",
"ui_name"=> "",
"operator"=> "in",
"value"=> array($filterValue => $filterValue)
);


$view->display['default']->handler->options['filters']['type'] = $filterType ;

//меняем тип вывода на grid
$view->display['default']->handler->options['style_plugin'] = 'grid';

//меняем направление сортировки
$view->display['default']->handler->options['sorts']['title']['order'] = 'DESC';

     }

}

2 авг. 2011 г.

Изменение Exposed filters

Изменение фильтра в exposed форме типа textfield на select
1) С помощью хука hook_form_alter

function mymodule_form_alter(&$form, &$form_state, $form_id) {
    
   if($form_id=='views_exposed_form') {
  
   $tmp = $form['field_foofieldname_value'];
   $tmp['#type']='select';
   $tmp['#options'] = array(''=>t('Any'),"12"=>12,"13"=>13,"14"=>14);
   $tmp['#default_value']='';
   $tmp['#size']='null';
  
   $form['field_foofieldname_value']=$tmp;
   }

1) С помощью хука hook_form_views_exposed_form_alter


function mymodule_form_views_exposed_form_alter(&$form, $form_state) {
 //ловим форму по id
 if ($form['#id'] == 'views-exposed-form-myviewsname-page-1'){
    
   $tmp = $form['field_foofieldname_value'];   $tmp['#type']='select';
   $tmp['#options'] = array(''=>t('Any'),"12"=>12,"13"=>13,"14"=>14);
   $tmp['#default_value']='';
   $tmp['#size']='null';
  
   $form['field_foofieldname_value']=$tmp;
}
 }

Вывод всех переменных в шаблоне

<?php
print print_r(array_keys(get_defined_vars()), 1);
 
// If you have devel.module installed, comment the line above and uncomment the line below
  // dsm(array_keys(get_defined_vars()));
?>

28 июл. 2011 г.

Обновление Drupal ядра

Для обновления ядра Drupal небходимо
1) удалить все папкпи кроме
  •    sites
  •    themes (если есть изменения в темах)
2) скопировать все файлы кроме этих папок в корневую директорию сайта
3) запустить update в админке

ссылки:
http://www.siteground.com/tutorials/drupal-tutorial/drupal_upgrade.htm

15 июл. 2011 г.

Drupal 7 - обновление модулей через админку

Был наслышан о автоматическом обновлении модулей в  drupal 7, но после попытки самому установить или обновить модуль через админку и получил ошибку "Your server does not support installing modules and themes from this interface. Instead, install modules and themes by uploading them directly to the server, as described in the handbook."

После недолгих исканий нашел решение проблеммы

I looked into my phpinfo() of the web server, and found that there was no FTP support. I recompiled PHP from source with this config option added:
"--enable-ftp"
(the whole line of the PHP config options that I used:

'./configure' '--with-apxs2=/usr/local/apache2/bin/apxs' '--with-config-file-path=/etc' '--with-imap=/var/src/imap-2007e' '--with-gd' '--enable-mbstring' '--with-curl' '--with-mysql' '--with-pcre-regex=/usr/local' '--enable-pdo' '--with-pdo-mysql' '--with-zlib' '--enable-ftp'

) After that, I ran "make; make install" to get the "libphp5.so" for Apache HTTPd updated, and restarted the Apache web server. And that was it, the web interface for module installation worked.
Few things to note though:
1. I stopped the Apache server before PHP's "make install" was executed, to prevent an issue where "libphp5.so" can't be overwritten if it's in use.
2. the Drupal web site's "sites/all/modules" directory needs to be already created and owned by the Apache web server user to prevent errors such as:
Installation failed! See the log below for more information.

    * Error installing / updating
    * File Transfer failed, reason: Cannot chmod /var/www/drupal7/sites/all/modules/views.
3. Module dependency needs to be manually checked and installed.
(e.g. if installing Views , it's better to have Ctools installed first; otherwise, some error message flashed by (couldn't see clearly), even though it showed installation was successful)