+0.03
Рейтинг
0.22
Сила

Netuser

blog_type нужен для других целей. И это не тематическое разделение, а функциональное.
Я уже иду в этом направлении: livestreet.ru/blog/3990.html

А на счет того, что не работает, то не могу что то конкретное сказать. Может фрагмент кода покажите?
Shatter, рад, что у вас получилось!
Мне башкой об стенку убиться надо. Заработался слишком, после выходных сразу дошло в чем дело:

<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> 


Вот теперь работает
здесь обычный пользователь может сам выбрать направление для создаваемого им коллективного блога.
Нет там тока один шаблон index.tpl. А там так:

{include file='header.tpl' menu='blogs'}
<div class="page people top-blogs">	
{if $sMenuItemSelect=='collectiv'}
{include file='blog_collectiv_list.tpl'}
{/if}
{if $sMenuItemSelect=='personal'}
{include file='blog_personal_list.tpl'}
{/if}
</div>
{include file='paging.tpl' aPaging=`$aPaging`}
{include file='footer.tpl'}


blog_collectiv_list.tpl и blog_personal_list.tpl можно сказать, что клон blog_list.tpl. Но с изменениями, например, для персональных нет вилки для подключения к блогу.
Не стал анализировать ваш код. Пардон за ленивость, вот мой:
Регистрация эвента
$this->AddEventPreg("/^personal$/i","/^page(\d+)$/i",'EventPersonal');


Сам эвент
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; сделать:


echo "<pre>";
print_r($aReturn);
echo "</pre>";


можно будет посмотреть, что из базы идет.
Очень подробно сейчас не могу, времени мало, проект надо сдавать, а коротко так:

все изменения в ActionBlogs.class.php делал. Там есть эвент EventShowBlogs, который вызывает метод GetBlogsRatingAll из Blog.class.php, тот в свою очередь вызывает метод GetBlogsRatingAll из Blog.mapper.class.php, а тот уже вытаскивает все коллективные блоги, сортируя по рейтингу.

Значит если идти по самому простому способу, то нужно продублировать 2 раза все эванты и методы, дать каждому соответствующие название, вызвать в нужном месте, и в задать условие в маппере для одного b.blog_type=’personal’ a для другого b.blog_type<>’personal’

попробуйте, если не получиться на выходных попробую найти время и написать подробнее.
сделал как показали, отлично работает, спасибо. и за ссылку отдельное спасибо.
жаль плюсануть не могу, еще силы не те :)
Всем привет, хотя новичке, но уважаю проект. Встрече это классно. Жаль не могу там быть, от наших краев до Москвы очень далеко. Желаю хорошо и плодотворно провести время.
с кем еще можно связаться, чтобы купить этот модуль, а то указанный здесь livestreet.ru/addons/84/ автор не отвечает.
Не сразу нашел топик:
livestreet.ru/blog/tips_and_tricks/624.html

Пожалуй с него начну экспериментировать.
  • avatar netuser
  • 0
за ссылку отдельное и большое спасибо. тоже весьма нужная вещь.

а что касается языка, то теги пока самый удобный выход. но я пока не здаюсь.
  • avatar netuser
  • 0
статические страницы так и придется создавать (/page/язык/имя_страницы/). в ином случаи придется больше изменять код и базу.

а вот как быть с топиками? мне не дает покоя то, что я сделал сработало, но почему-то не стабильно.
  • avatar netuser
  • 0
интересный подход. я сегодня уже не могу попробывать, другим сайтом занят. но завтра обязательно.
  • avatar netuser
  • 0
не совсем понял. предлагаете что-то спецефическое? мне F5, Ctrl+F5, и Ctrl+R не помогает.
  • avatar netuser
  • 0
Согласен, запрос построин по тупому. Но все это локально на скорую руку. Но всетаки хотелось бы найти решения по филтрации контента.
  • avatar netuser
  • 0
о, вроде оно. буду смотреть. спасибо.
  • avatar netuser
  • 0
дополнение к выше сказанному, блоги, теги, комментарии не надо фильтровать по языку. фильтрация нужна только для самих записей.
  • avatar netuser
  • 0
проделал описанное, все работает, спасибо большое. а нет-ли возможности и сам контент по языкам фильтровать? тогда вообще было бы здорово.