Разделение коллективных блогов по направлениям

Иду дальше по пути развития нашего будущего проекта. Осталось совсем ничего, добавить еще один фильтр и Авторизация по OpetID. OpetID – это потом. А щас фильтр :).

В чем идея (точнее не совсем идея, и даже не новшество). Есть коллективные блоги, у себя в проекте назвал их тематическими. Т.е. каждый коллективный блог будет иметь определенную тему. Для начало, скажем что это: «Веб-дизайн» и «Образование»

Что сделал:
Добавил нужный текст а языковой файл. После изменил add.tpl
<p><label for="blog_category">{$aLang.blog_create_blog_category}:</label><br />
<select name="blog_category" id="blog_category" onChange="">
<option value="blog_category">{$aLang.blog_create_blog_category_education}</option>
<option value="blog_category">{$aLang.blog_create_blog_category_web}</option>
</select>
<br />
<span class="form_note">{$aLang.blog_create_blog_category_notice}</span></p>  


В Blog.entity.class.php добавил

public function getCategory() {
   return $this->_aData['blog_category'];
}
public function setCategory($data) {
    $this->_aData['blog_category']=$data;
}


В Blog.class.php в эванте EventAddBlog добавил

$oBlog->setCategory(getRequest('blog_category'));

(после $oBlog=new BlogEntity_Blog(); конечно).

В Blog.mapper.class.php изменл запрос
public function AddBlog(BlogEntity_Blog $oBlog) {
		$sql = "INSERT INTO ".DB_TABLE_BLOG." 
			(user_owner_id,
			blog_title,
			blog_description,
			blog_type,
			blog_category,	
			blog_date_add,
			blog_limit_rating_topic,
			blog_url,
			blog_avatar,
			blog_avatar_type
			)
			VALUES(?d,  ?,	?,	?,  ?,	?,	?, ?, ?, ?)
		";
		if ($iId=$this->oDb->query($sql,$oBlog->getOwnerId(),$oBlog->getTitle(),$oBlog->getDescription(),$oBlog->getType(),$oBlog->getCategory(),$oBlog->getDateAdd(),$oBlog->getLimitRatingTopic(),$oBlog->getUrl(),$oBlog->getAvatar(),$oBlog->getAvatarType())) {
			return $iId;
		}		
		return false;
	} 


Естественно изменения коснулись и таблицы prefix_blog, добавил поле blog_category.

Вроде все сделал, чтоб блог можно было добавить, указав его категорию. Блоги добавляются, но вот тока в таблице prefix_blog поле blog_category остается пустым.

У себя пока идей нет, может кто заметит в чем проблема?

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

avatar
не совсем понял
в чем разница между этим и просто привязкой любого блога к любой категории в модуле админ-панель
site.com/category/admin/list/
avatar
здесь обычный пользователь может сам выбрать направление для создаваемого им коллективного блога.
avatar
ага, теперь ясно, спасибо за пояснение
как же вы доверяете юзеру создание блога в наши суровые времена :)
avatar
Мне башкой об стенку убиться надо. Заработался слишком, после выходных сразу дошло в чем дело:

<p><label for="blog_category">{$aLang.blog_create_blog_category}:</label><br />
<select name="blog_category" id="blog_category" onChange="">
<option value="blog_category">{$aLang.blog_create_blog_category_education}</option>
<option value="blog_category">{$aLang.blog_create_blog_category_web}</option>
</select>
<br />
<span class="form_note">{$aLang.blog_create_blog_category_notice}</span></p> 


В базе поле blog_category было ENUM? и значения blog_category там не было.

Правильно будет так:

<p><label for="blog_category">{$aLang.blog_create_blog_category}:</label><br />
<select name="blog_category" id="blog_category" onChange="">
<option value="education">{$aLang.blog_create_blog_category_education}</option>
<option value="web">{$aLang.blog_create_blog_category_web}</option>
</select>
<br />
<span class="form_note">{$aLang.blog_create_blog_category_notice}</span></p> 


Вот теперь работает
avatar
Для версии 0.4 есть?
Там в Blog.class.php немного другие строчки, помогите пожалуйста, уважаемый netuser. =)

	 /**
	 * Добавляет блог
	 *
	 * @param BlogEntity_Blog $oBlog
	 * @return unknown
	 */
	public function AddBlog(BlogEntity_Blog $oBlog) {		
		if ($sId=$this->oMapperBlog->AddBlog($oBlog)) {
			$oBlog->setId($sId);
			//чистим зависимые кеши
			$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array('blog_new',"blog_new_user_{$oBlog->getOwnerId()}"));						
			return $oBlog;
		}
		return false;
	}

Что изменить надо?
avatar
в ActionBlog надо еще выставление значения category из $_REQUEST['blog_category'] прописать при создании/редактировании блога
avatar
Уф. Доделал, у меня все работает. Для версии 0.4 там надо еще несколько файлов подправить.
Спасибо автору топика за наводку!
avatar
Не могли бы в виде хака выложить для всех?
avatar
Shatter, рад, что у вас получилось!
avatar
в процессе у меня возник резонный вопрос… а зачем в базе создавать еще одно поле если уже есть blog_type, который используется для разделения блогов на персональные и так сказать общественные, не проще ли просто расширить список?
avatar
blog_type нужен для других целей. И это не тематическое разделение, а функциональное.
avatar
просто из такого древнего курса БД Парадокс, я прекрасно помню что прежде чем вводить новое поле в базу стоит проверить, а нет ли возможности использовать имеющиеся поля…
дабы не усложнять архитектуру БД и запросы к БД… я понимая что тогда боролись за каждый лишний байт… сейчас борьба идет за мегабайт…
но все же… в итоге получается что blog_type используется только для разделения блогов на персональные и общественные…
хотя с другой стороны получится что можно делать и персональные и общественные на разные тематики…
в моем проекте как говорится енто не треба… так что пожалуй буду использовать blog_type для упрощения запросов… и как следствие снижение нагрузки…

в любом случае спасибо за идею… и пример ее реализации… очень для меня нужная тема…
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.