2014-01-28 4 views
0

Я хочу скопировать пользовательскую запись 'article', которая имеет несколько связанных дочерних записей в строке (например, комментарий). Моя проблема заключается в том, что все встроенные дочерние записи также копируются. В моем примере все записи комментариев также копируются, когда я копирую запись статьи. Как я могу избежать этого?typo3 - не копировать встроенные дочерние записи

я узнал, что я могу избежать этого Whne перемещения записи со следующими параметрами TCA:

'behaviour' => array(
'disableMovingChildrenWithParent' => 1 
), 

Есть ли что-то подобное для копирования или каких-либо идей для решения проблемы?

thanx!

ответ

1

Спасибо Panade. Я нашел решение самостоятельно.

Я использовал processCmdmap крюк в функции process_cmdmap общественности() из sysext/ядро ​​/ классов/DataHandling/DataHandler.php

Я в основном переопределить $ этом-> copyRecord ($ таблица, $ ID, $ значение, 1) и добавьте пятый параметр $ overrideValues, который содержит массив с полями, которые я хочу переопределить, в моем случае «комментарий» установлен в «0». Я делаю это только в том случае, если текущая таблица - это моя «статья», а команда - «копировать».

Надеюсь, что это поможет!

0

One Way отредактировал бы это на уровне базы данных. Вы можете просто скопировать запись на новую страницу, а затем удалить все ссылки на ссылки на своего ребенка в базе данных. Это можно распространить на общее решение в форме расширения. Возможно, в TYPO3 Ter Repository уже есть расширение.

Другое решение (непроверенное) может быть функцией экспорта на странице Base. Там вы можете определить, какие элементы вы хотите скопировать. Это зависит от того, как хранятся комментарии и записи статей, но, возможно, это тоже путь.

Если дочерние записи перечислены в качестве элементов данных, вы также можете перейти в представление списка и просто удалить дочерние элементы. Это также должно удалить ссылку. Это работает только в том случае, если PID хранилища элементов Child (комментарии) - это страница, на которую вы помещаете свой основной элемент.

0

Я получил то же самое очень просто, установив 'setToDefaultOnCopy' в секции CTA ctrl в поле встроенных записей. Таким образом, поле устанавливается на значение по умолчанию (в большинстве случаев - null) и не копируется в сторону с родительской записью.

Я также оценил решение с помощью hookComdmap, что приводит к пустому встроенному полю записи в родительской записи, но не препятствует тому, чтобы встроенные записи копировались в общем виде. Кроме того, в моем случае скопированные дочерние записи по-прежнему имеют ссылку на родительский набор записей. Итак, суть в том, что processCmdmap не работал для меня, но TCA ctrl 'setToDefaultOnCopy' сделал трюк.

Смежные вопросы