Имеем 2 ИБ.
скажем новости и фото.
В ИБ фото - будем хранить фотки.
в ИБ новости - новости.
В комопненте вывода новостей детально идет кастомизация.
1.размещается маленькая форма, для того чтобы пользователи могли добавлять фото (желательно чтобы только авторизованные - поэтому добавляй проверку на авторизованность):
[CODE] <form action="<?=$yak?>" method="post" enctype="multipart/form-data">
<input type="file" name="img1" />
<span class="photo-button-pic"><input type="submit" value=" " name="add_img" /></span>
</form>
[/CODE]
2. вывод фото которые добавили к этому элементу:
[CODE] <div class="photo-prev">
<?
$arSelect = Array("NAME", "DETAIL_PICTURE", "CREATED_BY");
$arFilter = Array("IBLOCK_ID"=>8, "=NAME"=>$arResult["NAME"], "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array("id"=>desc), $arFilter, false, Array("nPageSize"=>3), $arSelect);
//"nPageSize"=>3 -выводить 3 элемента, тебе надо было 10? ставь 10
while($ob = $res->GetNextElement()) {
$tek++;
$arFields = $ob->GetFields();
?>
<div class="photo1">
<? $rsUser = CUser::GetByID($arFields["CREATED_BY"]);
$arUser = $rsUser->Fetch();
$login=$arUser["LOGIN"];
?>
<strong>Добавил: <?=$login;?></strong>
<div class="kartinko-big"><a href="<?=CFile::GetPath($arFields["DETAIL_PICTURE"]);?>" rel="group3" class="fancy" title="<?=$arFields["NAME"];?>"><img src="<?=CFile::GetPath($arFields["DETAIL_PICTURE"]);?>" border="0" title="<?=$arFields["NAME"];?>" width="150"/></a></div>
</div>
[/CODE]
3. кусок кода который будет ловить то что отправили через форму и добавлять данный материал в ИБ фото:
[CODE]
$detail_name = $arResult["NAME"];
if(isset($_REQUEST["add_img"]) && $_FILES["img1"]["name"]!="") {
//Если нужно фото в конкретную папку то нужно знать ее id
$section_id_foto = "1224";
$arFilter = Array('SECTION_ID'=>$section_id_foto,"NAME"=>$detail_name);
$db_list = CIBlockSection::GetList(Array(), $arFilter);
if(!$ar_result = $db_list->GetNext()){
$arFields2 = Array(
"IBLOCK_SECTION_ID" => $section_id_foto,
"IBLOCK_ID" => 8, // id ИБ фото
"NAME" => $detail_name
);
$bs = new CIBlockSection;
$id_sec2 = $bs->Add($arFields2);
} else $id_sec2 = $ar_result["ID"];
$file_foto = $_SERVER["DOCUMENT_ROOT"]."upload/".basename($_FILES['img1']['name']);
$file_foto_dir = $_SERVER["DOCUMENT_ROOT"]."upload/";
$fid = CFile::SaveFile($_FILES['img1'],$file_foto_dir);
$file = CFile::ResizeImageGet($fid, array('width'=>900,'height'=>850), BX_RESIZE_IMAGE_PROPORTIONAL, true);
$file2 = CFile::ResizeImageGet($fid, array('width'=>150,'height'=>150), BX_RESIZE_IMAGE_PROPORTIONAL, true);
$arFields5 = Array(
"IBLOCK_ID" => "8",
"IBLOCK_SECTION_ID" => $id_sec2,
"NAME" => $detail_name,
"PREVIEW_PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"].$file2['src']),
"DETAIL_PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"].$file['src'])
);
$el5 = new CIBlockElement();
$el5->Add($arFields5);
unlink($_SERVER["DOCUMENT_ROOT"].$file2['src']);
unlink($_SERVER["DOCUMENT_ROOT"].$file['src']);
unlink($file_foto);
}
?>
[/CODE]
Вот рабочий пример: http://turbereg.ru/rest/relax_in_zagran/Czech/1280.html#id-zagran
картинки пока не все загрузились... муторное это дело 25 гигов между хостингами перегонять 8)