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

Мой первый в жизни модуль для Друпал.

28 мая 2010 в 18:59

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

Этот модуль позволяет создавать связи между документами по взаимному согласию авторов документов и эти связи видны всем пользователям сайта.
В настройках модуля нужно указать для каких типов материалов возможно установить связь, а так же можно изменить заголовок раздела ссылок.
После настроек модуля зарегистрированные пользователи в чужих документах после контента видят "номер для связи с данным документом", а в своих документах помимо этого окно ввода такого номера для установления связи.
После этого автор документа с которым осуществлена попытка наладить связь в своем документе видит запрос на установление связи и имеет выбор "разрешить" или "запретить". Так же есть возможность запретить уже установленную связь (любой из сторон), а так же разрешить запрещенную Вами ранее связь. Повторные запросы на установление связей запрещены.
При входе пользователя на сайт, если у него есть ссылки ожидающие его подтверждение, ему показывается сообщение об этом, с предложением перейти на страницу со списком таких документов. Решение о установлении связей может принимать не только автор, а любой человек имеющий право редактировать данный документ, но уведомления при входе на сайт получает только автор.

(Решено)Как правильно сделать ссылки?

28 мая 2010 в 0:14

Честно понимаю, что в самом Друпале это повсеместно используется, но как реализовано в коде не нашел.
пишу:

Как разумнее хранить данные

27 мая 2010 в 22:49

Допустим к каждой ноде определенного типа нужно добавить несколько полей для своих данных
Я вижу два варианта:
1. Установить ССК. Тогда эти данные будут храниться вместе со всем контентом ноды.
2. Создать свой модуль и хранить эти данные в своей отдельной таблице связанной с нодой по nid.
Хотелось бы услышать мнение профи какой вариант и в каком случае предпочтителен.

register_globals включен (решено)

24 мая 2010 в 16:09

Честно сразу скажу, что с настройками PHP я не очень силен.
Столкнулся с неприятной ситуацией, на хостинге где планируется размещение сайта сделанного мной на Друпале этот параметр выставлен в "1" и Друпал на это естественно ругается. При выключении данного параметра в PHP.ini перестают работать старые сайты размещенные там, зато на Друпаловском сайте предупреждение об ошибке исчезает. Кто нибудь с подобной проблемой сталкивался? Какие есть варианты решения? Можно ли изменять этот параметр не в общем PHP.ini а в личных настройках сайта?
Всем заранее спасибо за ответы!

Как правильно изменить код после изменения в ТЗ? (решено)

23 мая 2010 в 15:42

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

Как проще всего реализовать подобный функционал?

20 мая 2010 в 17:15

Есть два разных типа материала, материал одного типа может ссылаться на материал(ы) другого типа. Если у материалов разные авторы, то связь между ними осуществляется по заявке (с любой стороны, по обоюдному согласию сторон). Какими средствами лучше всего организовать механизм заявок/подтверждений/отказов?
Объясняю на примере: На сайте есть раздел посвященный некому периодическому мероприятию (таких разделов много). По каждому мероприятию пишется основной официальный отчет (материал первого типа), На мероприятии присутствуют люди, которые ведут свои блоги в которые размещают свои отчеты с этого (и других) мероприятия (статьи/фотогалереи - материал(ы) второго типа). Далее автор подобного личного отчета должен иметь возможность подать заявку на включение ссылки на свой отчет в официальный отчет, а автор официального отчета должен рассмотреть заявку на включение этой ссылки в официальный отчет и сказать "да" или "нет", и наоборот, если автор личного отчета почему либо не подал такую заявку, то автор общего отчета может тоже подать заявку на установление связи с интересующим его документом и решение в таком случае принимает автор материала второго типа. Подача повторных заявок должна быть настраиваемой.
Что забить в поиск, чтобы найти нужное мне я не смог сообразить, на любой запрос выдает кучу всего не нужного Sad Вроде посидев неделю другую уже в силах и сам подобный модуль написать, но почему то мне кажется, что не надо огород городить и есть готовое, проверенное решение. Может кто подскажет?

Решено. Нужно сделать выборку из базы (Views?)

20 мая 2010 в 5:10

Задача:
1. получить выпадающий список пользователей от имени которых создан хотя бы один материал указанного типа.
2. Если пользователь, который запускает данный поиск отсутствует в списке, он должен быть в него включен.
3. Он же должен стать значением по умолчанию.

