Кто то спрашивал, как заменить PID для нового элемента. Тут как раз столкнулся с этим, у меня есть отдельные папки для хранения разных элементов разных экстов. И т.к. модели часто пересекаются, то при создании например Элемента Объекта с привязанными контактами, т.е. в папке Объекта появляются и элементы Контактов.. и так везде.. я решил немного почистить все. Т.е. все должно быть по своим местам, а для этого нужно менять PID при создании элемента.
Изменить или предопределить PID через TCA невозможно... но его можно предопределить во время сохранения, т.е. через HOOK
делается это элементарно (как оказалось):
в ext_conf_template.txt
задаем нашу storagePid
потом создаем HOOK (
https://docs.typo3.org/typo3cms/Core...ept/Index.html)
/Classes/Hook/Core/DataHandling/ProcessDataMap.php (можно менять пути и папки, это не принципиально)
PHP код:
namespace Tx\Extension\Hook\Core\DataHandling;
use Tx\Extension\Utility\ExtConfiguration;
//(Этот файл я описывал тут: http://forum.typo3.ru/showthread.php?t=12018"]http://forum.typo3.ru/showthread.php?t=12018)
class ProcessDataMap
{
/**
* Post-process PID VALUE
*
* @param object $fobj TCEmain object reference
* @return void
*/
public function processDatamap_postProcessFieldArray ($status, $table, $id, &$incomingFieldArray, &$fObj) {
$settings = ExtConfiguration::getConfiguratuion();
switch ($table) {
case 'OUR_TABLE':
if(isset($settings['storagePid'])){
$incomingFieldArray['pid'] = $settings['storagePid'];
}
break;
}
}
}
Ну и не забываем зарегистрировать наш HOOK в ext_tables.php
PHP код:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] = 'Tx\\Extension\\Hook\\Core\\DataHandling\\ProcessDataMap';
Собственно это все, удачи!
P.S.
https://docs.typo3.org/typo3cms/TCAR...ine/Index.html тут вроде как описана возможно подстановки pid через TCAdefaults , у кого получилось, поделитесь.. у меня не вышло отсюда и решение с хуком.