Drupal

Drupal (Друпал) — система для создания сайтов и управления ими (Content Management System).

На Друпале создано огромное количество сайтов различного назначения и сложности. На нем одинаково успешно работают и домашние странички и масштабные проекты для больших компаний. Для управления созданным на Drupal сайтом не требуется владение веб-вёрсткой и знание языков программирования.

Чем живет Русское Drupal-сообщество.

Запрещаем публикацию ссылок в комментариях и нодах анонимами.

Спаму НЕТ Борьба со спамерами периодически достает всех. Нашел ]]>]]>простенький модуль]]>]]> который запрещает размещение комментариев анонимами, если в нем содержится ссылка. И немного его модифицировал добавив проверку на наличие ссылок в размещаемых анонимами нодах.

В дальнейшем можно дополнить модуль настройками, чтобы проверка проводилась только для конкретного типа материала, или включать/выключать проверку в комментариях или нодах на выбор.

Собственно поправленный модуль: nolinksforanonimous

Наш бравый постовой:

Если Вы хотите иметь полный контроль над своим интернет-сайтом. Возьмите в аренду выделенный сервер.

Полезные модули

Backup and Migrate - модуль архивирования

ccfilter - коллекция популярных фильтров

Скрытая капча - чтобы напрягать капчей только ботов

Темизация

Темизация в Drupal - это изменение внешнего вида сайта. Для этого мы созданем собственную тему (шаблон) или вносим изменение в готовый.
Темизировать на Друпал-сайте можно практически все, от любого элемента (отдельное поле, блок, форма и т.п.) до набора страниц отвечающему определенным (вами заданным условиям).

Webforms темизация

Для кого-то этот пост окажется очевидным, но кому-то возможно поможет.

]]>Webform]]> - замечательный модуль Drupal позволяющий настраивать формы для отправки сообщений с сайта. 

Но в стандартном варианте само сообщение набранное на сайте в почтовое сообщение не входит. Давайте исправим эту несправедливость.

Можно пойти 2-мя путями:

Наиболее правильный - переопределение функции webform_mail_fields в своей теме. Для этого в папке темы создаем файл template.php (если по какой-то причине его у Вас еще там нет). Далее добавляем туда новую функцию. Я намеренно упустил функцию t(). Если у Вас многоязычный сайт.

function ИмяВашейТемы_webform_mail_fields($cid, $value, $node, $indent = "")
{
//Предворительно при настройке
//Формируем текст отсылаемого сообщения.
$msg = chr(10) . 'Заявка с сайта' . chr(10);
$msg .= 'ФИО: ' . $value[_fio] . chr(10);
$msg .= 'Почта: ' . $value[email] . chr(10);
$msg .= 'Контактный телефон: ' . $value[tel] . chr(10);
$msg .= 'Когда связаться: ' . $value[_kogda] . chr(10);
$msg .= 'Сообщение:' . chr(10) . $value[_zhelaet] . chr(10) . chr(10) . chr(10);

//$msg .= '<pre>'. check_plain(print_r( $value, 1)) .'</pre>';

return $msg;
}

 Для настройки (темизации) отправляемых с сайта сообщений берем из модуля файл webform-mail.tpl.php и коприруем его в нашу рабочую тему и ... начинаем колдовать менять.

При темизации по умолчанию можно использовать следующие переменные:

 

  •  $form_values: Массив переменных введенных Вами в форму. Например вы добавили свое поле fio, тогда значение поля будет находится в элементе массива $form_values[submitted_tree][fio]. (для анализа массивов не забываем строчку print '<pre>'. check_plain(print_r($form_values)) .'</pre>';)
  •  $node: текущая нода (так же можно разобрать с помощью print_r).
  •  $user: Текущий пользователь, заполнивший форму.
  •  $ip_address: IP адрес пользователя.
  •  $sid: уникальный номер заполненной формы.
  •  $cid: (практическое применение этого поля я не понял).

