Новый тип топика с дополнительными полями

Здравствуйте, начал пробовать писать свой вид топика (События). И хочу добавить в него свои поля
Дата события, Тип и Продолжительность.
Шаблоны подправить, Action-ы есть, только вот не хочет он сохранять эти дополнительные данные в БД.
Пробую пользоваться для этого методами setExtraValue\getExtraValue класса Topic. Но они — protected. Соответствено надо делать новый Entity и попробовать унаследоваться от Topic чтоб можно было его использовать.
Я Так и сделал мой Entity имеет вид:
class PluginEvent_ModuleEvent_EntityEvent extends ModuleTopic_EntityTopic
{
	public function setEventDate($date){
		$this->setExtraValue('event_date');
	}
	public function setEventDuration($duration){
		$this->setExtraValue('event_duration');
	}
	public function setEvenType($type){
		$this->setExtraValue('event_type');
	}
	public function getEventType(){
		return $this->getExtraValue('event_type');
	}
	public function getEventDuration(){
		return $this->getExtraValue('event_duration');
	}
	public function getEventDate(){
		return $this->getExtraValue('event_date');
	}
}

Теперь если я пользуюсь методами, то они нормально отрабатывают. Т.е. я могу прочитать\записать данные, но они всеравно не хотят сохранятся в БД.

Что можете посоветовать?

13 комментариев

avatar
Как на счет своего мапера?
avatar
Я бы очень хотел использовать маппер топика потому как там штатно сохраняются extra-поля. Можно ли както это сделать? Можно просто сделать пустой унаследованный маппер?
avatar
Если стоит задача просто добавить поля без возможности фильтрации и сортировки по ним, то достаточно добавить нужные методы в EntityTopic через наследование. Пример есть в плагине MainPreview. Создавать новую сущность не нужно.
  • ort
  • 0
avatar
А можно ссылку на плагин?
avatar
avatar
Посмотрел на этот плагин, там переопределяются методы уже извесной сущности Topic, а не надо создать новую сущность, но унаследовать ее от старой. Вообще пункт $aInherits какбы говорит нам об наследовании, но все подсказки на русском говорят о «переопределении». Поэтому я немножко в ступоре, можете более детально объяснить что надо делать для нового типа сущности который базируется на Topic-е. Спасибо
avatar
Вроде разобрался, но какбы не очень прозрачная логика
avatar
Уже нашел
avatar
Сколько будет стоить плагин?
avatar
Думаю будет стоить чисто символически.
avatar
Теперь другой вопрос, как вывести этот новый тип топика на страницу?
сделал переопределение:
public $aDelegates = array(
			'template' => array('topic_event.tpl' => 'topic_event.tpl')
    );

но он не отображается. Подскажите в какую сторону копать? ссылка на него в виде: host/blog/35.html — но шаблон topic_event.tpl не подцепляется, и соответственно отображается только футер (Комментариев 0, Оставить комментарий) и все.
avatar
звиняйте, сам дурак:
'template' => array('topic_event.tpl' => '_topic_event.tpl')

забыл подчеркивание
avatar
А может тут есть желающие сделать коллективный заказ на мощную CCK?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.