AnNik: Блог

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

Загрузка аватарок через /tmp - баг или фича? [решено]

23 июня 2010 в 7:47

На новом хостинге столкнулся с тем, что упорно не хотят грузиться аватарки. При загрузке выдается сообщение "Указанный файл pict.jpg не может быть загружен. Разрешены только JPEG, PNG и GIF изображения."

В логах при этом наблюдается следующее:
---
is_file() [function.is-file]: open_basedir restriction in effect. File(/tmp/php6JVfAe) is not within the allowed path(s): (/path/to/user/homedir:.) в файле /path/to/user/homedir/public_html/site.ru/includes/image.inc в строке 117.
---

При детальном разборе ситуации оказалось, что у хостера прописан open_basedir (/path/to/user/homedir:.), а Друпал упорно пытается загружать аватарки через папочку /tmp в корне сервера. Никакие ухищрения с настройками временной папки в admin/settings/file-system не помогли, прописывал туда и /tmp, и tmp (без слеша), и /path/to/user/homedir/public_html/site.ru/tmp - все бесполезно, друпал упорно пытается грузить аватарки именно через /tmp в корне сервера...
При этом через upload и через imce файлы загружаются нормально.

Вопрос, собственно, в сабже: что это, баг или фича? И что сейчас делать? Крайне маловероятно, что хостер согласиться открыть /tmp в корне сервера, убрать open_basedir и т.п...
PS. Сменить хостера и хакать ядро Друпала не предлагать;)

Ошибки в CCK [решено]

17 июня 2010 в 8:06

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

user warning: Table 'content_type_mynodetype' already exists query: CREATE TABLE bd.content_type_mynodetype ( `vid` INT unsigned NOT NULL DEFAULT 0, `nid` INT unsigned NOT NULL DEFAULT 0, PRIMARY KEY (vid), INDEX nid (nid) ) /*!40100 DEFAULT CHARACTER SET UTF8 */ in /************/includes/database.inc on line 550.
user warning: Table 'content_type_mynodetype' already exists query: CREATE TABLE bd.content_type_mynodetype ( `vid` INT unsigned NOT NULL DEFAULT 0, `nid` INT unsigned NOT NULL DEFAULT 0, `field_time_value` LONGTEXT DEFAULT NULL, PRIMARY KEY (vid), INDEX nid (nid) ) /*!40100 DEFAULT CHARACTER SET UTF8 */ in /*********/includes/database.inc on line 550.

Поля тем не менее вроде как добавляются, при создании/редактировании ноды они видны, их можно заполнить, введенные значения видны при предпросмотре, однако при сохранении ноды вновь вылетает ошибка:

warning: Invalid argument supplied for foreach() in /**********/sites/all/modules/cck/content.module on line 1022.

и введенные значения полей не сохраняются в базе...
Куда копать? :oO:

Поля-картинки в профиле пользователя

10 июня 2010 в 15:09

Дамы и господа, подскажите пожалуйста, существует ли в природе модуль, позволяющий добавлять в профиль пользователя дополнительные поля типа "картинка", причем выбирать эти картинки чтобы можно было из папочки на сервере (путь к которой задавать в настройках поля)?

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

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

Типы файлов для аватарок - где настраиваются?

9 июня 2010 в 7:14

Подскажите плз, никак не могу найти, где настраиваются разрешенные расширения для файлов аватарок.
Почему-то с недавнего времени стало ругаться при загрузке .jpg, .jpeg, говорит, можно, а .jpg - низзя...

Несколько строк дополнительных полей - как сделать? [решено]

30 мая 2010 в 13:36

Хотелось бы к ноде подцепить нечто типа таблички с переменным количеством строк.
Например так: нода - описание продукта; дополнительные поля - разные причиндалы.
К примеру так:

Нода: Агрегат1 (название, описание, фото и т.п.)
Дополнительные причиндалы агрегата1 (Название, Количество, Цена):
Название:Винтик Количество:2 Цена:10
Название:Шпунтик Количество:5 Цена:20

Нода: Агрегат2 (название, описание, фото и т.п.)
Дополнительные причиндалы агрегата2 (Название, Количество, Цена):
Название:Гайка Количество:2 Цена:10
Название:Болтик Количество:5 Цена:20
Название:Шайба Количество:10 Цена:3
Название:Затычка Количество:4 Цена:33

То есть к каждой ноде хотелось бы прицепить дополнительные поля, причем у каждой ноды может быть разное количество строк этих полей (табличка с разным количеством строк).
При этом надо, чтобы при создании/редактировании ноды можно было бы добавлять/удалять эти дополнительные строки в любом количестве, в том же экране. Что-то аналогичное тому, как добавляются/убираются опции опроса в модуле poll.
Возможно ли такое сделать через CCK? Если нет, то подскажите плз модуль, дающий такую возможность.

