Mr.Alinaki@drupal.org: Блог

Главные вкладки

Entity Wrapper возвращает пустые коллекции полей

9 августа 2014 в 1:29

Есть документ "Поступление товаров" с коллекциями полей (тяжеловато, но что делать) для каждого элемента. Сохраняем, а через hook_node_presave копируем товары на склад. Начало обнадёживает:

...
$inflow = entity_metadata_wrapper('node', $inflow_node);
$warehouse = entity_metadata_wrapper('node', $inflow->field_warehouse->value());

Проверяем, есть ли вообще товары на складе и прочая бла-бла-бла. Переходим к переносу. И тут начинается прекрасное:
foreach($inflow->field_goods_collection->getIterator() as $delta => $fc)
не работает! Потому что значения пустые и никакого итератора, стало быть, нет!

При этом старый добрый не-объектный способ:
foreach($inflow_node->field_goods_collection[LANGUAGE_NONE] as $delta => $fc)
работает, как ни в чём не бывало.

Изменение типа поля с integer на decimal

5 июля 2014 в 16:07

Добрый день!

Из-за недопонимания при разработке системы складского учёта, поле "Количество товара" я сделал целым. В процессе работы оказалось, что списание топлива и иных жидкостей происходит долями литра. Встал вопрос о смене типа поля на десятичное.

Я наткнулся на ответ на stackexchange: http://drupal.stackexchange.com/questions/79378/changing-a-field-type-fr...

Там рекомендовали использовать db_change_field совместно с десериализацией существующих настроек, внесением нужных изменений, и сериализацией с сохранением в базу. Собственно, кусок кода:
<?php?>

Новые комментарии и постраничная разбивка

13 декабря 2011 в 15:15

Всем добрый день! Собственно, я сразу перейду к делу.
На сайтах сообществ регулярно возникает проблема следующего рода: число комментариев к посту часто разрастается до 700 и более. Начинается проблема с быстродействием рендеринга (выцепить из базы даже 1000 комментариев - не проблема). Пока Отработают все хуки, шаблоны и фильтры... Эту проблему замечательно может решить постраничная разбивка, комментариев по 200-300. Она отлично работает даже на древовидных комментариях, но возникает проблема: Drupal считает новые комментарии для всего поста сразу, т.е. если часть новых комментариев на одной странице, а часть - на другой, то пользователь, зайдя на вторую страницу с первой, потеряет все метки новых комментариев.

Решал ли кто-нибудь подобную проблему? Есть ли смысл хранить метки новых комментариев в сессии пользователя и расставлять их скриптом на стороне клиента, или это глупо?

Всем спасибо!

Разное вкусное для Organic Groups

9 декабря 2009 в 15:37

Как и обещал, выкладываю парочку своих модулей для Organic Groups. Модули можно назвать альфа-версиями, косяки в основном в строках перевода - я не обёртывал в t(), не до того пока Smile

Философия Drupal

3 декабря 2009 в 22:04

Добрый вечер. Собственно, почему я создал такую странную тему... Просто по прошествии почти года работы с движком, ковырянии где только можно, я так и не смог понять нескольких основополагающих вещей в Drupal. Как минимум, одна из них - почему такой сильный упор делается на базу данных. Собственно, есть ли где материалы, объясняющие основополагающие вещи в друпал, не КАК оно работает, а ПОЧЕМУ именно так? Спасибо.

Разбивка комментариев на страницы и связанные с этим проблемы

28 сентября 2009 в 19:53

Всем добрый вечер.

Есть ли решение такой проблемы: комментарии разбиваются на страницы, но, естественно, ссылка вида http://сервер/node/3120#comment-20334 не работает, если комментарий располагается на второй(3,4,5... и.т.д.) странице. Я где-то видел патч ядра, подходящий под это описание, но когда понадобилось, найти не смог...

Taxonomy, Pathauto и логические операции

22 сентября 2009 в 22:39

Всем добрый вечер. Меня сильно волнует такой вопрос...

