Намедни реализовал сабж, решил поделится
для начала сделаем запрос в БД для создания нового поля в таблице
ALTER TABLE `jos_content` ADD `artimage` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
изменения:
libraries/joomla/database/table/content.php
после
class JTableContent extends JTable
{
добавляем
administrator/components/com_content/admin.content.html.php
находим функцию
function editContent( &$row, $section, &$lists, &$sectioncategories, $option, &$form )
ниже находим форму
<form action="index.php" method="post" name="adminForm">
и меняем на
<form action="index.php" method="post" name="adminForm" enctype="multipart/form-data">
это для того, чтоб форма умела передавать в обработчик файлы
ниже в любом удобном месте формы добавляем поле для загрузки файла
<input name="artimage" type="file" />
переходим к обработчику
administrator/components/com_content/controller.php
находим функцию
и, например, после
$nullDate = $db->getNullDate();
вставляем:
//подключаем api для работы с файлами
jimport('joomla.filesystem.file');
//берем переменную из post запроса формы
$artimage = JRequest::getVar('artimage', '', 'files', 'array');
//делаем имя файла безопасным
$filename = JFile::makeSafe($artimage['name']);
//указываем путь, куда сохранить файл
$filepath = JPATH_SITE.DS."images".DS.'content'.DS.$filename;
копируем файл
JFile::upload($artimage['tmp_name'], $filepath);
ниже, перед
вставляем
$row->artimage = $filename;
все, осталось только в нужном месте шаблонов (которые находятся в components/com_content/views/(какой-то вид)/tmpl/default.php
вывести
<?php echo $this->article->artimage; ?>
к коду в controller.php желательно "прикрутить" обработку ошибок и полученного файла (изменить размер, например)
в моем случае картинка увеличивалась или уменьшалась до ширины 459 пикселей (высота менялась пропорционально ширине) и за обработку картинки отвечала отдельная функция img_resize(), расположенная в отдельном файле images.php
<?php
function img_resize($src, $dst)
{
if (!file_exists($src)) return false;
$size = getimagesize($src);
if ($size === false) return false;
// Определяем исходный формат по MIME-информации, предоставленной
// функцией getimagesize, и выбираем соответствующую формату
// imagecreatefrom-функцию.
$format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
$icfunc = "imagecreatefrom" . $format;
if (!function_exists($icfunc)) return false;
$height = floor($size[1]/($size[0] / 459));
$isrc = $icfunc($src);
$idest = imagecreatetruecolor('459', $height);
imagefill($idest, 0, 0, '0xFFFFFF');
imagecopyresampled($idest, $isrc, 0, 0, 0, 0, 459, $height, $size[0], $size[1]);
imagejpeg($idest, $dst, '100');
imagedestroy($isrc);
imagedestroy($idest);
return true;
}
файл находился в папке administrator/components/com_content/ и подключался перед
jimport('joomla.filesystem.file');
вот таким образом
соответственно вместо
JFile::upload($artimage['tmp_name'], $filepath;
у меня вызывалась эта функция
img_resize($artimage['tmp_name'], $filepath)
она же, помещает измененную картинку в нужную папку
как-то так...