Думал, что задача достаточно просто решается с помощью views, однако не нашел в нем необходимого функционала. Может кто подскажет в какую сторону копать?
Заранее Спасибо!

ImageCache, наложение текста. Пара вопросов.

17 мая 2010 в 16:17

Есть тип материала - "Изображение", в нем одноименное поле, куда пользователь может загрузить картинку.
Сперва ставилось цель, чтобы при загрузке изображения на нее накладывалась надпись типа "© имя (логин) пользователя"
В настройке пресета ImageCache добавил действие "наложение текста", в поле "Текст" которого включив поддержку ПХП написал примерно следующее:

<?php
$p1 
explode("/"$image->source); 
$u1=user_load($p1[3]); // цифра 3 зависит от настроек пути у меня в этом месте UID.
return '© '.$u1->name;
?>

Все отлично работает, хотя вариант ИМХО скорее всего не самый лучший.
Однако возникла необходимость дать пользователю выбор ставить подпись или нет. В типе материала добавил поле (чекбокс) "ставить подпись" и... что с ним делать дальше не понимаю Sad Догадываюсь, что в тексте пресета нужно как то загрузить $node (Node_load() ?) Но как это сделать зная только путь и имя картинки загруженной ImageField, всякие варианты записи перепробовал и ничего не грузится Sad Может кто нибудь подскажет как правильно? Тогда и имя пользователя и положение чекбокса можно будет от туда брать.

Ну и второй вопрос: В настройках пресета можно задать цвет надписи, возможно ли этот выбор каким либо образом тоже дать пользователю при загрузке изображения?

Вопрос про file image to canvas (watermark)

15 мая 2010 в 16:31

Подключил и настроил ImageCache, добавил в нем водяные знаки - все работает просто отлично. Однако возникла необходимость привязать один из двух накладываемых водяных знаков к пользователю - т.е. чтобы у каждого пользователя был свой watermark и чтобы он при желании мог его менять у себя в профиле. Кто нибудь решал подобную задачу? Может поделитесь решением?

Очередной поиск модуля. В этот раз регистрация пользователей.

11 мая 2010 в 0:38

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

Есть ли такой модуль (вывод $submitted )?

10 мая 2010 в 3:02

Задача:
Друпал выводит эту строчку (если она включена в настройках темы) в формате "Опубликовано user в Чтв, 05/06/2010 - 01:13" Нужно, чтобы пользователь в своем профиле указывал свой пол и вместо "Опубликовано" вставлялось либо "Опубликовал", либо "Опубликовала" ну и чтобы с настройками вывода даты можно было поиграть....
Вроде понимаю как это сделать самому, но возможно не надо изобретать велосипед и есть готовое решение?

(решено)Как прочитать значение поле ССК?

9 мая 2010 в 13:30

Настраиваю модуль custom-breadcrumbs. Мне необходимо хлебные крошки для материала сделать зависимыми от значения поля ССК ноды. Т.е. пример: Есть тип материала "новость" у нее может быть атрибут "Архивное" (под это выделено соответствующее поле в ноде) Если материал не архивный, то к нему должна идти цепочка "Главная/Новости/Заголовок материала", а если материал архивный, то цепочка вида "Главная/Новости/Архив/Имя материала".
Как я понимаю нужно создать запись для каждой цепочки и в каждой их них в верхнем поле прописываем проверку типа
«if( Поле ССК == "Архивное." ):
return true;
endif;»

Что в этом тексте должно быть написано вместо "Поле ССК"? как правильно обращаться к полю если известно, что маркером-заменителем этого поля для нижних двух окон ввода (заголовки и пути) является [field_archiv-raw] ?
Вроде вопрос совершенно тупой, но что то ничего не получается Sad

Странный глюк во views с полем "Таксономия- все термины".

8 мая 2010 в 16:34

Во views добавил в вывод поле "Таксономия - все термины" пытаюсь его обрезать до определенной длины, в настройках ставлю галку "Установить для этого поля максимальную длину"
и какую бы длину я в открывшейся вкладке не указал (хоть 1 символ) поле все равно показывается полностью. Sad
остальные параметры в этой вкладке тоже не работают ("Trim only on a word boundary" , "Добавить многоточие", "Поле может содержать HTML" )

