В большинстве случаев ваши элементы контента будут существовать внутри структуры контейнеров нод, которые их классифицируют - например, темы (элемент) в форуме (нода), или изображения (элемент) в альбоме (нода). В модели элементов контента доступно несколько методов, облегчающих работу с этими отношениями.
Добавление поддержки для нод контейнеров
Первый шаг, который вам нужно предпринять - добавить новое статическое свойство в вашу модель элемента контента.
protected static $containerNodeClass = 'string';
Значение этого свойства должно быть именем класса модели ноды, позволяя Invision Community распознать отношения. Далее вам нужно добавить ключ контейнера в массив $databaseColumnMap в вашей модели (дополнительную информацию см. в руководстве по модели элементов контента). Значение должно быть именем столбца базы данных, содержащего ID номер контейнера.
Оба примера можно наблюдать здесь:
protected static $containerNodeClass = "IPS\yourapp\YourNodeClass";
public static $databaseColumnMap = array(
//... Другие значения, определенные в вашей карте столбцов
'container' => 'item_parent_id'
);
Дополнительные методы, доступные для моделей элементов контента
После добавления поддержки контейнеров доступны два метода:
boolean canMove( \IPS\Member $member=NULL )
Возвращает логическое значение, указывающее, может ли предоставленный пользователь перемещать элемент в другой контейнер.
- $member (\IPS\Member, optional) - Пользователь, чьи разрешения должны использоваться. По умолчанию используется авторизованный в настоящее время пользователь.
void move( \IPS\Node\Model $container [, boolean $keepLink=FALSE ] )
Перемещает элемент в другой контейнер. Примечание: данный метод не проверяет разрешения; используйте canMove() в первую очередь.
- $container (\IPS\Node\Model, обязательный) - Объект ноды контейнера, в который будет перемещен элемент.
- $keepLink (boolean, необязательный, по умолчанию FALSE) - Если true, добавляется ложный элемент контента, который указывает на новое местонахождение старого элемента контента.
Дополнительные методы также доступны для модели ноды контейнера, помогающие вам работать с коллекциями элементов; более подробную информацию см. в документации по модели ноды контейнера.