Блог пользователя - Stutzer

Требуются советы по запуску нагруженного сайта

5 октября 2011 в 23:30

Коллеги!

В скором времени запускаем проект на D7. Планируемая посещаемость 100К - 150К хитов в сутки. Это мой первый проект с подобной посещаемостью, так что с радостью бы выслушал любые советы, предостережения, подводные камни, свойственные подобным проектам. Кроме того, видимо понадобится опытный человек, который бы помог настроить сервер, воткнуть nginx и все такое. Если вы такой человек — с удовольствием с вами пообщаюсь!

Проверка типа контекста в javascript

7 октября 2010 в 22:38

Добрый вечер

думаю, многие из вас знакомы со стандартами написания javascript для друпала, в частности с механизмом behaviors.
Как известно, грамотно написанный js-код заключается в конструкцию типа Drupal.behaviors.yourModule = function(context) { ... } и вызывается друпалом или другими модулями конструкцией типа Drupal.attachBehaviors(context);, где context — это контекст вызова. Как правило, это windows.document, т.е. в качестве контекста мы имеем целый документ. Но бывает так, что attachBehaviours вызываются сторонними модулями (и это очень хорошо и удобно), а в качестве контекста они передают, скажем, DOM элемент. Я хотел узнать, каким образом вы определяете тип объекта, переданного в качестве контекста. Мне на ум пока приходит только проверка одного из свойств объекта на существование, но это смахивает на костыли.

Новый модуль Handy alias для гибкого создания синонимов страниц

24 сентября 2010 в 8:28

Друзья, рад представить вам новый модуль Handy Alias, который я здесь уже упоминал несколько раз. Наконец-то я зарелизил его стабильную версию на drupal.org.

Как одним кликом мышки создать себе приключений на пару дней

10 сентября 2010 в 4:35

Как известно, люди делятся на две категории: те, которые еще не делают бэкапов, и те, которые уже делают.
Я был уверен, что отношусь ко вторым... В общем, дабы немного отвлечься от работы и вас отвлечь, расскажу про свои недавние злоключения.

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

Приглашаю к тестированию модуля Handy Alias (синонимы для словарей, терминов и нод)

23 августа 2010 в 21:42

Как-то давным-давно я написал анонс модуля, решающего некоторые проблемы с красивыми адресами, но архив с исходниками в том посте так и не появился, хотя многие его с нетерпением ждали. Причиной тому была его тотальная сырость модуля и отсутствие времени на тот момент.
Не прошло и года, как время и силы таки нашлись, так что прошу любить и жаловать!

Если совсем вкратце, то суть этого модуля можно изложить примерно так:
Особо отъявленные перфекционисты часто негодуют при виде адресов типа такого:
dokumenty/zakonoproekty/prinyatie/zakon-o-zaprete-alkogolya. Словом, транслит sucks!
Хотелось бы иметь возможность настраивать pathauto таким образом, чтобы адреса получались вот такими:
docs/law/accepted/no-alcohol-law.html.
Именно этим и занимается модуль Handy Alias, о котором пойдет речь.
Handy Alias позволяет указать синонимы отдельно для словарей, терминов и нод, после чего собрать из них красивый адрес, отражающий положение ноды в дереве категорий.

Работает все это следующим образом:
Прежде всего, необходимо создать словарь, который будет использоваться для формирования пути определенного типа контента.
При создании словаря нужно включить функцию Handy Alias и выбрать тип(ы) контента, для которых термины этого словаря будут использоваться при формировании пути. Кроме того, можно задать синоним для самого словаря (наглядно: форма создания словаря).

[how-to] Создаем раздел меню и выводим его в блок программно

13 августа 2010 в 4:34

По умолчанию в Друпале доступны всего три раздела меню (custom menus): Navigation, Primary links и Secondary links.
Однако, часто приходится создавать дополнительные разделы, которые далее можно использовать в виде блоков.
«Мышкой» создание нового раздела меню и последующая настройка вывода блока делается элементарно, однако порой бывает полезно автоматизировать (читай «написать модуль») действия по созданию разделов меню и выводу соответствующих блоков.

Сегодня я как раз столкнулся с подобной задачей и рад поделиться с вами ее решением (возможно не самым идеальным).
К сожалению, Друпал не предоставляет API для подобных действий, поэтому пришлось работать напрямую с бд.

Итак, задача:
написать модуль, который при установке создавает несколько разделов меню, а соответствующие им блоки размещает в определнных регионах. При отключении модуля блоки меняют меняют статус на скрытый