В Drupal классно реализована фильтрация по терминам таксономии. Пишешь блабла/taxonomy/term1,term2 и получаешь фильтрацию (AND), пишешь блабла/taxonomy/term1+term2 - получаешь объединение (OR). А что делать, если у меня урлы переписываются как блабла/tag/тег? Я так понимаю, реализовать логику на таких урлах нереально и придется использовать стандартные и на крайний случай url_alter, или все же нет?

Заранее спасибо.

Мультисайтинг с общими пользователями, частично общим контентом и Organic Groups.

15 сентября 2009 в 20:24

Хотел посоветоваться с людьми, которые имеют работающий мультисайтинг на своих проектах.
Моя задача состоит в том, чтобы при работающих Organic Groups (к слову, практика показывает, что пользователи их принимают с трудом... но сейчас не об этом) разделить контент сайта между доменами а пользователей оставить общими. Реализация single sign-on у нас своя.

Много прочитав мануалов и инструкций, я пришел к выводу, что самым удобным вариантом будет просто добавить домен в связку, а в settings.php для этого домена, в $conf, указать тему, главную страницу и прочие настройки для данного сайта. Все входящие и исходящие ссылки предварительно прогонять через url_alter (аналог custom_url_rewrite), естественно, кешируя пути.

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

Locale gettext patch. Прошу информации.

12 сентября 2009 в 23:46

Когда-то где-то проскакивал патч системы локализации Drupal'а для работы полностью через gettext. Но не могу найти, где и как... Может, кто-нибудь помнит?

P.S. Я совершенно не принимаю друпальное "все в базе данных". Это не укладывается в мою систему мира, поэтому прошу апологетов "локализации в базе данных" не холиварить Smile

BUEditor. Замена.

2 сентября 2009 в 16:14

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

Хотел бы посоветоваться вот по какому вопросу.
Считаю, что редакторы вроде BUEditor довольно удобны, при этом, не позволяют пользователям засирать сайт лишним форматированием. Но!

BUEditor для Drupal - ужасен!

Он перехватывает фокус у формы ввода, он мешает автокомплиту, он срёт в код страницы некешируемым и абсолютно ненужным JS (из-за чего использование сайта в IE становится мукой).

Не могу удалить роль

23 июля 2009 в 17:21

Вопрос, видимо. к гуру: не могу удалить роль пользователя. При щелчке на Удалить страница просто перезагружается и все. Кто-нибудь может подсказать, как это отловить и исправить? Drupal 6.12

Уникальная RSS-лента для пользователя

20 июля 2009 в 15:02

Собственно, на http://rupor.sampo.ru/ журнал пользователя (сообщения в группах, к которым он подключен) строится для каждого пользователя независимо. Стандартный RSS-фид во вьюсах очень странно на это реагирует... Можно ли как-то создавать фиды, которые будут это учитывать? Ставить какой-нибудь sessid или что-то вроде того?

JavaScript + Google Analitycs + Timeout

7 июля 2009 в 16:09

Всем добрый день. Возникла интересная проблема...

Внутри своей локальной сети мы разрешили пользователям, у которых нет доступа в интернет, пользоваться местным ресурсом - http://rupor.sampo.ru/

Естественно, возникла проблема: если у человека нет доступа в интернет, то код аналитикса бьется до системного таймаута в минуту, пока не забьет на попытки. И ни один скрипт, который должен сработать при полной загрузке страницы не загружается. Можно ли как-то это отловить? Поставить таймаут или еще чего?

Рупор. Городской громкоговоритель.

3 июля 2009 в 21:40

Официальный форум-сообщество компании Сампо.ру. Мы наконец-то открыли его Smile Встречайте - http://rupor.sampo.ru/. Комментарии смогу дать позднее. Мы старались Smile

Upd. топик на хабре: http://habrahabr.ru/blogs/i_am_advertising/65026/

Validation error при загрузке файла неверного формата [Решено]

2 июля 2009 в 17:47

Собственно, проблема в том, что при загрузке файла с неверным расширением выдается не милое предупреждение о том, что файл превышает какой-то размер, а "Validation error блаблабла", естественно, при этом скрывается форма загрузки и ничего уже не сделать. Догадываюсь, что проблема где-то в настройках PHP может быть, но что-то ничего в голову не лезет... Кто-нибудь сталкивался? Например, на этом ресурсе все в порядке...

