На днях решал интересную задачу. Один пользователь Commedia попросил реализовать следующее:
Показывать музыку каждого пользователя на его странице в JomSocial (и, соответственно свою музыку на своей странице). Оказалось с помощью Commedia, Advanced Module Manager и плагина Sourcerer это можно сделать.
Я не знаком с JomSocial (пока), но у него ситуация была следующей:
музыкальные файлы пользователя хранятся в папке:
music_dir/users/user_accounts/users/userlogin, где
userlogin - уникальное имя пользователя Joomla
Шаблон JomSocial - blueface
Были созданы 2 CustomHTML модуля, Моя музыка и Музыка пользователя, размещенные в позиции js_profile_bottom (и, соответственно, отображаемые только в профилях: своем или любом пользовательском):
Код для "Моя музыка":
{commedia sort=name|order=desc}{source}<?php
$user = &JFactory::getUser();
$uid = $user->get('id');
if (!$uid) $uid = 0;
$db =& JFactory::getDBO();
$db->setQuery("SELECT username FROM #__users WHERE id=".$uid);
if ($db->query()) {
$line=$db->loadObject();
echo 'music_dir/users/user_accounts/users/'.$line->username;
}
?>{/source}{/commedia}
В расширенных настройках модуля выставлено: отображать на странице, содержащей URL
profile-home/profile - у него такой URL выдает пункт меню "Мой профиль" (кто пользовался Advanced Module Manager, знает, как настроить отображение для конкретного адреса).
Код модуля "Музыка пользователя":
{commedia sort=name|order=desc}{source}<?php
$uid = $_REQUEST['userid'];
if (!$uid) $uid = 0;
$db =& JFactory::getDBO();
$db->setQuery("SELECT username FROM #__users WHERE id=".$uid);
if ($db->query()) {
$line=$db->loadObject();
echo 'music_dir/users/user_accounts/users/'.$line->username;
}
?>{/source}{/commedia}
В расширенных настройках стоит, наоборот, исключение по URL:
profile-home/profileВ результате задача была решена.
Загрузка музыки в папку пользователя может осуществляться через Commedia, она как раз загружает файлы в ту папку, из которой отображает на странице.
Не знаю как он решил проблему автоматического создания-разделения подпапок для каждого пользователя в папке music_dir/users/user_accounts/users/. При желании это можно сделать даже в Commedia, дописав хак: создавать папку, если она не существует.
Ну и удаление музыки пользователем - это в планах. Но если мои советы окажутся востребованными, сделаем и удаление.
Надеюсь этот материал окажется Вам полезным. С реализацией помогу, если что-то не понятно.
Вот оригинальная тема на моём форуме:
http://www.ecolora.com/index.php/component/kunena/10-commedia-a-mp3browser-new/6551-how-to-show-music-from-user-s-folder-in-jomsocial