protected function EventPersonal() {
$this->sMenuItemSelect='personal';
$this->sMenuSubItemSelect='all';
/**
* Передан ли номер страницы
*/
if (preg_match("/^page(\d+)$/i",$this->getParam(0),$aMatch)){
$iPage=$aMatch[1];
} else {
$iPage=1;
}
/**
* Получаем список блогов
*/
$aResult=$this->Blog_GetBlogsRating($iPage,BLOG_BLOGS_PER_PAGE);
$aBlogs=$aResult['collection'];
/**
* Формируем постраничность
*/
$aPaging=$this->Viewer_MakePaging($aResult['count'],$iPage,BLOG_BLOGS_PER_PAGE,4,DIR_WEB_ROOT.'/'.ROUTE_PAGE_BLOGS.'/personal');
/**
* Загружаем переменные в шаблон
*/
$this->Viewer_Assign('aPaging',$aPaging);
$this->Viewer_Assign("aBlogs",$aBlogs);
$this->Viewer_AddHtmlTitle($this->Lang_Get('blog_menu_personal_all_list'));
/**
* Устанавливаем шаблон вывода
*/
$this->SetTemplateAction('index');
}
Метод в Blog.class.php
public function GetBlogsRating($iCurrPage,$iPerPage) {
$s1=-1;
if ($this->oUserCurrent) {
$s1=$this->oUserCurrent->getId();
}
if (false === ($data = $this->Cache_Get("blog_rating_{$iCurrPage}_{$iPerPage}_$s1"))) {
$data = array('collection'=>$this->oMapperBlog->GetBlogsRating($iCount,$iCurrPage,$iPerPage),'count'=>$iCount);
$this->Cache_Set($data, "blog_rating_{$iCurrPage}_{$iPerPage}_$s1", array("blog_update","blog_new"), 60*15);
}
return $data;
}
Метод Blog.mapper.class.php
public function GetBlogsRating(&$iCount,$iCurrPage,$iPerPage) {
$iCurrentUserId=-1;
if (is_object($this->oUserCurrent)) {
$iCurrentUserId=$this->oUserCurrent->getId();
}
$sql = "SELECT
b.*,
u.user_profile_avatar as user_profile_avatar,
u.user_profile_avatar_type as user_profile_avatar_type,
u.user_login as user_login,
IF(bu.blog_id IS NULL,0,1) as current_user_is_join
FROM
".DB_TABLE_BLOG." as b
LEFT JOIN (
SELECT
blog_id
FROM ".DB_TABLE_BLOG_USER."
WHERE user_id = ?d
) AS bu ON b.blog_id = bu.blog_id,
".DB_TABLE_USER." as u
WHERE
b.blog_type='personal'
AND
b.user_owner_id=u.user_id
ORDER by b.blog_rating desc
LIMIT ?d, ?d
;
";
$aReturn=array();
if ($aRows=$this->oDb->selectPage($iCount,$sql,$iCurrentUserId,($iCurrPage-1)*$iPerPage, $iPerPage)) {
foreach ($aRows as $aRow) {
$aReturn[]=new BlogEntity_Blog($aRow);
}
}
return $aReturn;
}
Шаблон у меня сильно изменен, но исходный тоже подходит.
Попробуйте, если опять будет пусто то попробуйте а маппере перед return $aReturn; сделать:
Очень подробно сейчас не могу, времени мало, проект надо сдавать, а коротко так:
все изменения в ActionBlogs.class.php делал. Там есть эвент EventShowBlogs, который вызывает метод GetBlogsRatingAll из Blog.class.php, тот в свою очередь вызывает метод GetBlogsRatingAll из Blog.mapper.class.php, а тот уже вытаскивает все коллективные блоги, сортируя по рейтингу.
Значит если идти по самому простому способу, то нужно продублировать 2 раза все эванты и методы, дать каждому соответствующие название, вызвать в нужном месте, и в задать условие в маппере для одного b.blog_type=’personal’ a для другого b.blog_type<>’personal’
попробуйте, если не получиться на выходных попробую найти время и написать подробнее.
сделал все как в ридми… проверил дважды и все равно остается эта ошибка…
Спасибо нашел ошибку, отсутствовал нужный столбец.
Регистрация эвента
Сам эвент
Метод в Blog.class.php
Метод Blog.mapper.class.php
Шаблон у меня сильно изменен, но исходный тоже подходит.
Попробуйте, если опять будет пусто то попробуйте а маппере перед return $aReturn; сделать:
можно будет посмотреть, что из базы идет.
все изменения в ActionBlogs.class.php делал. Там есть эвент EventShowBlogs, который вызывает метод GetBlogsRatingAll из Blog.class.php, тот в свою очередь вызывает метод GetBlogsRatingAll из Blog.mapper.class.php, а тот уже вытаскивает все коллективные блоги, сортируя по рейтингу.
Значит если идти по самому простому способу, то нужно продублировать 2 раза все эванты и методы, дать каждому соответствующие название, вызвать в нужном месте, и в задать условие в маппере для одного b.blog_type=’personal’ a для другого b.blog_type<>’personal’
попробуйте, если не получиться на выходных попробую найти время и написать подробнее.