JS Registry. Как заставить его работать?

29 мая 2009 в 16:49

Добрый день.

Откопал в модулях полезняшку под названием JS Alter, один из сопутствующих модулей - JS Registry, который позволяет подменять как системные JS-файлы, так и JS-файлы модулей. Вот только при попытке что-либо заменить не происходит ничего. Я пытался подменять как системные файлы, пихая замены в sites/all/misc, так и файл модуля Watcher, пихая замену в sites/all/misc/module_override/watcher/watcher.js. Ничего не помогло. МОжет, кто-нибудь пробовал?

Сортировка групп

24 апреля 2009 в 3:08

Я не знаю, известно ли это всем или нет, но для меня стало открытием.
Так как модуль OG до сих пор не предоставляет средства сортировки групп в списке на странице создания материала, я пытался в него их внедрить. В процессе разработки случайно обнаружил, что если поставить пробел перед названием группы, то он влияет на выборку из базы, но при выводе в шаблон - тримается. Я был слегка в шоке, но очень надеюсь, что этот "баг" не поправят, иначе останемся без единственного способа сортировки групп.

BUEditor - загрузка картинок

7 апреля 2009 в 12:46

Добрый день. У меня в процессе разработки возник такой вопрос: не писал ли кто-нибудь для BUEditor'а кнопку добавления изображения с непосредственной загрузкой на сайт? Далеко не всем пользователям можно объяснить, что сначала картинку надо загрузить, потом скопировать ссылку и т.д... IMCE не подходит. В идеале конечно пропустить загруженное через Imagecache, но для начала хотелось бы наводки, как прикрутить простую загрузку на первое время Smile

Голосование за разные типы контента приносит User Points разных категорий

2 апреля 2009 в 16:06

Модуль User Points позволяет начислять очки пользователям в разные группы очков используя таксономию. Я пытаюсь сделать категории Рейтинг и Карма, причем очки типа Карма должны начисляться только если другие пользователи голосуют за профиль пользователя (профиль пользователя - отдельный тип контента, созданный модулем Content Profile). В топике Доработал модуль User Points Voting API я писал, как начислять очки авторам контента при голосовании за их топики. Кто-нибудь может помочь с модификацией модуля так, чтобы реализовать указанное выше поведение? Я это вижу так:
Тип_контента_1
Очки автору
Очки голосующему
Тип_контента_2
Очки автору
Очки голосующему

Типы контента должны браться из модуля голосования (в моем случае это Extra Voting Points, хотя ничего не мешает использовать Vote Up Down).

Доработал модуль User Points Voting API

28 марта 2009 в 18:39

Есть такой модуль, User Points Voting API. Он позволяет давать очки за оценку материалов голосующему.
Мне такой подход немного не понравился, т.к. давать очки за действия конечно неплохо, но еще лучше поощрять автора. Немного покопавшить на страницах, посвященных модулю (конкретно тут http://drupal.org/node/317585)и чуток дописав его я получил следующий функционал:
Очки по умолчанию начисляются автору. Причем, если ноде была поставлена отрицательная оценка, то очки у автора отнимаются.
Если выбрано, то добавляются очки и голосующему. Всегда положительные, независимо от оценки ноды.
Отмена голосов ведет за собой потерю набранных очков и у автора, и у голосующего. Если было произведено переголосование, то очки, соответственно, считаются верно. (Например, я проголосовал за ноду, и у нее стало +1. Если я отменяю свой голос - то у ноды 0, если же я переголосовал, поставив ноде минус, то у нее -1. Соответственно и с очками пользователей.)
Модуль приложен к сообщению. Сейчас я его активно тестирую, если все будет нормально - то отправлю патч автору, там подобное предложение проскакивало.

Extra Voting Forms vs. остальное

28 марта 2009 в 14:18

Из всего многообразия модулей для голосования мною был выбран Extra Voting Forms за богатство настроек и отсутствие лишних неработающих вещей (как, например, в Vote Up/Down). Да и он более-менее развивается, несмотря на уход merc'а

У меня есть такие вопросы, вдруг кто-нибудь занимался ими.

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