Alex_R: Блог

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

Мультиязычность.

29 июля 2012 в 10:23

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

Подскажите про views

25 июня 2012 в 18:36

Продолжаю разбираться с модулем views. Пытаюсь на странице ноды вывести блок и несколькими полями из профиля автора этой ноды. Блок создал, нужные поля выбрал, а как с нодой это связать не понимаю... Через "аргументы"? Через "Взаимосвязи"? Не вижу ничего подходящего для решения. Подскажите пожалуйста!

Подскажите как проще сделать такое автозаполнение заголовка?

24 июня 2012 в 0:27

При создании на сайте материала определенного типа заголовок должен формироваться автоматически в формате "Заказ №XXXXYYZZ", где:
XXXX подрядковый номер заказа за текущий месяц
YY номер месяца в году
ZZ две последние цифры года.

Подскажите модуль (или как это сделать?)

25 мая 2012 в 13:00

Пример того что должно получиться - большой квадрат справа на http://www.printing.com/
Если объяснять словами, то в блоке поочередно меняются несколько картинок, при наведении на картинку мышкой смена картинок прекращается, каждая картинка является ссылкой на страницу сайта (для каждой картинки ссылка своя). С помощью какого модуля это можно реализовать?

Проблемы с отправкой письма о создании нового материала администратору.

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

На самом деле вопросов два.
1.Требуется отправить админу письмо когда на сайте появляется новый материал. Попытался это сделать через "действия" и "триггеры". Всё работает, однако при попытке вставить в текст письма переменную %node_url (ссылку на вновь созданный документ) письмо перестает отправляться. Если вешаю данное действие на редактирование существующего документа то письмо приходит. Неужели Друпал пытается отправить письмо когда документ еще не сохранен и ссылки на него не существует? Как это обойти?

Почему это не работает?

25 февраля 2012 в 19:10

мультисайтинг на 2 сайта с модулем domain (т.е. БД общая).
таблица users_roles для каждого сайта своя для первого users_roles, для второго domain_2_users_roles
Цель присваивать на каждом сайте роль с rid = 4 новому пользователю сразу при создании учетной записи.

Создал свой модуль, назвал его startaddrole, в нем единственная функция, отрабатывающая хук user

<?php
function startaddrole_user($op, &$edit, &$account$category NULL){
  if (
$op=='insert'){
       
db_query'INSERT INTO users_roles (uid, rid) VALUES (%d, %d)',  $account->uid4);                                
       
db_query'INSERT INTO domain_2_users_roles (uid, rid) VALUES (%d, %d)'$account->uid4); 
   }
}
?>

Как правильно создать свое действие в модуле Rules? (можно удалить)

18 февраля 2012 в 13:27

Потребовалось добавить специфическое действие (мультисайтинг, таблица user_role для каждого сайта своя, необходимо добавлять роль пользователю, сразу на всех сайтах) сперва сделал новое действие редактированием файлов user.rules.inc и user.rules_forms.inc. Всё работает как надо, однако отлично понимаю, что это совсем не правильно, хочется сделать это отдельным модулем, тем более, что понимаю, что это не последнее специфическое действие, которое может потребоваться.

Форум и мультисайтинг

17 февраля 2012 в 1:04

Подскажите каким модулем можно регулировать видимость/доступность разделов форума в зависимости от сайта в мультисайтинге с общим контентом?

Domain Access помогите настроить и еще вопрос!

16 февраля 2012 в 17:18

Задача на первый взгляд простая:
Два сайта site1 и site2.
Общие пользователи. Одинаковый набор ролей, на каждом сайте пользователю могут быть присвоены свои роли. Одна из ролей (роль1) дает доступ к закрытому разделу форума.
Форум имеющий 5 разделов:
1. общий для обоих сайтов.
2. виден только на site1 всем.
3. виден только на site2 всем.
4. виден только на site1 имеющим роль1.
5. виден только на site2 имеющим роль1.

С мультисайтингом общаюсь уже давно, однако попытаться использовать модуль Domain Access решил только в этот раз впервые. Модуль понравился, только почему то работать не хочет Sad

поиск модуля для форума.

10 февраля 2012 в 17:31

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

Как получить дату последнего редактирования документа?

12 января 2012 в 18:01

