TYPO3 PageLayoutView получить значения из сторонней таблицы
Мне удалось построить Slider (как собственный элемент содержимого), и в таблице "tt_content" у меня есть столбец, который читает записи таблицы "slider", и он возвращает только количество записей.
Теперь, когда я создаю элемент слайдера, на бэкэнд-макете я хотел бы иметь список с изображениями, которые в данный момент отображаются на этом конкретном элементе слайдера. Как это:
Теперь на моем SliderPreviewRenderer.php у меня есть следующее
public function preProcess(
PageLayoutView &$parentObject,
&$drawItem,
&$headerContent,
&$itemContent,
array &$row
)
{
if ($row['CType'] === 'slider') {
$headerContent = '<strong>' . $parentObject->CType_labels[$row['CType']] . '</strong><br/>';
$itemContent .= '<p class="title">Images:</p>';
$itemContent .= $parentObject->linkEditContent($parentObject->getThumbCodeUnlinked($row, 'tt_content', 'slider') . '<br />');
$drawItem = false;
}
}
Теперь я просто прочитал столбец, что он находится на tt_content (я думаю). С этим кодом я получаю только первое изображение и больше ничего.
Второе, что я хотел бы иметь, это настройки. Настройки сохраняются в другой таблице. Как я могу получить настройки тоже? Настройки сохраняются в таблице "Настройки слайдера". У меня нет кода для этого, потому что я понятия не имею, как я могу этого достичь. Внешний ключ для настроек ползунка - "slider_settings_relation", и он возвращает целое число. Соотношение 1-1.
Не могли бы вы рассказать мне, как я могу это сделать? Я был в Интернете в поисках решения, но, похоже, ни у кого еще не было такого вопроса.
С наилучшими пожеланиями,
1 ответ
Я предполагаю, что ползунок таблицы не указывает непосредственно на ссылку на изображение, а на запись, которая сама содержит ссылки на изображения. Таким образом, с вашим текущим кодом вы не получите ожидаемый результат, поскольку он просто содержит количество подключенных ползунков, которые нельзя напрямую разрешить как ссылку на файл.
Поэтому вы должны сначала выбрать ползунки, связанные с этим полем, чтобы получить действительные ссылочные поля файла, затем сгенерировать по одному миниатюру для каждого из них и, наконец, поместить его в коллекцию превьюшек, которые должны быть связаны, как это уже сделано в вашем коде.
Так что вы можете взглянуть на \TYPO3\CMS\Frontend\Hooks\PageLayoutView\ImagePreviewRenderer
который использует
\TYPO3\CMS\Backend\Utility\BackendUtility::resolveFileReferences
именно для этой цели. Он даже основан на том же хуке, с которым вы работаете, поэтому он должен работать так же.