Насколько это реально в Друпал?

8 мая 2010 в 13:45

Тип материала с двумя полями ССК:
1. Картинка.
2. Скрытый Чекбокс с автозаполнением.

Чекбокс дает "Истину" если у картинки ширина больше высоты и "Ложь", если равно и наоборот.

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

Ссылка "Читать далее"

7 мая 2010 в 17:47

Пытаюсь сделать красивый вывод анонсов и ничего не получается. Sad
С помощью views сделал вывод:
Стиль - "Без форматирования"
Стиль строки - "Поля"

Вывожу поля "Материал-заголовок", "Материал -Фото" (поле ССК) и "Матреиал -Аннотация".

В поле "Материал - Аннотация" пришлось средствами views сделать обрезку до 160 символов, потому как в Друпале в "настройках публикации" минимально можно установить 200, а мне это много. Но это к моему вопросу скорее всего не относится.

При таком выводе выводится только аннотация, а ссылки "читать далее" просто нет. Сделать ее (например из повторного вывода поля "Материал - Заголовок" проблем не вызывает, но как сделать, чтобы она показывалась, только в том случае когда анонс меньше, чем содержимое?

И второй самый главный вопрос - как сделать, чтобы это поле выводилось не с новой строки, а сразу после текста анонса?

Подскажите модуль случайных картинок.

5 мая 2010 в 16:59

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

(решено) Синтаксические ошибки в стабильных модулях. :(

4 мая 2010 в 10:50

На новом хостинге некоторые модули, которые никогда никаких вопросов не вызывали стали выдавать синтаксические ошибки.
Например у модуля live_translation при попытке обновления перевода выдает:
Fatal error: Call to undefined function: file_put_contents() in /home/www/......./sites/all/modules/live_translation/live_translation.update.inc on line 61

При попытке подключения модуля imageset сразу выдает:
Parse error: syntax error, unexpected '=', expecting ')' in /home/www/........../sites/all/modules/imageset/imageset.inc on line 365

Еще несколько модулей выдавали аналогичные ошибки. Пока без ошибок нормально заработали только модули ядра + FCK и IMCE.
При этом на локале и других хостингах эта же сборка работает без всяких ошибок. Что это может быть?
Мои версии:
1. У меня на локале и на других хостингах PHP 5.2.6, а на новом хостинге php 4.4.4-8+etch6. Но вроде как в Друпале написано "Drupal requires a web server, PHP 4 (4.3.5 or greater) or PHP 5" и по идее все модули должны придерживаться этих требований, если у них другое в реадми не прописано...
2. Вирус?
3. ????
Вообщем, весь я в непонятках. Поменять версию PHP на этом хостинге я сам не могу - надо просить администратора, и предварительно хотелось бы быть уверенным, что это поможет решить проблему. Кто нибудь с подобным сталкивался?

Странные глюки с переносом сайта.

1 мая 2010 в 12:42

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

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

Вопрос про красивый вывод текста.

23 апреля 2010 в 13:37

Посмотрел много материалов по теме типографики на этом сайте и понял, что не все в этом деле хорошо (правда все материалы 1,5 и более летней давности - может что с той поры изменилось?)

(решено) Посоветуйте заглушку для старых браузеров (Было "Внезапно перестал работать IMCE")

21 апреля 2010 в 17:01

Вроде на сайте в настройках касающихся работы IMCE ничего не менял и ни с того ни с сего он перестал работать.
Работает он в связке с FCK. В окошке загрузки изображений FCK кнопка "посмотреть на сервере" есть. Окно IMCE открывается, но в нем из верхнего меню осталось только "помощь", предпросмотр картинок не работает, передать картинку в FCK невозможно.

Попробовал отключить IMCE, удалил, почистил кэш, подключил заново - все настройки IMCE сбросились на настройки по умолчанию - результата это не дало Sad Даже не знаю в какую сторону еще смотреть.
Если кто с таким сталкивался и решил проблему - подскажите пожалуйста!

UPD: Решено, конфликт вызывает подключение модуля ie6update ... Вот уж чего не ожидал...
А кто какие модули использует, для того, чтобы закрыть доступ к сайту пользователям с очень старыми браузерами, в которых сайт отображается некорректно?