Node tools — расширяем возможности hook_node_info() для настройки комментариев, отображения и прочих вещей из кода!

Прислано: Stutzer

пн, 09/01/2012 - 07:54

Давно мучился с проблемой — создаешь с помощью hook_node_info() новый типа контента, но все равно приходится лезть в интерфейс и настраивать в ручную такие параметры, как отображение комментариев, настройки публикации, отображение даты/автора и прочие вещи, которые hook_node_info() не охватывает. Иногда, конечно, хватает времени и терпения прописать все необходимые с помощью variable_set, но это неудобно.

Наконец, терпение лопнуло и пара часов была потрачена на благо человечества, результатом чего стал небольшой модуль nodetools (пока лежит на github)

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

<?php
function hook_node_info() {
  return array(
    
'customtype' => array(
      
'name' => t('Custom node type'),
      
'base' => 'custom',
      
'has_title' => TRUE,
      
'title_label' => t('Custom node type title'),
      
'has_body' => FALSE,
      
'body_label' => t('Custom node type body'),
      
'locked' => TRUE,

      
/**
       * ----------------
       * Extra properties
       * ----------------
       */

      /**
       *  Submission form settings (core functional)
       *  ------------------------------------------
       *
       *  Preview before submitting
       *    node_preview_{$type}
       *    value <int>:
       *      0 => Disabled
       *      1 => Optional
       *      2 => Required?>

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

Прислано: Stutzer

ср, 05/10/2011 - 19:30

Коллеги!

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

Как пользоваться прекрасным hook_page_alter?

Прислано: Stutzer

сб, 17/09/2011 - 19:56

Доброго вечера!

C приходом Drupal 7 настали прекрасные времена — теперь мы можем менять и альтерить как нам угодно не только формы, но и обычные страницы с помощью хука hook_page_alter($&page). В случае с hook_form_alter нам известен $form_id, с помощью которого мы знаем, о какой форме идет речь.

Внимание, вопрос: как аналогичное делается в случае с hook_page_alter($&page)? Т.е. как нам сальтерить рендер массив для страницы А при этом не затронув страницу Б?

Аутентификация и авторизация пользователя. Как влезть в этот процесс?

Прислано: Stutzer

чт, 15/09/2011 - 16:54

Другие статьи по теме:

Добрый вечер, коллеги!

немного запутался в ситуации.

Итак, на страницу заходит авторизованный пользователь, т.е. объект global $user содержит соответствующие пользователю свойства.
Путь, к которому обращается пользователь, имеет access callback, в котором я хочу проверить некоторое несистемное свойство объекта global $user. Несистемное в том смысле, что оно добавляется одним из моих модулей, храниться оно в БД в отдельной табличке. Теперь вопрос, где (в каком хуке) мне добавить это свойство к объекту global $user, чтобы в access callack-e оно было доступным.
hook_init не помогает, т.к., судя по всему, выполняется после access callback функции.

Вообще, немного плаваю в теме авторизации пользователя в друпале, буду благодарен за наводки на толковые статьи по теме.

Верстка темы и макетов под друпал 6||7

Прислано: Stutzer

чт, 20/01/2011 - 11:58

Другие статьи по теме:

Добрый день

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

Google Developer Day 2010

Прислано: Stutzer

ср, 10/11/2010 - 18:56

Другие статьи по теме:

Кто-нибудь собирается на Google Developer Day 2010 послезавтра?

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

Прислано: Stutzer

чт, 07/10/2010 - 18:38

Добрый вечер

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

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

Прислано: Stutzer

пт, 24/09/2010 - 04:28

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

Скажу сразу, это модуль для перфекционистов. Если в двух словах, то он позволяет аттачить к словарям, терминам и нодам псевдонимы, которые позже можно использовать для формирования адресов с помощью всеми любимого pathauto. Если термин имеет родителей, то с помощью токена [term-handy-alias-path] можно получить цепочку терминов по аналогии со стандартным токеном [termpath-raw]. Это решает проблемы с транслитерированными уродливыми адресами страниц и отображением структуры словаря в URL-е. Кроме этого, для заданных типов контента можно настроить добавление псевдо-расширения .html, но это уже для тех, кто знает толк в извращениях.

Ниже попробую изложить суть работы модуля в картинках и примерах.

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

Прислано: Stutzer

пт, 10/09/2010 - 00:35

Другие статьи по теме:

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

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

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

Прислано: Stutzer

пн, 23/08/2010 - 17:42

Другие статьи по теме:

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

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

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

Разработка небольшого сайта мед. тематики

Прислано: Stutzer

вс, 22/08/2010 - 02:11

Другие статьи по теме:

Добрый день

требуется создать сайт медицинской тематики со следующими ТТХ

Тема:

трехколоночная простая на основе basic. Дизайна минимум.

Структура:

Динамически разделы (доступны из праймари линкс):

  • новости
  • терапия
  • коинфекции
  • публикации
  • форум
  • ссылки
  • фак

Статические страницы (секондари линкс)

  • Команда сайта
  • Соглашение об использовании
  • Контакты

Типы контента:

  • Новость
  • Терапия
  • Коинфекция
  • Публикации
  • Топик форума
  • Ссылка
  • Вопрос+ответ

Все типы контента, за исключением ссылки, состоят из стандартных полей (заголовок + тело). Тип контента «ссылка» - название ссылки и url.

Категоризация:

Новости - свободное тэгирование с автокомплитом
Терапия, Коинфекция, Публикации — древовидный фиксированный список терминов

Адресация:

  • Для каждого раздела задается алиас раздела (например, coinfections).
  • К алиасу раздела прибавляется путь из алиасов терминов (например hepatitis/chronic)
  • Также алиас задается непосредственно для ноды, к которому автоматически приписывается псевдорасширение .html

Итого, при создании материала типа «Коинфекция» редактор должен задать только алиас для создаваемой ноды, после чего автоматически сформируется путь вида:
coinfections/hepatitis/chronic/article-name-in-latin.html

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

Прислано: Stutzer

пт, 13/08/2010 - 00: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

Прислано: Stutzer

пт, 09/07/2010 - 11: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 обработчике формы не работает

Прислано: Stutzer

вт, 22/06/2010 - 02: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);
 
    // Пытаемся вывести сообщение - не работает :(
    drupal_set_message('Some message');
  }
 
}

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

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

Прислано: Stutzer

вс, 04/04/2010 - 12:10

Другие статьи по теме:

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

Аннотация

Книга Drupal E-commerce with Ubercart 2.x Джорджа Пападонгонаса (George Papadongonas) и Яниса Доксраза (Yiannis Doxaras) ориентирована на владельцев интернет-магазинов и простых пользователей CMS Друпал без опыта программирования под этой платформой, которые хотят создать собственный интернет-магазин, а также освоить навыки его администрирования и подробно изучить все возможности, которые предоставляет данная система. Это первое издание о магазине Ubercart 2.x, предоставляющее исчерпывающую информацию о том, как без навыков программирования создать магазин по продаже как обычных товаров, так и файлов для скачивания, различного рода членств, билетов и прочих видов товаров.

RSS-материал

Новое на сайте

Ссылки партнёров