Я хотел бы загрузить плагин динамически в соответствии с некоторыми данными.Сначала я попытался сделать это с Typoscript, но после некоторого исследования я понял, что невозможно изменить настройки плагина ( см. Старую запись в форуме ).
Мне нужноизменить settings.simplepoll.uid
в соответствии с переданными данными:
Это опечатка, которую я пробовал:
lib.loadSimplepoll = USER
lib.loadSimplepoll {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
extensionName = Simplepoll
pluginName = Polllisting
vendorName = Pixelink
switchableControllerActions {
SimplePoll {
1 = list
}
}
settings < plugin.tx_simplepoll.settings
settings {
simplepoll {
uid.current = 1
}
}
}
Вызов в шаблоне выглядит так:
<f:cObject typoscriptObjectPath="lib.loadSimplepoll">{newsItem.simplepoll}</f:cObject>
После выяснения того, что изменение настроек невозможно, я попробовал viewhelper:
<?php
namespace Vendor\Extension\ViewHelpers;
use TYPO3\CMS\Core\Utility\GeneralUtility;
class LoadSimplepollViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper
{
/**
* @param int $uid Uid of poll
* @return string
*/
public function render($uid) {
$cObj = GeneralUtility::makeInstance('TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer');
$configurationManager = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Configuration\\ConfigurationManager');
$simplepollTs = $configurationManager->getConfiguration(
\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS,
'simplepoll',
'Polllisting'
);
$ttContentConfig = array(
'tables' => 'tt_content',
'source' => 1030,
'dontCheckPid' => 1
);
// returning this works perfectly!
// but I need to change the "settings.simplepoll.uid"
$data = $cObj->RECORDS($ttContentConfig);
$cObj->start($data, 'tx_simplepoll_domain_model_simplepoll');
$renderObjName = '<tt_content.list.20.simplepoll_polllisting';
$renderObjConf = $GLOBALS['TSFE']->tmpl->setup['tt_content.']['list.']['20.']['simplepoll_polllisting.'];
$renderObjConf['persistence']['storagePid'] = 394; // This does not work!
$renderObjConf['settings'] = $simplepollTs;
$renderObjConf['settings']['simplepoll']['uid'] = $uid;
return $cObj->cObjGetSingle($renderObjName, $renderObjConf);
}
}
viehelper называется так:
{vh:LoadSimplepoll(uid: '{newsItem.simplepoll}')}
Теперь я могу изменитьuid
опроса с этой строкой: $renderObjConf['settings']['simplepoll']['uid'] = $uid;
Моя проблема сейчас в том, что он загружает опрос, а не ответы.Я отследил это до того, что плагин как-то больше не знает Record Storage Page
.Строка $renderObjConf['persistence']['storagePid'] = 394;
не помогает.
Как мне сказать плагину Storage Pid
?
Или есть другой / лучший способ загрузить плагин с изменяющимися данными?