Можно ли сделать 2 крона на одном сайте?

27 мая 2010 в 7:48

Хотелось бы, чтобы какие-то функции выполнялись по крону, скажем, каждый час, а какие-то - раз в сутки.
Такое возможно реализовать?
Соорудить в рамках Друпала какой-нибудь cron2.php и навесить на него некоторые hook_cron2?

Подскажите антиспам-модуль...

11 мая 2010 в 11:20

...от которого требуется примерно следующее:
- чтобы ссылки в нодах и комментах могли оставлять только пользователи, зарегистрировавшиеся не менее D дней назад и написавшие не менее N нод и/или С комментов;
- чтобы пользоваться личкой (модуль privatemsg) тоже могли бы только пользователи, зарегистрировавшиеся не менее D дней назад и написавшие не менее N нод и/или С комментов.
Или может это как-то можно реализовать через настройки, а я этого в упор не вижу?

Существует ли модуль транслитерации?

29 апреля 2010 в 13:55

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

Модули голосования

28 апреля 2010 в 12:57

Дамы и господа, подскажите плз модуль голосования, который бы:
- позволял выбрать несколько вариантов ответов;
- позволял бы одновременно иметь несколько активных опросов;
- желательно, но не обязательно - позволял бы цеплять каждый из вышеупомянутых опросов к конкретной ноде.

Проблемка с /taxonomy/term/1/all

17 апреля 2010 в 0:20

Меню на сайте имеет такую структуру:
Пункт 1 -- /taxonomy/term/1/all
- Подпункт 1.1 -- /taxonomy/term/11
- Подпункт 1.2 -- /taxonomy/term/12
Пункт 2 -- /taxonomy/term/2/all
- Подпункт 2.1 -- /taxonomy/term/21
- Подпункт 2.2 -- /taxonomy/term/22

где термины 11, 12 - дочерние для 1; 21, 22 - дочерние для 2.

Вывести сообщения пользователя: и так, и сяк, и эдак...

7 марта 2010 в 21:43

Надо выводить сообщения пользователя в разных разрезах. Как минимум:
- вообще все сообщения, независимо от типа материала (и blog, и page, и собственные, нестандартные типы - чтобы все шло подряд);
- сообщения пользователя, относящиеся к определенному термину таксономии (например, чтобы при входе на taxonomy/term/5 были кнопочки: "Все сообщения" и "Мои сообщения").
Подскажите плз модуль, позволяющий сделать такое (или может даже можно как-то исхитриться сделать это в ядре?)

Показывать блок на определенных страницах...[решено, но...]

28 января 2010 в 22:03

Неожиданно столкнулся с такой, казалось бы, детской проблемкой...
Надо, чтобы некоторый блок показывался бы только на одной-единственной странице: taxonomy/term/5, к примеру.

Иду в настройку блока, ставлю крыжик "Показывать только на перечисленных страницах.", в поле "Страницы:" пишу
taxonomy/term/5

... и блок выводится не только на taxonomy/term/5, но и на всех taxonomy/term/5?page=ххх, чего мне ну совсем не надо...

Что я делаю не так?

PS. Понятно, что можно пойти путем "Показать, если данный PHP-код возвращает TRUE", но крайне не хочется...

Тюним Tracker

16 января 2010 в 13:42

Tracker - модулек малюсенький, но тяжеленный...
Даже в исходном коде видим комментик:
// TODO: These queries are very expensive, see http://drupal.org/node/105639

У меня Tracker начал ронять базу на неслабом дедике при таких объемах: около 10 тысяч юзеров, чуть больше 100тыс нод и 500тыс комментов.
Шаманство над my.cnf помогало весьма слабо... Пришлось покопаться в коде и поколдовать над запросами.

Мультисайтинг - как добиться, чтобы пользователи переходили с сайта на сайт без авторизации на каждом?

26 декабря 2009 в 8:16

Собственно сабж...

Структура такая:
site.ru - основной сайт
sub.site.ru - поддомен основного сайта
site2.ru - второй сайт

Общие таблицы:
"access"
"authmap"
"filters"
"filter_formats"
"languages"
"locales_source"
"locales_target"
"permission"
"pm_block_user"
"pm_index"
"pm_message"
"pm_tags"
"pm_tags_index"
"profile_fields"
"profile_values"
"role"
"sessions"
"sequences"
"smileys"
"users"

При переходе с site.ru на sub.site.ru и обратно - никаких проблем, авторизовавшись на одном из сайтов, пользователь автоматически становится авторизован и на втором.
А вот чтобы то же самое работало при переходе с site.ru на site2.ru и обратно, никак не могу добиться...
$cookie_domain на втором сайте ставил и site.ru, и site2.ru, ни так, ни так не работает...
Подозреваю, что упустил в настройках site2.ru какую-то сущую мелочь, но что именно? Никак не соображу... Наведите плз на мыслю...

