Имея массив записей страниц ($pages
) с ассоциативными ключами, совпадающими с именами полей в базе данных, в основном с полем media , вы просто проходите по массиву и создаете изображения, используя конфигурация Typoscript.
Пример 1 (программист устанавливает рендеринг)
foreach($pages as $value) {
$mediaField = t3lib_div::trimExplode(',', $value['media']);
if(!$mediaField[0]) continue;
$imageConf = array(
'file' => 'uploads/media/' . $mediaField[0],
);
$content .= $this->cObj->cObjGetSingle('IMAGE', $imageConf);
}
Пример 2 (редактор устанавливает рендеринг)
foreach($pages as $value) {
$this->cObj->data = $value;
$content .= $this->cObj->stdWrap($value['media'], $this->conf['media_stdWrap.']);
}
Устанавливает данные страницы так, чтобы они были доступны как field
в Typoscript. Конфигурация будет выглядеть примерно так:
{
media_stdWrap {
cObject = IMAGE
cObject {
file {
import = uploads/media/
import.field = media
import.listNum = 0
}
}
}
}
Пример 3 (комбинация предыдущих 2 примеров)
foreach($pages as $value) {
$mediaField = t3lib_div::trimExplode(',', $value['media']);
$mediaOutput = '';
// Creating the output with a default rendering
if($mediaField[0]) {
$imageConf = array(
'file' => 'uploads/media/' . $mediaField[0],
);
$mediaOutput = $this->cObj->cObjGetSingle('IMAGE', $imageConf);
}
// Allowing custom Typoscript to completely modify the media part
if(array_key_exists('media_stdWrap.', $this->conf)) {
$this->cObj->data = $value;
$mediaOutput = $this->cObj->stdWrap($mediaOutput, $this->conf['media_stdWrap.']);
}
$content .= $mediaOutput;
}
ПРИМЕЧАНИЕ : Эти примеры полностью не проверены. Я придумал их из головы.