Привет, некорфилам, или тем кто еще на 0.3.1. Хочу поделится хаком «Все теги» для ЛС 0.3.1.
За основу был взят существующий клас BlockTags.class.php и шаблон block.tags.tpl. Пример работи хака можно посмотреть здесь live.bete.tv/tagall
Если одобрите, пошлю в модули.
Начнем с templates\language\russian.php. Вписуем куда-то строчку
'tagall' => 'Все теги',
Лезем в classes\actions создем ActionTagall.class.php. Пихаем туда код:
<?php
class ActionTagall extends Action {
/**
* Главное меню
*
* @var unknown_type
*/
protected $sMenuHeadItemSelect='blog';
public function Init() {
$this->SetDefaultEvent('index');
$this->Viewer_AddHtmlTitle($this->Lang_Get('tagall'));
/**
* Определяем какие блоки нужно выводить справа
*/
$this->Viewer_AddBlocks('right',array('stream','blogs'));
}
protected function RegisterEvent() {
$this->AddEvent('index','EventTagAll');
}
public function EventTagAll() {
/**
* Получаем список тегов
*/
$aTagsall=$this->oEngine->Topic_GetTopicTags(500);
//dump($aTags);
/**
* Расчитываем логарифмическое облако тегов
*/
if ($aTagsall) {
$iMinSize=2; // минимальный размер шрифта
$iMaxSize=12; // максимальный размер шрифта
$iSizeRange=$iMaxSize-$iMinSize;
$iMin=10000;
$iMax=0;
foreach ($aTagsall as $oTag) {
if ($iMax<$oTag->getCount()) {
$iMax=$oTag->getCount();
}
if ($iMin>$oTag->getCount()) {
$iMin=$oTag->getCount();
}
}
$iMinCount=log($iMin+1);
$iMaxCount=log($iMax+1);
$iCountRange=$iMaxCount-$iMinCount;
if ($iCountRange==0) {
$iCountRange=1;
}
foreach ($aTagsall as $oTag) {
$iTagSize=$iMinSize+(log($oTag->getCount()+1)-$iMinCount)*($iSizeRange/$iCountRange);
$oTag->setSize(round($iTagSize)); // результирующий размер шрифта для тега
}
/**
* Устанавливаем шаблон вывода
*/
$this->Viewer_Assign("aTagsall",$aTagsall);
}
}
/**
* Выполняется при завершении работы экшена
*
*/
public function EventShutdown() {
/**
* Загружаем в шаблон необходимые переменные
*/
$this->Viewer_Assign('sMenuHeadItemSelect',$this->sMenuHeadItemSelect);
}
}
?>
черт, чуствую себя как Денис Попов со своей новой ОС Bolgenos ((
кто ж знал что ето «метки» а не «теги» + модуля в каталоге то нету… я обижен и расстроен
Да, да, я тоже искал теги и ничего не получил!
Ты молодец, хотя бы потому что теперь если будут искать теги, найдут комментарий randomtoy :) Ему тоже за упрощение спасибо.
Через этот топик многие по поиску пройдут, разумеется чтобы уже попасть в другой.
5 комментариев
а так молодец
кто ж знал что ето «метки» а не «теги» + модуля в каталоге то нету… я обижен и расстроен
Ты молодец, хотя бы потому что теперь если будут искать теги, найдут комментарий randomtoy :) Ему тоже за упрощение спасибо.
Через этот топик многие по поиску пройдут, разумеется чтобы уже попасть в другой.