/** * tags数据列表 */ public function actionPost($name) { $tagName = CHtml::encode(strip_tags(urldecode($name))); $tagModel = new Post2tags(); $post2TagsCriteria = new CDbCriteria(); if ($tagName) { $post2TagsCriteria->addCondition("tag_name = :tagName"); $post2TagsCriteria->params[':tagName'] = $tagName; } $post2TagsCriteria->order = 't.id DESC'; $post2TagsCriteria->with = array('post'); $post2TagsCount = $tagModel->count($post2TagsCriteria); $post2TagsPages = new CPagination($post2TagsCount); $post2TagsPages->pageSize = 30; $pageParams = XUtils::buildCondition($_GET, array('name')); $post2TagsPages->params = is_array($pageParams) ? $pageParams : array(); $post2TagsCriteria->limit = $post2TagsPages->pageSize; $post2TagsCriteria->offset = $post2TagsPages->currentPage * $post2TagsPages->pageSize; $data['bagecmsDataList'] = $tagModel->findAll($post2TagsCriteria); $data['bagecmsPagebar'] = $post2TagsPages; $data['tagName'] = $tagName; $this->_seoTitle = 'Tag-' . $tagName; $this->render('post2tags', $data); }
/** * tags 更新操作 parent:tags * * @param $tags * @param $titleId * @param $model * @param $jumpUri */ protected function _tagsUpdate($tags = '', $title_id = 0, $catalog_id = 0, $redirect) { $tagsRelation = new Post2tags(); $tagsRelationArray = $tagsRelation->findAll('title_id=:title_id', array('title_id' => $title_id)); $tagsArray = array(); foreach ((array) $tagsRelationArray as $row) { $tagsArray[] = $row['tag_name']; } $titleTags = implode(',', $tagsArray); $explodeTags = array_unique(explode(',', str_replace(array(' ', ','), ',', $tags))); $tagCount = 0; foreach ((array) $explodeTags as $value) { $tagCount++; if ($tagCount >= 10) { unset($explodeTags); break; } $TagsArrayNew[] = $value; if (!in_array($value, $tagsArray)) { $dao = new PostTags(); $get_data = $dao->find('tag_name=:tag_name', array('tag_name' => $value)); if (empty($get_data)) { $dao->catalog_id = $catalog_id; $dao->data_count = 1; $dao->tag_name = $value; $dao->create_time = time(); $id = $dao->save(); } else { $get_data->data_count = $get_data->data_count + 1; $get_data->save(); } //写入关联 self::_tagsRelation($value, $title_id); } } foreach ($tagsArray as $tagName) { if (!in_array($tagName, $TagsArrayNew)) { $getTagsCount = Post2tags::model()->count('title_id!=:title_id AND tag_name=:tag_name', array('title_id' => $title_id, 'tag_name' => $tagName)); if ($getTagsCount) { Yii::app()->db->createCommand("UPDATE {{news_tags}} SET data_count=data_count+1 WHERE tag_name='{$tagName}'")->execute(); } else { PostTags::model()->deleteAll('tag_name=:tag_name', array('tag_name' => $tagName)); } Post2tags::model()->deleteAll('tag_name=:tag_name AND title_id=:title_id', array('tag_name' => $tagName, 'title_id' => $title_id)); } } }