Пример стандартного webform-mail.tpl.php

 
<?php print t('Submitted on @date', array('@date' => format_date(time(), 'small'))) ?>
<?php if ($user->uid): ?> <?php print t('Submitted by user: @username [@ip_address]', array('@username' => $user->name, '@ip_address' => $ip_address)) ?>
<?php else: ?>
<?php print t('Submitted by anonymous user: [@ip_address]', array('@ip_address' => $ip_address)) ?>
<?php endif; ?>  
<?php print t('Submitted values are') ?>:  
<?php
  // Print out all the Webform fields. This is purposely a theme function call
  // so that you may remove items from the submitted tree if you so choose.
  // unset($form_values['submitted_tree']['element_key']);
  print theme('webform_mail_fields', 0, $form_values['submitted_tree'], $node);
?>  
<?php print t('The results of this submission may be viewed at:') ?>
<?php print url('node/'. $node->nid .'/submission/'. $sid, array('absolute' => TRUE)) ?>  

С постовым такого роста....:

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

Темизация ноды с таксономией и CCK без использования VIEWS для Друпал6

Для оформления содержимого сайта на Друпал не обязательно пользоватся модулем VIEWS даже если в типе материала мы используем поля (читаем используем модуль CCK). Views достаточно ресурсоемок, поэтому попробуем обойтись без этого модуля.

  1. Создаем шаблон для нашего типа данных. В папке наш_сайт/modules/node находим файл node.tpl.php, переименовываем в node-НашТипДанных.tpl.php и переносим в папку нашей темы.
  2. Убираем из файла штатный вывод контента, он выглядит примерно так :
        <div class="content"><?php print $content ?></div>
       
  3. И начинаем писать вывод Для разделения вывода списком и отдельных нод используем переменную $page
     
    <?php if ($page): ?>    
    <?php //здесь выводим то что надо на отдельные ноды ?>    
    <?php else: ?>    
    <?php //здесь выводим то что надо для списка нод ?>  
    <?php endif;?>
  4. Теперь отдельно переменные для вывода полей:
    Описание: $node->content['body']['#value']
    Поле ССК в ноде: $node->ИмяCCKполя[0]['view']
  5. Если полями ноды являются термины таксономии то можно использовать следующее:
    //Выводим все словари  таксономии
    foreach(taxonomy_node_get_terms($node, 'vid') as $name3 => $value3) {
            //echo "<br> $name3 : $value3";
            $vocabulary = taxonomy_vocabulary_load($name3);
            echo '<div class = "pole_l0" id = "term' . $vocabulary->vid . '"><p><b>' . $vocabulary->name . ': </b>';
            $cc = '';
            $rr = '';
            $ii = 1;
            foreach (taxonomy_node_get_terms_by_vocabulary($node, $name3,'description') as $name => $value1) {
            if($ii>1){$rr = ', ';}
            $cc = $cc . $rr . $name;
            $ii +=1;}
            echo $cc . '</p></div>';               
                    }

    Выводит следующее: НаименованиеСловаряТаксономии: термин1, термин2
  6. И напоследок не забываем для просмотра массива $node не забываем использовать:
     
    <?php print '<pre>'. check_plain(print_r($node, 1)) .'</pre>'; ?>

P.S.: Примеры темизации без использования вьюса, только node.tpl.php и разбор массива $node:

(этот пост перенес со ]]>своего блога на Drupal.ru]]>)

 

Полезные ресурсы

  1. ]]>drupal.org]]> — официальный сайт
  2. ]]>drupal.ru]]> — русскоязычное сообщество
  3. ]]>setegnom.com]]> — учебник, самоучитель, назовите как хотите. Много полезной инфы.
  4. ]]>drupaler.ru]]> — сервер переводов.
  5. ]]>drupaldance.com]]> — танцы около Друпала. Сайт ]]>Швец Александра]]>. Уроки для начинающих друпаллеров, полезные модули.
  6. ]]>www.drupalmuseum.com]]> — большая коллекция Друпал-сайтов. От визиток до порталов.
  7. ]]>www.drupalsnippets.com]]> — коллекция снипетов (кусков кода для использования в шаблонах и блоках для реализации разных функций)