در سیسیتم مدیریت تصاویر یا همان media manager امکانی برای باز نمودن و یا انزیپ کردن فایل های بارگذاری شده وجود ندارد ، لذا بر ان شدیم تا اموزش ایجاد این قابلیت را برای استفاده کنندهگان جوملا معرفی کنیم . با پیگیری این آموزش شما امکان انزیپ کردن فایل هایی با پسوند های zip و tar و gz را خواهید داشت و به آسانی خواهید توانست که بر فایل های خود مدیریت داشته و به اسانی فولد و فایلا های خود را به هاست از طریق سیستم جوملا منتقل نمایید . نکته : این روش بر روی جوملای نسخه 1.5.15 امتحان شده و جواب داده است . در صورتی که می خواهید برای نسخه های قدیمی تر استفاده نمایید ابتدا جوملای خود را بروز نمایید . ابتدا وارد روت سایت خود بشوید و به ادرس زیر مراجعه کنید و فایل مربوطه را باز کنید(view.html.php) : PHP: administrator/component/com_media/views/media/view.html.php در این فایل در خط 106 شما کد زیر را مشاهده خواهید کرد : view sourceprint? PHP: 01./* (...) */02. // Add a delete button03. $title = JText::_('Delete');04. $dhtml = "<a href=\"#\" onclick=\"MediaManager.submit('folder.delete')\"05. class=\"toolbar\">06. <span class=\"icon-32-delete\" title=\"$title\"07. type=\"Custom\"></span>08. $title</a>";09. $bar->appendButton( 'Custom', $dhtml, 'delete' );10. /* (...) */ حال بعد از کد بالا کد نوشته شده در پایین را اضافه نمایید : view sourceprint? PHP: 01./* (...) */02. // Add a Unzip button03. $title = JText::_('Unzip');04. $dhtml = "<a href=\"#\" onclick=\"MediaManager.submit('folder.unzip')\"05. class=\"toolbar\">06. <span class=\"icon-32-unarchive\" title=\"$title\"07. type=\"Custom\"></span>08. $title</a>";09. $bar->appendButton( 'Custom', $dhtml, 'unzip' );10. /* (...) * با این عمل در واقع شما کدی برای نمایش دکمه انزیپ کردن را در منوی ابزار مدیریت رسانه ایجاد کرده اید . حال برای افزودن تابع انزیپ به ادرس زیر رفته و فایل (folder.php) را باز نمایید : administrator/component/com_media/controllers/folder.php حال در این فایل بعد از تابع حذف (delete function) کد زیرا را اضافه نمایید (احتمالا بعد از خط 90) : view sourceprint? PHP: 01./* (...) */02. function unzip() {03. global $mainframe;04.05. // Set FTP credentials, if given06. jimport('joomla.client.helper');07. JClientHelper::setCredentialsFromRequest('ftp');08.09. // Get some data from the request10. $tmpl = JRequest::getCmd( 'tmpl' );11. $paths = JRequest::getVar( 'rm', array(), '', 'array' );12. $folder = JRequest::getVar( 'folder', '', '', 'path');13.14. // Initialize variables15. $msg = array();16. $ret = true;17.18. if (count($paths)) {19. foreach ($paths as $path)20. {21. if ($path !== JFilterInput::clean($path, 'path')) {22. JError::raiseWarning(100, JText::_('Impossible de23. decompresser:').htmlspecialchars($path, ENT_COMPAT,24. 'UTF-8').' '.JText::_('WARNDIRNAME'));25. continue;26. }27.28. $fullPath = JPath::clean(COM_MEDIA_BASE.DS.$folder.DS.$path);29.30. if (is_file($fullPath)) {31. $ext = JFile::getExt(strtolower($fullPath));32. $pathdir = $fullPath;33. if($ext != 'gz') {34. $pathdir = str_replace( ".".$ext, "",$pathdir);35. }36. else {37. $pathdir = str_replace( ".".$ext, "",$pathdir);38. $pathdir = str_replace( ".tar", "",$pathdir);39. }40.41. jimport('joomla.filesystem.*');42. jimport('joomla.filesystem.archive');43. JFolder::create($pathdir);44. JFile::write($pathdir.DS."index.html", "<html>\n<body45. bgcolor=\"#FFFFFF\">\n</body>\n</html>");46. JArchive::extract($fullPath, $pathdir);47.48.49. } else if (is_dir($fullPath)) {50. JError::raiseWarning(100, JText::_('Imossible de51. decompresser:').$fullPath.' '.JText::_('Pas un fichier52. ZIP'));53. }54. }55. }56. if ($tmpl == 'component') {57. // We are inside the iframe58. $mainframe->redirect('index.php?option=com_media&view=mediaList&59. folder='.$folder.'&tmpl=component');60. } else {61. $mainframe->redirect('index.php?option=com_media&folder='.$folder);62. }63. }64. /* (...) */