Разный дизайн для разных разделов сайта

22 ноября 2009 в 10:25

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

Под разным дизайном понимается либо различные темы оформления либо, что было бы предпочтительнее, в одной и той же теме, т.е. при одних и тех же *.tpl, подключать различные style.css и логотипы.

Возможно ли сделать УРЛы вида http://site.ru/page/

12 ноября 2009 в 13:04

Именно так, со слешем в конце?
Собираюсь перевести парочку проектов с самописа на Друпал, и хочется сохранить УРЛы, которые на тех сайтах сейчас именно такие.

Как удалить все материалы пользователя? [решено]

12 ноября 2009 в 12:01

Дамы и господа, подскажите плз, есть ли возможность "одним кликом" удалить все материалы (ноды, комменты) определенного пользователя?
Еще хорошо бы, чтобы тем же кликом он сразу бы блокировался:)
Спамеров развелось в последнее время...

Как выделить избранных?:)

5 августа 2009 в 13:14

У каждого сообщения и комментария стандартно выводится его автор, примерно так:

ср., 05/08/2009 - 14:04 — Юзер-Такой-То

Хотелось бы, чтобы у пользователей с определенной ролью (модераторов, например) эта подпись как-то отличалась бы от других. Ну например, цветом, или добавлялось бы что-то типа "Юзер-Такой-То - модератор!"

Есть ли такая возможность? (стандартными средствами или простенький готовый модулек)

Как прикрепить комментарий?

29 июля 2009 в 13:23

И возможно ли это вообще? (стандартными средствами, или может есть модулек для этого?)
Ноду - понятно, есть крыжик "закреплять вверху списков".
А есть ли такая возможность для комментов, чтобы некоторый комментарий всегда шел первым, сразу после текста ноды, и чтоб не уходил вниз в блоке "Последние комментарии"?

Как проверить целостность БД?

14 июля 2009 в 10:17

Есть ли модуль, реализующий сабж?

Речь конечно не о check table:)
Случались несколько раз падения БД, и есть подозрения, что в результате целостность данных нарушена.
Столкнулся, например, с тем, что для нескольких nid строки в таблице node есть, а в node_revisions пусто.
Находил и "висячие" комменты, т.е. comments.nid указывает на несуществующую (удаленную) ноду.
И т.п.

Есть ли модуль, выполняющий подобные проверки хоты бы для основных таблиц ядра?

Как сделать закрытый раздел сайта?

10 июля 2009 в 6:51

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

Как это реализовать?

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

Как оптимизировать / разделить /files ?

9 июля 2009 в 8:33

На одном из сайтов начала всерьез напрягать проблема с папкой /files
Что в ней имеем:
1. Большое количество (уже несколько тысяч) файлов, загруженных пользователями, в основном фотки;
2. Модуль IMCE, который в /files же создает подпапки пользователей /uNNNN, коих тоже уже порядка 5000.
В результате - страшные тормоза, особенно при работе с IMCE под админовскими правами (когда видно все).

Кто сталкивался с подобным, как можно решить проблему?

Вижу пока 2 варианта, но не представляю, как их реализовать, не влазя в код ядра и модуля:
- Как-то заставить ядро (модуль Upload) группировать файлы, загруженные пользователями, по подпапкам, например запихивать их в те же подпапки IMCE;
- Заставить IMCE делать многоуровневую структуру папок, например /uNNN/uMMM, где NNN - первые цифры ID пользователя, MMM - последние.

Кроме того, может кто подскажет, какие настройки сервера могут помочь, хотя бы временно, оптимизировать, ускорить работу с такими огромными папками? (имеем FreeBSD6 32бит, Apache2, Nginx, PHP5)

Гибкое управление пользователями - подскажите плз модуль

5 июля 2009 в 13:49

Нужна возможность сделать систему "поощрения и наказания" пользователей.
Требуется следующий функционал:
- перечень "хороших дел" и "нарушений" (настраивается админом сайта), каждое "стоит" сколько-то призовых или штрафных баллов;
- раздавать "призы" и "штрафы" имеют право пользователи со специальной ролью (модераторы);

Баг в privatemsg

3 мая 2009 в 19:53

Натолкнулся только что:
privatemsg-6.x-1.0-rc2
privatemsg_filter.module
строка 205
  $sql = 'SELECT DISTINCT pm.author, u.name FROM {pm_message} pm INNER JOIN pm_index pmi ON pm.mid = pmi.mid INNER JOIN {users} u ON pm.author = u.uid WHERE pmi.uid = %d AND u.uid > 0 ORDER BY u.name';
pm_index не заключено в фигурные скобки, из-за этого у меня полезли ошибки в мультисайтинге.