Помогите пожалуйста! Скажите как сделать так, что бы на сайте пользователи могли подписываться друг на друга. Например я подписался на "Васю" и на главной странице во views вижу только материалы опубликованные пользователем "Вася".
Возможно, есть какие-то модули, но это вам в поиск на drupal.org.
Такой вариант могу предложить - добавляете к пользователю поле типа entityt reference, настраиваете так, чтобы можно было добавлять в поле только юзеров. Разрешаете добавлять неограниченное количество значений в поле.
Вьюху делаете так - вьюс по юзерам. контекстный фильтр по uid, значение по умолчанию - uid текущего юзера. Далее добавляете отношения 1. Отношение юзер - юзер через поле, которое я описал выше. 2. Отношение юзер - созданная им нода. Для второго отношения используйте первое.
Возможно, есть какие-то модули, но это вам в поиск на drupal.org.
Такой вариант могу предложить - добавляете к пользователю поле типа entityt reference, настраиваете так, чтобы можно было добавлять в поле только юзеров. Разрешаете добавлять неограниченное количество значений в поле.
Вьюху делаете так - вьюс по юзерам. контекстный фильтр по uid, значение по умолчанию - uid текущего юзера. Далее добавляете отношения 1. Отношение юзер - юзер через поле, которое я описал выше. 2. Отношение юзер - созданная им нода. Для второго отношения используйте первое.
Спасибо большое! Так и сделаю! Только скажите пожалуйста, как узнать uid пользователя на странице которого мы находимся?
Нашел вот такое:
global $user;
$files = file_scan_directory('public://images/', '/.*/');
ksort($files);
foreach ($files as $image) {
$file = new StdClass();
$file->uid = $user->uid;
$file->uri = $image->uri;
$file->filename = basename($file->uri);
$file->filemime = file_get_mimetype($file->uri);
$file = file_copy($file, file_default_scheme() . '://image');
if (!empty($file)) {
$node = node_load($nid);
$node->field_image[LANGUAGE_NONE][] = (array)$file;
node_save($node);
}
}
Только как мне кажется у меня вместо всего этого:
$files = file_scan_directory('public://images/', '/.*/');
ksort($files);
foreach ($files as $image) {
$file = new StdClass();
$file->uid = $user->uid;
$file->uri = $image->uri;
$file->filename = basename($file->uri);
$file->filemime = file_get_mimetype($file->uri);
$file = file_copy($file, file_default_scheme() . '://image');
Должна быть переменная для вывода uid-а пользователя.
А вот это:
$node = node_load($nid);
$node->field_image[LANGUAGE_NONE][] = (array)$file;
node_save($node);
Поля в ноде? А мне надо вывести поля в профайле?
И еще как сделать что бы каждый uid записывался в отдельном поле (количество значений не ограничено)?
Только скажите пожалуйста, как узнать uid пользователя на странице которого мы находимся?
А вам это для чего нужно? для контекстного фильтра во views? Так там есть возможность выбрать uid текущего юзера.
Код выше никакого отношения к определению uid не имеет, делается это так
<?php
global $user;
$user->uid // это и есть uid юзера, который сейчас залогинен.
?>
<?php
$user = NULL;
if (arg(0) === 'user' && is_numeric(arg(1))) {
$user = menu_get_object('user');
$user->uid // это и есть uid юзера, на странице которого мы сейчас находимся
}
?>
"iloveny" wrote:
Поля в ноде? А мне надо вывести поля в профайле?
тут я вас не понял. зачем вам эти поля выводить из кода?
"iloveny" wrote:
И еще как сделать что бы каждый uid записывался в отдельном поле (количество значений не ограничено)?
Нет, так не получится. Только если писать свои костыли. Но я вообще не вижу в этом смысла.
Только скажите пожалуйста, как узнать uid пользователя на странице которого мы находимся?
А вам это для чего нужно? для контекстного фильтра во views? Так там есть возможность выбрать uid текущего юзера.
Код выше никакого отношения к определению uid не имеет, делается это так
<?php
global $user;
$user->uid // это и есть uid юзера, который сейчас залогинен.
?>
<?php
$user = NULL;
if (arg(0) === 'user' && is_numeric(arg(1))) {
$user = menu_get_object('user');
$user->uid // это и есть uid юзера, на странице которого мы сейчас находимся
}
?>
"iloveny" wrote:
Поля в ноде? А мне надо вывести поля в профайле?
тут я вас не понял. зачем вам эти поля выводить из кода?
"iloveny" wrote:
И еще как сделать что бы каждый uid записывался в отдельном поле (количество значений не ограничено)?
Нет, так не получится. Только если писать свои костыли. Но я вообще не вижу в этом смысла.
Ну как я понял из вашего объяснения, то надо на странице юзеров сделать кнопку, которая при клике автоматически записывает uid юзера на странице которого мы находимся в поле типа Entity reference, а затем вьюс фильтрует материалы юзеров uid которых указан в этом поле. Так?
нет, не так.
Вы добавляете поле типа Entity reference к юзеру. Далее он у себя в профиле может редактировать это поле - добавлять/удалять юзеров, на которых он хочет быть подписан. Это поле может быть выпадающим списком или автокомплитом, так что юзер не сможет сохранить то, что не надо.
Если вы хотите кнопочку, то это вам нужно кастомный модуль написать (он не сложный).
Комментарии
Возможно, есть какие-то модули, но это вам в поиск на drupal.org.
Такой вариант могу предложить - добавляете к пользователю поле типа entityt reference, настраиваете так, чтобы можно было добавлять в поле только юзеров. Разрешаете добавлять неограниченное количество значений в поле.
Вьюху делаете так - вьюс по юзерам. контекстный фильтр по uid, значение по умолчанию - uid текущего юзера. Далее добавляете отношения 1. Отношение юзер - юзер через поле, которое я описал выше. 2. Отношение юзер - созданная им нода. Для второго отношения используйте первое.
Спасибо большое! Так и сделаю! Только скажите пожалуйста, как узнать uid пользователя на странице которого мы находимся?
Нашел вот такое:
global $user;
$files = file_scan_directory('public://images/', '/.*/');
ksort($files);
foreach ($files as $image) {
$file = new StdClass();
$file->uid = $user->uid;
$file->uri = $image->uri;
$file->filename = basename($file->uri);
$file->filemime = file_get_mimetype($file->uri);
$file = file_copy($file, file_default_scheme() . '://image');
if (!empty($file)) {
$node = node_load($nid);
$node->field_image[LANGUAGE_NONE][] = (array)$file;
node_save($node);
}
}
Только как мне кажется у меня вместо всего этого:
$files = file_scan_directory('public://images/', '/.*/');
ksort($files);
foreach ($files as $image) {
$file = new StdClass();
$file->uid = $user->uid;
$file->uri = $image->uri;
$file->filename = basename($file->uri);
$file->filemime = file_get_mimetype($file->uri);
$file = file_copy($file, file_default_scheme() . '://image');
Должна быть переменная для вывода uid-а пользователя.
А вот это:
$node = node_load($nid);
$node->field_image[LANGUAGE_NONE][] = (array)$file;
node_save($node);
Поля в ноде? А мне надо вывести поля в профайле?
И еще как сделать что бы каждый uid записывался в отдельном поле (количество значений не ограничено)?
Flags
А вам это для чего нужно? для контекстного фильтра во views? Так там есть возможность выбрать uid текущего юзера.
Код выше никакого отношения к определению uid не имеет, делается это так
<?php
global $user;
$user->uid // это и есть uid юзера, который сейчас залогинен.
?>
<?php
$user = NULL;
if (arg(0) === 'user' && is_numeric(arg(1))) {
$user = menu_get_object('user');
$user->uid // это и есть uid юзера, на странице которого мы сейчас находимся
}
?>
тут я вас не понял. зачем вам эти поля выводить из кода?
Нет, так не получится. Только если писать свои костыли. Но я вообще не вижу в этом смысла.
Ну как я понял из вашего объяснения, то надо на странице юзеров сделать кнопку, которая при клике автоматически записывает uid юзера на странице которого мы находимся в поле типа Entity reference, а затем вьюс фильтрует материалы юзеров uid которых указан в этом поле. Так?
нет, не так.
Вы добавляете поле типа Entity reference к юзеру. Далее он у себя в профиле может редактировать это поле - добавлять/удалять юзеров, на которых он хочет быть подписан. Это поле может быть выпадающим списком или автокомплитом, так что юзер не сможет сохранить то, что не надо.
Если вы хотите кнопочку, то это вам нужно кастомный модуль написать (он не сложный).