Сергей(goodboy)

Реальное имя
Сергей
Страна
Украина
Город
Харьков
Пол
мужской
Ваша работа
программирование
Резюме

CMS: Drupal, Bitrix, ModX, WordPress
Фреймворки: Symfony
Программирование: С#, C++ ( Borland CBuilder, Microsoft Visual Studio), MS Sharepoint
Базы данных: Oracle(+PL/SQL), MSSQL(+T-SQL), mySQL, mariaDB
Web: HTML, CSS, PHP, JavaScript(+jQuery), AJAX
Прочее: SEO, Copywriter

Мои_работы_для_Drupal
Помощь пользователям на форумах
Предлагаю_сервисы_для_Drupal
Консалтинг
Создание коммерческих сайтов
Блог
Просмотреть последние записи в блоге
Темная материя
Материалов: 0/33, комментариев: 7/945
Время участия
9 лет 5 months
Пользователь поблагодарил
Материалы: 6, Комментарии: 19
Пользователя поблагодарили
Материалы: 0, Комментарии: 27

goodboy Пнд, 28/09/2015 - 18:26

Добавление страницы с PHP кодом и Views

Часто возникает необходимость создания страниц, выполняющих PHP-код. Какое-нибудь хитромудрое дерево, которое реализовать при помощи Views крайне проблематично.

Как же добавить такую страницу? Ничего нет проще - включаем модуль PHP Filter, создаем ноду и пишем код в поле Body, выбрав формат PHP.

Модули и темы: 
Версия Drupal: 
0 Спасибо

goodboy Вс, 30/08/2015 - 12:36

Добавление материалов пользователями

На сайте потребовалось, чтобы анонимные пользователи оставляли свои отзывы и они автоматически публиковались. Создал тип материала "Отзывы" с полями "Имя","Email","Раздел"(taxonomy_term) и "Отзыв". Дал пользователям права на создание ноды типа "Отзыв" и отчитался, что все сделано!

Но, оказалось не все так просто. Мне был предъявлен ряд запросов и недостатков:

  1. В заголовке, вместо "Создание материала Отзыв", необходимо "Добавить отзыв"
  2. Кнопку отправки в форме назвать "Добавить"
  3. Вывести специальное сообщение после создания материала
  4. Убрать "лишнюю" информацию в форме добавления ноды - информация о формате, подсказки...
  5. Использовать AJAX, вывод результатов валидации в том же окне
Тип материала: 
Модули и темы: 
Версия Drupal: 
0 Спасибо

goodboy Ср, 26/08/2015 - 12:11

Формы в одностраничниках

Потребовалось срочно создать одностраничный сайт, мини-лендинг на полтора экрана. Сделали статичный html-файл, сверстали, все красиво. В самый последний момент было сказано, что нужно добавить форму обратной связи.

Как сделать форму, используя только текстовый редактор? Последний раз подобное я делал в 1999 году.
Нужна клиентская валидация полей формы (в т.ч. на корректность введенного Email), красиво вывести ошибки без перезагрузки. Нужен sendform.php, на которое бы указывал action формы. В нем, серверная проверка вводимых данных, борьба со злоумышленниками, ботами... Далее, необходимо вводить в senform.php список Email получателей, формировать формат писем... Но самое страшное, что данные, введенные в форму, необходимо хранить и отображать при необходимости.

Версия Drupal: 
0 Спасибо

goodboy Втр, 28/07/2015 - 07:05

Как мы делали версию для слабовидящих

Поступил заказ для созданного нами сайта сделать версию для слабовидящих. В качестве образца был дан http://special.kremlin.ru/events/president/news . Было принято решение не создавать отдельный поддомен, а сделать отдельную тему и для переключения тем использовать модуль  switchtheme

1. Модуль switchtheme

Модуль выводит форму выбора темы из списка установленных.
Но, возник ряд вопросов:

1.1 Тем может быть больше двух (как минимум - еще тема для админки). Нужно как-то скрывать лишние.
1.2 Темы нужно назвать по-русски, понятно для пользователей. Хоть модуль имеет настройку для переименования тем, в форме она не срабатывает.
1.3 В списке тем сразу должна быть выбрана нужная тема, а не текущая. Вообще, текущей темы не должно быть в списке.

Тип материала: 
Модули и темы: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

goodboy Ср, 28/05/2014 - 08:17

Программная установка offset во вьюсах

Понадобилось динамически назначать offset для views.

Вызываю вьюв /articles?page1=3, хочу перейти на 4-ю страницу.

function MYMODULE_views_pre_execute(&$view)
{

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

  $currpage = 0;
  if ( isset($_GET['page1'])) { $currpage = $_GET['page1']; }
  print "currpage=$currpage";

  if ($currpage > 0) {

      $items_per_page = $view->display[$view->current_display]->handler->view->get_items_per_page();
      $offset = $view->display[$view->current_display]->handler->view->get_offset();
      print "items_per_page=$items_per_page offset=$offset";
      if ($items_per_page>0) {
         $new_offset =  $currpage*$items_per_page;
         print "new_offset=$new_offset";

Тип материала: 
Модули и темы: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

goodboy Пнд, 18/06/2012 - 09:07

Как отредактировать содержимое мини-панели context_frontpage?

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

Тип материала: 
Модули и темы: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

goodboy Ср, 06/06/2012 - 07:59

Требуется drupal-программист для удаленной работы

Удаленная работа, имеется несколько проектов.Возможно постоянное сотрудничество.Прямой работодатель, Москва. Оплата через банк.

Требуется программист под Drupal 7,6. Знание основ администрирования серверов будет большим плюсом. От вас качественная, своевременная работа. Быстрое реагирование, сжатые сроки. Ответственность. Зарплата обсуждается.

Контакты: m_mark@inbox.ru

Версия Drupal: 
0 Спасибо

goodboy Чт, 22/03/2012 - 10:36

Webform: как сделать выпадающий список из значений view?

На D6 часто использовал webform с выпадающим списком, который формируется из значений вьюва. Для этого использовал модуль  webform_viewreference.
На 7-ке не могу сообразить, как поступить, версии под D7 нет, да и эту версию друпала только осваиваю. Подскажите, пожалуйста.

Тип материала: 
Модули и темы: 
Версия Drupal: 
0 Спасибо

goodboy Сб, 03/09/2011 - 11:32

Склонение названий месяцев при выводе даты

Решил написать свою версию функции format_date(), позволяющую склонять названия месяцев на русском(и других языках): "3 сентября 2011".

<?php

//Склонение на русском языке
function month_declination_ru ( $long_month_name, $month  ) {
   $long_month_name = ( $month == 3 || $month == 8 ) ?
          $long_month_name . 'а' : drupal_substr($long_month_name, 0, drupal_strlen($long_month_name)-1) . 'я';  
   return $long_month_name;
}

//Склонение на украинском языке
function month_declination_ua ( $long_month_name, $month  ) {  
   if ( $month == 2 ) return  drupal_substr($long_month_name, 0, drupal_strlen($long_month_name)-2) . 'ого';
   if ( $month == 11 ) return  $long_month_name . 'а';
   if ( drupal_substr($long_month_name, -3) == 'ень' )
         return drupal_substr($long_month_name, 0, drupal_strlen($long_month_name)-3) . 'ня';

   return $long_month_name;
}

//Функция форматирования даты
function format_date2($timestamp, $type = 'medium', $format = '', $timezone = NULL, $langcode = NULL) {
  if (!isset($timezone)) {
    global $user;
    if (variable_get('configurable_timezones', 1) && $user->uid && strlen($user->timezone)) {
      $timezone = $user->timezone;
    }
    else {
      $timezone = variable_get('date_default_timezone', 0);
    }
  }

  $timestamp += $timezone;

  switch ($type) {
    case 'small':
      $format = variable_get('date_format_short', 'm/d/Y - H:i');
      break;
    case 'large':
      $format = variable_get('date_format_long', 'l, F j, Y - H:i');
      break;

Тип материала: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

goodboy Пт, 29/04/2011 - 17:25

Модуль для связки плагина Mediaembed для CKEditor (под Wysiwyg)

Пользуюсь редактором CKEditor 3-й версии в связке с модулем  Wysiwyg. Понадобилось установить плагин Media Embed. Делал вроде бы по инструкции, но не получилось, а установить надо было быстро.

Тип материала: 
Модули и темы: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

goodboy Втр, 04/05/2010 - 16:21

Перенос базы пользователей (c Друпал5 на Друпал6) [Выполнено]

Возникла задача перенести базу пользователей с сайта на Drupal5 на сайт на Drupal6. База пользователей - это список пользователей с аккаунтами, ролями, профилями и картинками. Насколько я понял, это таблицы files, profile_fields, profile_values, role, users, users_roles.

Я установил на обоих сайтах модуль Backup&Migrate, экспортировал указанные таблицы (структуру и данные) и импортировал на сайте с Drupal6. Теперь на новом сайте эти таблицы имеют формат Drupal5, что приводит, например к проблеме при создании материала (из-за отсутствия поля signature_format в таблице users); да и непонятно, что будет при добавлении новых файлов или пользователей, так как в Drupal6 поля-идентификаторы в этих таблицах стали автоинкрементными; и т.д. Я надеялся, что update.php исправит ситуацию, но этого не произошло. Кроме как воспользоваться phpmyadmin и вручную править структуру в таблицах (или же вручную править INSERT в файле экспорта) ничего на ум не приходит. Но это как-то ненадежно. Прошу помощи у сообщества, возможно кто-то уже решал подобную задачу.

Модули и темы: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

goodboy Ср, 28/04/2010 - 14:55

Требуется верстальщик для удаленной работы

Удаленная работа, имеется несколько проектов.
Возможно постоянное сотрудничество.
Прямой работодатель. Оплата через банк.

Требуется верстальшик под Drupal 6.
Работа с шаблонами. Знание jQuery приветствуется.
От вас качественная, своевременная работа.
Правильная верстка под все используемые браузеры.
Быстрое реагирование, сжатые сроки.
Ответственность.

Контакты: m_mark@inbox.ru

Версия Drupal: 
0 Спасибо

goodboy Пт, 19/03/2010 - 08:41

Галереи: мой опыт

Хочу для себя обобщить свой опыт создания галерей на Друпале. (Галерея представляет из себя двухуровневую структуру Альбом-Фотография:  Альбом состоит из фотографий.)
Галерею можно делать при помощи готовых модулей (http://drupal.org/project/modules?text=gallery) или связки Views(сниппет) + CCK ImageField (Image) + ImageCache +лайтбоксы(Lightbox2, Thiсkbox, …)+ jQuery плагины(jCarousel, Circle, Serial Scroll, …)
 
Способы конструирования галерей:

1. Альбом-нода, Фотография-поле

Альбом является нодой, а Фотографии множественным полем ImageField.
 
Достоинства: малое количество нод, встроенная сортировка фотографий
Недостатки: невозможность работать с фотографией как с нодой: сделать оценку, получить дату создания и т.д.

2. Альбом-нода, Фотография-нода

И альбом и фотография являются нодами. Связь между альбомом и нодой осуществляется при помощи CCK Node Reference ( Фотография ставит ссылку на Альбом ).  Кроме того, что для фотографии можно указать несколько альбомов, очень легко переносить фотографию из одного альбома в другой.

Модули и темы: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

goodboy Ср, 24/02/2010 - 08:55

Мои инструментарий

Сделав некоторое количество сайтов на Друпал, заметил за собой повторяемость в подходах к созданию сайтов. Этот пост - памятка для самого себя, а не поучение "вот, смотрите, как надо делать".
Однако, буду рад услышать конструктивную критику.

  1. Модули
    • Базовые: Pathauto (+Tokens), CCK, Views
    • Изображения: Imagecache (+ImageAPI), Lightbox2
    • Профиль пользователя: Content Profile, Auto Assign Role, Automatic Nodetitles
    • Редактор: Wysiwyg, IMCE (+IMCE Wysiwyg API bridge), Excerpt
    • Рейтинг: FiveStar (+Voting API)
    • Прочее: Date, jQuery Update
  2. Темизация и форматирование
    • Стандартную ленту материалов на главной не вывожу. Чтобы ее скрыть - делаю пустой материал типа Story, и затем пустой node-story.tpl.php
    • Display fields для полей CCK не использую - делаю Hidden. Все форматирование вывода производится в шаблонах темы (в том числе, шаблонах Views)
    • Значения Title и Alt изображений - заголовок ноды. Изображение является ссылкой на ноду (кроме вывода непосредственно в ноде)
  3. Программирование
    • Создаю модуль myapi, куда помещаю собственные функции.
    • Использую сниппеты для блоков: программный вывод views, сниппеты типа "Статьи по теме"
  4. Экспорт и трансляция
    • RSS (Яндекс, Google), LiveJournal, Twitter
Версия Drupal: 
0 Спасибо

goodboy Чт, 19/11/2009 - 11:38

Пустая дата и проблемы с timezone

PHP 5.2.11
Друпал 6.14
Модуль Date 6.x - 2.4

В admin/settings/date-time установлено Пользовательские-конфигурируемые часовые пояса.: Включено.
Использую CCK поле тип дата. Диапазон лет: -3;+3
Пользователь устанавливает свой часовой пояс ("Европа/Москва") и получает диапазон лет -3...3 вместо 2006...2012
Если ставить по умолчанию ("Europe/Moscow") - все ok.

Иду в модуль Date:

1) В функции _date_content_generate ( /date/date_content_generate.inc )

<?php
$year 
date_format(date_now(), 'Y') - $back mt_rand(0, ($forward $back));

// date_format(date_now(), 'Y') возвращает 0

?>

2) В date_api.module

<?php
    
function date_now($timezone NULL) {
  return 
date_make_date('now'$timezone); //Возвращает пустое значение
}

function date_make_date($date$timezone NULL$type DATE_DATETIME$granularity = array('year''month''day''hour''minute')) {
      ...
      
// $timezone = "Европа/Москва";
      // timezone_open($timezone) возвращает FALSE
      //
      
return date_create('now'timezone_open($timezone)); //Возвращает пустое значение
      
... 
}
?>

3) Функция date_create http://ua.php.net/manual/en/function.date-create.php

<?php
DateTime date_create  
([ string $time "now"  [, DateTimeZone $timezone NULL  ]] )

//Оказывается, date_create('now', NULL) совсем не то же самое, что date_create('now');
//И отсюда все проблемы

?>

Варианты решения:

1) Убрать перевод t("Europe/Moscow")
2) Переписать функцию date_make_date

Вместо
<?php?>

Ключевые слова: 
Версия Drupal: 
0 Спасибо

goodboy Ср, 12/08/2009 - 10:54

CAPTCHA и Cookies

На сайте, на котором Анонимам даны права на комментирование, пришлось поставить капчу (стандартный  модуль CAPTCHA). Captcha работает исправно, но Анонимы перестали комментировать, потому как теперь в браузере необходимо включать cookies и пользователи не знают как/не хотят их включать. Я в небольшой растерянности, что делать: отказаться от капчи или написать подробную инструкцию как включать кукисы для популярных браузеров.

Модули и темы: 
Версия Drupal: 
0 Спасибо

goodboy Чт, 18/06/2009 - 14:17

Public Download Count для 5-го Друпала

Появилась необходимость подсчитывать количество закачек файлов. Модуль Download count не подошел - побоялся перехода с Public на Private способ закачки. Нашел Public Download Count, а он только для 6-ки, сайт на 5-м Друпале. Никто не собирается ближайшим часом переводить на 5-й этот модуль? Я бы поучаствовал в тестировании.

Версия Drupal: 
0 Спасибо

goodboy Пт, 22/05/2009 - 09:54

Создание произвольного XML [Решено]

Понадобилось создать уж очень нестандартный RSS - проще сделать руками, чем переделывать views_rss или views_yandex_rss.
Содержимое xml я сгенерирую сам, непонятно - как добиться, чтобы Друпал при обращению к url выдал xml.
Могу ли я сделать это сниппетом (используя drupal_set_header('Content-Type: text/xml; charset=utf-8'); ) или писать модуль ( делая hook_menu ).

Пока теряюсь в догадках. Может, кто делал - подскажите.

Ключевые слова: 
Версия Drupal: 
0 Спасибо

goodboy Ср, 25/03/2009 - 20:51

Обновление при переезде

Решил переезд на другой хостинг совместить с обновлением версии.
Сейчас 5.5, хочу установить свежий 5.16

Что планирую сделать:

  1. На новом месте инсталлировать Drupal 5.16
  2. Поставить модуль Backup and Migrate
  3. Скопировать модули (sites/all) и темы
  4. Сделать бекап на старом сайте при помощи Backup and Migrate
  5. Восстановить базу из бекапа на новом сайте при помощи Backup and Migrate
  6. Выполнить update.php

Надеюсь, ничего не упустил. Буду признателен за замечания и уточнения.

0 Спасибо

goodboy Ср, 18/02/2009 - 16:06

Проблемы с VPS на мастерхост

С утра 17 февраля наш сайт ( виртуальный сервер на masterhost.ru ) неожиданно перестал работать. Одновременно утерян доступ к панелям управления сервера . Саппорт отвечает на один запрос из десяти в духе "у вас что-то не так". Есть смутные подозрения, что это связано с переездом на европейские площадки.

UPD: Похоже, мне одному не повезло. Действительно, при миграции, данные сайта (файлы и база данных) были безвозвратно утеряны мастерхостом! Был сайт - и нет его. Нормально?

Ключевые слова: 
0 Спасибо

Страницы