Придумаем для модуля нехитрое название footerLinks и вперед:

Файл footerLinks.info
В котором происходит создание разделов меню при установке модуля

<?php

// Основной файл модуля нам понадобится для вызова функции footerLinks_get_custom_menus()
include_once ('footerLinks.module');

/**
 * Implementation of hook_install().
 */

function footerLinks_install() {
 
  // Получаем необходимые данные по создаваемым разделам меню (see footerLinks.module)
  $custom_menus = footerLinks_get_custom_menus();
 
  // Создаем разделы мею
  foreach ( $custom_menus as $custom_menu ) {

Интернет-магазин часов Time Boutique

9 июля 2010 в 15:41

Всем добрый день!

С радостью представляю наш новый проект — интернет-магазин наручных часов и подарком «Time Boutique».

Сайт не без косяков и, честно говоря, еще дорабатывается, но представление уже вполне составить можно. К тому же у заказчика с завидной регулярностью возникают новые идеи, так что сайт постоянно развивается.

Из стандартных модулей использовались:
ubercart, bueditor, bocu (спасибо xxandeadxx), поисковик lucene, colorbox, jquery_ui, jquery_update, currency_api, globalredirect, imagecache, imagecache_actions, menu_trails, token, transliteration и др. Основная часть кастомной функциональности реализована кастомными модулями (в кол-ве 18 штук)

Временный демо-аккаунт на всякий случай:
username
Demo_123

С удовольствием отвечу на ваши вопросы и приму замечания по делу.

Сайт сделан в студии labs42.com

drupal_set_message в #submit обработчике формы не работает

22 июня 2010 в 6:23

Коллеги, помогите разобраться со странным явлением

В своем модуле изменяю стандартную форму создания ноды с помощью mymodule_form_FORM_ID_alter(...)
при изменении, кроме всего прочего, добавляю дополнительный сабмит хэндлер и сабмит-кнопку

$form['#submit'][] = 'mymodule_myform_submit';
$form['myform_submit'] = array( '#type' => 'submit', '#value' => t('Some action') );

Дополнительный обработчик выглядит следующим образом:

function mymodule_myform_submit($form, &$form_state) {
 
  if ( $form_state['clicked_button']['#id'] == 'edit-myform-submit' ) {  
   
    // Пытаемся создать файл - все ок
    $myFile = "testFile.html";
    $fh = fopen($myFile, 'w') or die("can't open file");
    $stringData = vd($form);
    fwrite($fh, $stringData);
    fclose($fh);
   
    // Пытаемся вывести сообщение - не работает Sad
    drupal_set_message('Some message');
  }

}

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

Новая книга Drupal E-commerce with Ubercart 2

4 апреля 2010 в 16:10

Обложка книги Drupal E-commerce with Ubercart 2
Не далее как несколько дней назад вышла новая книга, посвященная самой популярной (для Drupal) e-commerce платформе Ubercart 2.x.

Drupal + MS Access на одной машине

3 апреля 2010 в 13:14

Коллеги, вопрос к тем, кто имел опыт администрирования/настройки серверов.

Стоит следующая задача:
Есть один сервер. Необходимо, чтобы на нем одновременно работали MS Access (корпоративная БД) и Drupal (сайт, открытый просторам интернетов), интегрированный с MS Access-ом посредством ODBC.

Ниже мои соображения на эту тему, который могут показаться вам весьма делитантскими, поскольку опыта подобного никогда не имел.
С одной стороны, MS Access-у по идее нужен Windows Server. Друпал, Апач, Мускуль, PHP неплохо было бы запускать под чем-то Linux-оподобным (что обычно пользуют хостинг-провайдеры).
Тут мне приходит на ум два решения: или все-таки ставить LAMP на винду (тут, на сколько я понимаю, можно поиметь проблем с безопасностью). Или же прибегнуть к использованию виртуализации (WM Ware или что-то подобное).

Очень спасибо за любые мысли на эту тему, советы. Если найдется человек, сведущий в этом, возможно в недалеком будущем имеет место быть небольшой плодотворное сотрудничество.

Калькулятор взаимодействия лекарственных препаратов

1 апреля 2010 в 17:46


Коллеги!

Не бахвальства ради, здоровой критики для.

Практически завершил работу над проектом «Калькулятор взаимодействия». Сайт по сути является только «оберткой» для непосредственно калькулятора, который, в общем-то, также разработан на друпале.

Калькулятор позволяет врачам определять степень взаимодействия антиретровирусных препаратов с прочими лекарственными средствами.

Особенность калькулятора в том, что он, подобно Google Maps, может легко быть встроен в любой сайт, для чего необходимо подключить в секции HEAD js скрипт, css и инициировать калькулятор onload.

Буду очень благодарен за замечания по делу и найденные баги.

eCommerce - оплата наличными при доставке

18 февраля 2010 в 2:40

Коллеги, подскажите, в какую стороны копать.

Я использую модуль eCommerce, в отчете о состоянии он говорит, что все плохо, что нужно активировать какой-либо Payment Gateway, чтобы установить валюту и несколько других настроек. На сколько я понимаю, Payment Gateway отвечает за электронные платежи, но как быть, если пока что всего этого не требуется?

Статичные страницы + CCK

26 января 2010 в 12:21

Коллеги, хотелось бы узнать как вы решаете проблему создания единичных статичных страниц (к примеру "О компании"), если кроме стандартного заголовка и текста (тип контента Page), требуется добавить к форме редактирования страницы дополнительные поля.

Глюк drupal_add_css в hook_form и hook_validate

26 ноября 2009 в 16:59

Заметил странную штуку:
если добавить drupal_add_css/...js в hook_form, то в случае возникновения ошибок при валидации, CSS или JS, определенные в hook_form, уже не подгружаются на страницу. Пришлось их продублировать в hook_validate.

Никто не сталкивался с подобным недоразумением?

Небольшой апгрейд постраничной навигации Drupal-a

29 октября 2009 в 22:57

На мой взгляд, у стандартной постраничной навигации Друпала есть несколько недостатков.

Во-первых, ссылка на последнюю страницу стала бы более информативна и занимала бы меньше места, если её заменить на номер последней страницы [28].

Модуль для группировки похожих нод

23 октября 2009 в 13:41

Коллеги, подскажите модуль для группировки нод.
Модуль нужен для вывода похожих товаров в каждой ноде. Т.е., если нода входит в какую-либо группу, то при выводе ноды выводятся все остальные ноды этой группы в виде ссылок.
В общем-то от этого модуля мне нужна только хорошая админка, которая позволяла бы удобным образом формировать и редактировать группы.

Изменение UID пользователя

21 октября 2009 в 22:36

Бывает, приходится изменить uid одного или нескольких пользователей, скажем, при переносе миграции на друпал или в других случаях.
Ниже привожу SQL запрос для базовой установки друпала, для корректного изменения UID пользователя с сохранением всех прежних связей.
Перед выполнением запроса убедитесь, что пользователя с планируемым ID не существует. Если вы используете префиксы к таблицам — не забудьте о них.

UPDATE users SET uid = 2 WHERE uid = 3;
UPDATE users_roles SET uid = 2 WHERE uid = 3;
# UPDATE profile_values SET uid = 2 WHERE uid = 3;

UPDATE node SET uid = 2 WHERE uid = 3;
UPDATE node_revisions SET uid = 2 WHERE uid = 3;
UPDATE files SET uid = 2 WHERE uid = 3;  
# UPDATE comments SET uid = 2 WHERE uid = 3;
# UPDATE node_comment_statistics SET last_comment_uid = 2 WHERE last_comment_uid = 3
# UPDATE pool_votes SET uid = 2 WHERE uid = 3;

UPDATE authmap SET uid = 2 WHERE uid = 3;
UPDATE history SET uid = 2 WHERE uid = 3;
UPDATE sessions SET uid = 2 WHERE uid = 3;
# UPDATE accesslog SET uid = 2 WHERE uid = 3;
# UPDATE watchdog SET uid = 2 WHERE uid = 3;

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

При наличии дополнительных модулей, возможно, понадобятся дополнительные запросы.
Если вам доведется производить подобные манипуляции и вы обнаружите, что я упустил какие-то таблицы, you are welcome Smile

BUEditor не отображается для форму комментариев

22 мая 2009 в 9:12

Здравствуйте

Помогите разобраться с проблемой: установил BUEditor, настроил для всех ролей, все нормально работает в формах создания новых нод, а в форме комментирования ничего нет.
Как чинить?

Права на запись в форум для анонимов

15 марта 2009 в 23:41

Друзья!

Столкнулся с неожиданной проблемой.

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

Просветите, в чем дело?