Пишу фильтр и что то никак не могу найти где можно получить дату последнего редактирования (или создания, если редактирования не было) ноды или комментария. Фильтр должен обрабатывать документы только измененные (или созданные) после определенной даты. Что то уже все перепробовал - ничего не получается. Как правильно?

Как правильно определить наличие файла? (решено)

4 января 2012 в 13:58

Столкнулся с необходимостью определить существует файл или нет (файл может быть как локальным, так и на чужом сервере в интернете).
Сперва определяю локальный файл или по http...
С удаленными файлами делаю так:

<?php
   $Headers 
= @get_headers($img);
   if(!
preg_match("|200|"$Headers[0])) {
.....
?>

все отлично работает, а вот с локальными файлами возник полный затык. Sad
Сперва попытался пользоваться функцией ПХП file_exists - она у меня очень долго не хотела вообще ничего возвращать (возвращала пустую строку, хотя по логике должна возвращать вроде как TRUE/FALSE или 0/1), в итоге от нее добился получения "1" только при подстановке аргументом полного пути (пути начинающегося с "var\www\....") к существующему файлу, что не очень удобно. Кстати как из Друпала узнать путь от корня до установки Друпала?
Далее решил поискать в Друпале аналогичную функцию и нашел http://api.drupal.ru/api/function/check_file , однако с ней результаты еще более плачевные, в документации практически ничего не написано ни про что должно быть аргументом, ни что у нее на выходе, а опытным путем, что бы я не подставлял в виде пути на выходе всегда пустая строка. Как этой функцией пользоваться?
Дальше совсем интересно, стал экспериментировать с @fopen(.... ,"r") и что бы я не ставил первым аргументом никаких ошибок php не выдало... Ничего не понимаю Sad Может у меня что то с конфигурацией php или сервера не так? может в эту сторону копать надо? Подскажите пожалуйста.

фоновые рисунки. Поиск модуля.

7 октября 2011 в 13:12

Ищется удобный механизм для размещения и позиционирования пользователем некоторого количества фоновых рисунков на доступной ему для редактирования странице.
Пользователь должен иметь возможность:
1. входить в режим редактирования фона страницы.
2. выбирать изображения из списка доступных фоновых рисунков (добавлять новое изображение на страницу).
3. мышкой перетаскивать фоновые рисунки на нужное место изменяемой страницы.
4. сохранять изменения.
5. удалять со страницы ненужные фоновые изображения.

И еще раз про права доступа (поиск модуля)

28 февраля 2011 в 10:51

Уже собрался сам писать, но на всякий случай решил спросить (поскольку поиском ничего не нашлось). Требуется модуль, который бы создавал альтернативную друпаловской систему ограничения доступа к нодам, Который не использовал бы в своей работе таблицу node_access (которая является таблицей разрешений), а использовал бы свою, которая являлась бы таблицей запрещений. Т.е. если в таблице про ноду ничего не написано, то доступ есть всем, а если написано, то доступ для тех, для кого он прописан ограничен (соответсвенно просмотр/редактирование/удаление).
Для чего это надо я объяснял тут http://www.drupal.ru/node/58001 и тут http://www.drupal.ru/node/57889
Кстати, по логике, если все сделать правильно, данный модуль не должен конфликтовать со стандартной системой доступа, а их действия должны накладываться друг на друга.
Думаю, что в необходимости подобного функционала убеждался каждый, кто пытался при мультисайтинге сделать разграничение доступа к контенту по правам доступа (ноды общие, а таблица доступа для каждого сайта своя - со стандартной системой не работает). Уверен, что кто то нечто подобное делал, вопрос есть ли это оформленное в виде отдельного модуля?
Заранее спасибо!

Как пересоздать права доступа к отдельно взятой ноде?

25 февраля 2011 в 15:33

Как заставить систему, если у ноды не определены права доступа, их создать при попытке обращения к этой ноде?
Был вариант запустить функцию node_access_acquire_grants($node), но как я понимаю без доступа к ноде она не отрабатывает, а если права не определены, то доступ получается запрещен для всех кроме USER1... И где можно оформить ее вызов? Или есть другой вариант?
Заранее спасибо!

Мультисайтинг и права доступа.

23 февраля 2011 в 18:47

Помогите разобраться как правильно это сделать.
Имеем общий контент, доступ к которому определяется некоторым набором правил.
т.е. таблица node_access для каждого сайта своя.
После обновления прав доступа на всех сайтах, все работает как надо, до момента появления нового документа.
Когда на сайте создается новый документ сохраняется в общую базу и в базу этого сайта в таблицу node_access прописывается информация о доступе к данному документу - с этим все понятно. На сайте где документ был создан проблем не возникает.

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

Самому видится алгоритм действий примерно такой: На какое нибудь регулярно происходящее событие вешаем код который сравнивает максимальный NID в таблице нод и максимальный NID в таблице node_access и если они не совпадают то перестраиваем права в этом диапазоне. Но вот как это на Друпале оформить правильно пока темный лес. Sad Может кто подскажет, а то не хочется через прямые запросы к базам, когда есть АПИ. И на какое событие это вешать - не на открытие же любого документа?

В итоге вопросы:
1. Как узнать номер последней ноды?
2. Как узнать к какой последней ноде созданы права доступа?
3. Как создать права доступа к определенному диапазону нод?
4. На какое событие лучше всего повесить данный код?
5. Не лучше ли пойти другим путем? (каким?)

Поиск функции (решено)

23 февраля 2011 в 13:09

Что то никак не могу найти (или понять как самому написать)
Нужна функция на входе у которой UID и тип материала, а на выходе TRUE если данный пользователь может создавать материалы данного типа и FALSE если не может.
Заранее СПАСИБО!

Требуется нестандартное управление коментариями (Решено)

22 февраля 2011 в 12:40

Требуется чтобы пользователь мог добавлять новый комментарий к документу только при выполнении двух условий:
1. иметь право отправлять комментарии.
2. автор первоначального поста должен иметь право создавать документы данного типа. (это последствия мультисайтинга - документ может быть создан на другом сайте)

Если с первым условием все понятно, то как проверить второе пока совершенно не понял. попытался через Rules в связке с ACL, но что то не получается. Может кто подскажет как это сделать?

А есть ли возможность изменить текст письма при регистрации?

22 февраля 2011 в 1:36

В продолжение темы http://www.drupal.ru/node/57733
Появилась идея в регистрационном письме рассказать вновь зарегистрированному пользователю о его правах (на каждом из сайтов) . Данная информация будет собираться моим модулем со всех сайтов и формировать пояснительный текст. - с этим проблем не вижу. Вопрос - как этот текст присоединить к письму, отправляемому пользователю?

Присвоение ролей при регистрации и мультисайтинг

21 февраля 2011 в 1:00

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

Тупой вопрос про словарь таксономии.

19 февраля 2011 в 12:36

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

Подскажите по управлению пользователями (решено)

19 февраля 2011 в 7:12

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

Права доступа. Что я делаю не правильно?

17 февраля 2011 в 14:06

Попытался разобраться с установкой прав доступа к нодам и ничего не получилось Sad Хотелось бы понять в чем моя ошибка.

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

Изучив этот пример http://api.drupal.ru/api/file/developer/examples/node_access_example.mod...
написал свой код (взяв за основу код примера)

<?php
function mymodule_node_access_records($node) {
 if (
$node->type == 'page'||$node->type == 'news') {   //если тип материала не страница или новость, то уходим отсюда.
    
global $base_url ;
    
$grants = array();
    if (
$node->field_site[0][value] <> $base_url ) { // если другой сайт
      
if ($node->type == 'page' ) {                   // если страница то запрет просмотра.
        
$grants[] = array(
        
'realm' => 'test',
        
'gid' => TRUE,
        
'grant_view' => FALSE,
        
'grant_update' => FALSE,
        
'grant_delete' => FALSE,
        
'priority' => 0,
        );
     }ELSE{                                         
// если не страница, то запрет редактирования и удаления. 
        
$grants[] = array(
        
'realm' => 'test',
        
'gid' => TRUE,
        
'grant_view' => TRUE,?>

ссылки в BBcode (решено)

17 февраля 2011 в 1:09

Возникла необходимость доработать стандартный вывод ссылки в тексте формируемый bbcode [url=http://www.site.com/node/1]пример ссылки[/url] таким образом, что если ссылка на другую страницу этого сайта, чтобы она открывалась в этом же окне, а если на другой сайт,то в новом.

Как сделать подсчет просмотров картинки?

12 февраля 2011 в 19:11

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