[Help] Облако Тегов для вБюллетеня

Статус
В этой теме нельзя размещать новые ответы.

alexgolovin

Создатель
Регистрация
16 Мар 2009
Сообщения
26
Реакции
4
друзья подскажите нормально работающее облако тегов для воблы, которая будет работать на 3.6.х а то пробовал ставить от 3.7.х не хочет :(
Выдает Вы знаете - всё правильно поставил, но не пашет :(
Ошибка базы данных в vBulletin 3.6.4:

Invalid SQL:
SELECT
tagid,tagtext
FROM bor_tag;

Ошибка MySQL : Table 'u31377.bor_tag' doesn't exist
Номер ошибки : 1146
Дата : Thursday, April 2nd 2009 @ 10:59:40 PM
Скрипт : Для просмотра ссылки Войди или Зарегистрируйся моего форума
Реферрер :
IP адрес : 83.239.236.4
Имя пользователя : admin
Имя класса : vb_database
 
К сожалению, не видел самого мода, но...

скорее всего там был инсталятор или типо того... xml SQL-запросы вроде не делает.

Так вот, видимо ты не выполнил запрос из инструкции или не выполнил install.php.

У тебя бонально нет таблицы bor_tag
 
alexgolovin
mysql => create database u31377.bor_tag
 
Я вобще делал себе вывод облако меток, там почти стандартными средствами можно сделать, могу выложить если нужно.
 
Я вобще делал себе вывод облако меток, там почти стандартными средствами можно сделать, могу выложить если нужно.
вылаживай , интерестно посмотреть...)) жаль сразу не выложил(.
 
вот я делал так

создаешь модуль

Код:
require_once(DIR . '/includes/functions_tag.php');

$tags = fetch_tagcloud1('usage');

в шаблон у меня в FORUMHOME вставляешь $tags в нужное место

и создаешт файл в папке includes - functions_tag.php
с этим кодом, это бралось из search.php, там чтото изменял еще но непомню уже, вобщем какая в попу разница если есть уже измененный.
Код:
<?php

function fetch_tagcloud1($type = 'usage')
{
	global $vbulletin, $stylevar, $vbphrase, $show, $template_hook;

	if ($vbulletin->options['tagcloud_usergroup'] > 0 AND !isset($vbulletin->usergroupcache[$vbulletin->options['tagcloud_usergroup']]))
	{
		// handle a usergroup being deleted: default to live permission checking
		$vbulletin->options['tagcloud_usergroup'] = -1;
	}

	$cacheable = ($vbulletin->options['tagcloud_usergroup'] != -1);

	if (!$cacheable)
	{
		$cloud = null;
	}
	else
	{
		switch ($type)
		{
			case 'search':
				$cloud = $vbulletin->searchcloud;
				break;

			case 'usage':
			default:
				$cloud = $vbulletin->tagcloud;
				break;
		}
	}

	if (!is_array($cloud) OR $cloud['dateline'] < (TIMENOW - (60 * $vbulletin->options['tagcloud_cachetime'])))
	{
		if ($type == 'search')
		{
			$tags_result = $vbulletin->db->query_read_slave("
				SELECT tagsearch.tagid, tag.tagtext, COUNT(*) AS searchcount
				FROM " . TABLE_PREFIX . "tagsearch AS tagsearch
				INNER JOIN " . TABLE_PREFIX . "tag AS tag ON (tagsearch.tagid = tag.tagid)
				" . ($vbulletin->options['tagcloud_searchhistory'] ?
					"WHERE tagsearch.dateline > " . (TIMENOW - (60 * 60 * 24 * $vbulletin->options['tagcloud_searchhistory'])) :
					'') . "
				GROUP BY tagsearch.tagid, tag.tagtext
				ORDER BY searchcount DESC
				LIMIT " . $vbulletin->options['tagcloud_tags']
			);
		}
		else
		{
			if (!$vbulletin->options['tagcloud_usergroup'])
			{
				$perm_limit = false;
			}
			else
			{
				$forums = array();
				$perm_limit = true;

				foreach ($vbulletin->forumcache AS $forumid => $forum)
				{
					// -1 for live permission checking
					$perm_array = ($vbulletin->options['tagcloud_usergroup'] == -1
						? $vbulletin->userinfo['forumpermissions']["$forumid"]
						: $forum['permissions'][$vbulletin->options['tagcloud_usergroup']]
					);

					if ($perm_array & $vbulletin->bf_ugp_forumpermissions['canview']
						AND $perm_array & $vbulletin->bf_ugp_forumpermissions['canviewthreads']
						AND $perm_array & $vbulletin->bf_ugp_forumpermissions['canviewothers']
					)
					{
						$forums[] = intval($forumid);
					}

				}
			}

			if (!$perm_limit OR $forums)
			{
				$tags_result = $vbulletin->db->query_read_slave("
					SELECT tagthread.tagid, tag.tagtext, COUNT(*) AS searchcount
					FROM " . TABLE_PREFIX . "tagthread AS tagthread
					INNER JOIN " . TABLE_PREFIX . "tag AS tag ON (tagthread.tagid = tag.tagid)
					INNER JOIN " . TABLE_PREFIX . "thread AS thread ON (tagthread.threadid = thread.threadid)
					WHERE thread.open <> 10
						AND thread.visible = 1
					" . ($perm_limit ? "AND thread.forumid IN (" . implode(',', $forums) . ")" : '') . "
					" . ($vbulletin->options['tagcloud_usagehistory'] ?
						"AND tagthread.dateline > " . (TIMENOW - (60 * 60 * 24 * $vbulletin->options['tagcloud_usagehistory'])) :
						'') . "
					GROUP BY tagthread.tagid, tag.tagtext
					ORDER BY searchcount DESC
					LIMIT " . $vbulletin->options['tagcloud_tags']
				);
			}
		}

		$total = 0;
		$count = 0;

		if (!empty($tags_result))
		{
			$count = $vbulletin->db->num_rows($tags_result);

			while ($currenttag = $vbulletin->db->fetch_array($tags_result))
			{
				$tags["$currenttag[tagtext]"] = $currenttag;
				$total += $currenttag['searchcount'];
			}
			$vbulletin->db->free_result($tags_result);
		}

		$final_tags = array();

		if ($count > 0)
		{
			// calculate the standard deviation
			$mean = $total / $count;

			$summation = 0;
			foreach ($tags AS $tagtext => $tagvalue)
			{
				$summation += pow(($tagvalue['searchcount'] - $mean), 2);
			}

			$sd = sqrt($summation / $count);

			uksort($tags, 'strnatcasecmp');

			if ($sd)
			{
				$sdtags = array();
				$lowestsds = 0;
				$highestsds = 0;

				// find the max and min standard deviations
				foreach ($tags AS $tagtext => $currenttag)
				{
					$tags["$tagtext"]['deviation'] = $currenttag['searchcount'] - $mean;
					$tags["$tagtext"]['sds'] = $tags["$tagtext"]['deviation'] / $sd;
					$sdtags[] = $tags["$tagtext"];

					if ($tags["$tagtext"]['sds'] < $lowestsds)
					{
						$lowestsds = $tags["$tagtext"]['sds'];
					}

					if ($tags["$tagtext"]['sds'] > $highestsds)
					{
						$highestsds = $tags["$tagtext"]['sds'];
					}
				}

				$levels = $vbulletin->options['tagcloud_levels'];

				foreach ($sdtags AS $thistag)
				{
					// normalize the std devs to 0 - 1, then map back to 1 - #levls
					$thistag['level'] = round((($thistag['sds'] - $lowestsds) / ($highestsds - $lowestsds)) * ($levels - 1)) + 1;
					$thistag['tagtext_url'] = urlencode(unhtmlspecialchars($thistag['tagtext']));

					$final_tags[] = $thistag;
				}
			}
			else
			{
				foreach ($tags AS $tagtext => $tagarr)
				{
					$final_tags[] = array(
						'tagid' => $tagarr['tagid'],
						'tagtext' => $tagtext,
						'tagtext_url' => urlencode(unhtmlspecialchars($tagtext)),
						'level' => round($vbulletin->options['tagcloud_levels'] / 2)
					);
				}
			}
		}

		$cloud = array(
			'tags' => $final_tags,
			'count' => sizeof($final_tags),
			'dateline' => TIMENOW
		);

		if ($cacheable)
		{
			if ($type == 'search')
			{
				$vbulletin->searchcloud = $cloud;
				build_datastore('searchcloud', serialize($cloud), 1);
			}
			else
			{
				$vbulletin->tagcloud = $cloud;
				build_datastore('tagcloud', serialize($cloud), 1);
			}
		}
	}

	if (empty($cloud['tags']))
	{
		return '';
	}

	$cloud['links'] = '';

	foreach ($cloud['tags'] AS $thistag)
	{
		($hook = vBulletinHook::fetch_hook('tag_cloud_bit')) ? eval($hook) : false;

		eval('$cloud[\'links\'] .= "' . fetch_template('tag_cloud_link') . '";');
	}

	$cloud['count'] = vb_number_format($cloud['count']);

	if ($type == 'search')
	{
		eval('$cloud_html .= "' . fetch_template('tag_cloud_box_search') . '";');
	}
	else
	{
		eval('$cloud_html .= "' . fetch_template('tag_cloud_box') . '";');
	}

	return $cloud[links];
}
?>
 
  • Заблокирован
  • #7
У меня хак стандартный стоит...
Теги выводятся и отлично все работает
Все работает как на 3.7.х, так и на 3.8.2

В край набирите с поискек "ОБЛАКО МЕТОК" и выдаст кучу линков на хаки... как на обычные, так и на 3D

Для тех кто в танке и юзать поиск не могёт)))

3d облако тегов:
2f7c8302f6ec.jpg



Обычный хак облака тегов
ab39141c3553.jpg



Хак "Облако случайных тегов из БД" - RandomTags


Облако тегов [Tag Cloud]
1ea272806277.png

 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху