Ломаю голову над методом реализации вконтактовского "мне нравиться!". Пока что нашел только [module=plus1], но хотелось бы еще и добавление аватаров плюсующих пользователей. Может кто подскажет в каком направлении двигаться?
ну, логика такая:
1. Получить uid(уиды) того кто нажал кнопку.
2. Загрузить его аватарку.
все это можно получить одним запросом, что-то типа:
$result = db_query("SELECT fc.uid,u.picture FROM {flag_content} fc
INNER JOIN {users} u ON u.uid = fc.uid WHERE fc.content_id = '%d'",$node->nid);
Для получения кол-ва проголосовавших смотри flag_get_counts();
ни осилил я запросы мудреные мускульные.
через views своего ума тоже не хватает аватары окоянные вывести.
челом бью бояре! поделитесь опытом мужи великомудрые, надоумьте.
Для получения кол-ва проголосовавших смотри flag_get_counts();
подумал что это тоже столбец или таблица в БД, не нашел и сделал из того что нашел в БД)
нашел инфу тут по этой переменной буду копать.
аватары полем профиля выводятся.таблица profile_values столбцы: fid(id поля), uid (id пользовтаеля), value (путь до аватара)
логику вывода аватаров представляю примерно так:
-смотрим id проголосовавших пользователей flag_content -> uid
-выводим из profile_values для таких же uid, value при fid=3
может проще как то можно?
$result = db_query("SELECT fc.uid,pv.value FROM {flag_content} fc
INNER JOIN {profile_values} pv ON u.uid = pv.uid WHERE fc.content_id = '%d'",$node->nid);
для вывода во views можно использовать шаблон строки какой-нибудь
или views_customfield и создать поле с произвольным php кодом, только там будет не $node->nid a $data->nid
огромный человеческий респект за [module=views_customfield] это вещь!
но к сожалению код пока ошибки выдает. пока не разобрался.
вставляю:
<? php $result = db_query("SELECT fc.uid,pv.value FROM {flag_content} fc
INNER JOIN {profile_values} pv ON u.uid = pv.uid WHERE fc.content_id = '%d'",$data->nid); ?>
выдает: Parse error: syntax error, unexpected T_VARIABLE in ...all/modules/views_customfield/includes/views_customfield_handler_field_phpcode.inc(118) : eval()'d code on line 2
Буратино был тупой
можно все через views разрулить без хардкора с кодом. проглядел что при добавлении взаимосвязи "флаги:флаг ноды" появляется взаимосвязь "флаги: пользователь(Отметивший пользователь)". => добавляем поле "аватар" со связью "Отметивший пользователь". и вуаля)
можно все через views разрулить без хардкора с кодом. проглядел что при добавлении взаимосвязи "флаги:флаг ноды" появляется взаимосвязь "флаги: пользователь(Отметивший пользователь)". => добавляем поле "аватар" со связью "Отметивший пользователь". и вуаля)
не поборю ни как, подскажите где туплю
при нажатии на ссылку флага генериться еще одна вьюха, а не обновляеться существующая, и выводиться только один аватар плюсанвшего пользователя в каждой.
Посмотрите на д.о модуль Views Ajax (как-то так), который позволяет обновлять views по внешнему событию. После этого достаточно дописать пару строчек кода для того, чтобы при клике по ссылке флага обновлялся ваш views.
не правильно обяснил, миль мардон)
сделал вьюху, вывожу в блоке полями. настройки pic_1. результат pic_2. при нажатии "иду" генериться еще одна вьюха pic_3. и так для каждого пользователя. по задумке ко вьюхе просто добовляются аватары плюсанувших.
где то с аргументами туплю. на странице материала аватары плюсанувших нормально отображаются, а на странице автора где выводиться вышеописанный блок(материалы пользователя в профиле автора) никак не поборю.
Комментарии
Можно использовать flag.
Аватары нужно будет добавлять уже своим кодом, например из шаблона.
flag + views
Правильно говорят про flag+views. Я делал именно так.
Спасибо за подсказку. Поставил flag, ссылки нравиться/не нравиться добавил через views, а вот с аватарами и счетчиком засел.
можно код посмотреть?
ну, логика такая:
1. Получить uid(уиды) того кто нажал кнопку.
2. Загрузить его аватарку.
все это можно получить одним запросом, что-то типа:
$result = db_query("SELECT fc.uid,u.picture FROM {flag_content} fc
INNER JOIN {users} u ON u.uid = fc.uid WHERE fc.content_id = '%d'",$node->nid);
Для получения кол-ва проголосовавших смотри flag_get_counts();
Спасибо. буду разбираться.
ни осилил я запросы мудреные мускульные.
через views своего ума тоже не хватает аватары окоянные вывести.
челом бью бояре! поделитесь опытом мужи великомудрые, надоумьте.
Счетчик
с божьей помощьювывел в ноду<?php $result = db_query("SELECT count FROM {flag_counts} WHERE content_id = '%d'",$node->nid);
$out = db_fetch_array($result);
print($out['count']);
?>
idшники пользователей тоже
<?php $result = db_query("SELECT uid FROM {flag_content} WHERE content_id = '%d'",$node->nid);
while ($out = db_fetch_array($result))
{
print($out['uid']);
}
?>
аватары пока не поборол т.к. вывожу их полем профиля(требовалось для удобства пользователей).
для счетчика есть же готовая функция из самого flag, выше я писал.
Если у тебя аватары в каком то другом поле то смысл тот же, только запрос правильно составь.
подумал что это тоже столбец или таблица в БД, не нашел и сделал из того что нашел в БД)
нашел инфу тут по этой переменной буду копать.
аватары полем профиля выводятся.таблица profile_values столбцы: fid(id поля), uid (id пользовтаеля), value (путь до аватара)
логику вывода аватаров представляю примерно так:
-смотрим id проголосовавших пользователей flag_content -> uid
-выводим из profile_values для таких же uid, value при fid=3
может проще как то можно?
я вот никак не догоню как это во views засунуть.
$result = db_query("SELECT fc.uid,pv.value FROM {flag_content} fc
INNER JOIN {profile_values} pv ON u.uid = pv.uid WHERE fc.content_id = '%d'",$node->nid);
для вывода во views можно использовать шаблон строки какой-нибудь
или views_customfield и создать поле с произвольным php кодом, только там будет не $node->nid a $data->nid
огромный человеческий респект за [module=views_customfield] это вещь!
но к сожалению код пока ошибки выдает. пока не разобрался.
вставляю:
$result = db_query("SELECT fc.uid,pv.value FROM {flag_content} fc
INNER JOIN {profile_values} pv ON u.uid = pv.uid WHERE fc.content_id = '%d'",$data->nid);
?>
выдает:
Parse error: syntax error, unexpected T_VARIABLE in ...all/modules/views_customfield/includes/views_customfield_handler_field_phpcode.inc(118) : eval()'d code on line 2
Буратино был тупойможно все через views разрулить без хардкора с кодом. проглядел что при добавлении взаимосвязи "флаги:флаг ноды" появляется взаимосвязь "флаги: пользователь(Отметивший пользователь)". => добавляем поле "аватар" со связью "Отметивший пользователь". и вуаля)
Мои поздравления
Спасибо.
дураков работа любит)
не поборю ни как, подскажите где туплю
при нажатии на ссылку флага генериться еще одна вьюха, а не обновляеться существующая, и выводиться только один аватар плюсанвшего пользователя в каждой.
Посмотрите на д.о модуль Views Ajax (как-то так), который позволяет обновлять views по внешнему событию. После этого достаточно дописать пару строчек кода для того, чтобы при клике по ссылке флага обновлялся ваш views.
не правильно обяснил, миль мардон)
сделал вьюху, вывожу в блоке полями. настройки pic_1. результат pic_2. при нажатии "иду" генериться еще одна вьюха pic_3. и так для каждого пользователя. по задумке ко вьюхе просто добовляются аватары плюсанувших.
он был только для пятёрки .
где то с аргументами туплю. на странице материала аватары плюсанувших нормально отображаются, а на странице автора где выводиться вышеописанный блок(материалы пользователя в профиле автора) никак не поборю.
Ага. Соврал я. Не views ajax, а Views Flag Refresh
решил при помощи [module=views_field_view]