Форумы / National / Russian / Настройка тегов.

<<<1234>>>

Trustmaster
#16 07.02.2009 16:57
Хорошая мысль. Надо ее в тикеты.
May the Source be with you!
Ratibor
#17 11.02.2009 16:43
Нашел я то, что убивает идею тэгов на корню.
Сейчас хоть сто раз обнови страничку, тэги выведутся одни и теже и в одном и том же порядке.

Если кто хочет чтоб тэги работали правильно, то для этого надо в functions.php найти function sed_tag_cloud и заменить ее на эту:

function sed_tag_cloud($area = 'pages', $order = 'tag', $limit = null)
{
	global $db_tag_references;
	$res = array();
	$limit = is_null($limit) ? '' : ' LIMIT ' . $limit;
	$sql = sed_sql_query("SELECT `tag`, COUNT(*) AS `cnt`
		FROM $db_tag_references
		WHERE tag_area = '$area'
		GROUP BY `tag`
		ORDER BY RAND() $limit");
	while($row = sed_sql_fetchassoc($sql))
	{
		$res[$row['tag']] = $row['cnt'];
	}
	sed_sql_freeresult($sql);
	return $res;
}

После этого все будет работать правильно, т.е. при каждом обновлении тэги будут выводится в случайном порядке.
Не задавай глупых вопросов, не услышишь вранья.
Отредактировано: Ratibor (11.02.2009 16:59, 15 лет назад)
Trustmaster
#18 11.02.2009 18:01
Я не считаю, что отображение тэгов в определенном порядке является убийством идеи как таковой. В частности, алфавитная сортировка позволяет здорово экономить время на поиск нужного ключевого слова. Лучше добавить 3-ю опцию сортировки тэгов в облаке - случайную.
May the Source be with you!
Ratibor
#19 11.02.2009 18:28
# Trustmaster : Я не считаю, что отображение тэгов в определенном порядке является убийством идеи как таковой. В частности, алфавитная сортировка позволяет здорово экономить время на поиск нужного ключевого слова.
Ну во-первых я не предлагал, не предлагаю и даже не собираюсь предлагать вносить это по умолчанию, я писал:
# Ratibor : Если кто хочет чтоб тэги работали правильно
А те кто не хочет, нехай юзают то что есть.

Во-вторых не надо путать "Облако тэгов" с "Поиском" и "Смотри также".

В третьих, скажем у меня в настройках стоит вывод 100 тэгов, и хоть убейся,
будут выводиться одни и теже, в одним и томже порядке, первые 100 тэгов.
И какой в этом прок ?

P.S. Для пользователей, кто не знает о чем вообще речь идет:
Облако тегов
Облако тегов или Туча ярлыков или Облако меток или Облако ключевых слов (англ. tag cloud) — визуальное представление списка ярлыков (или категорий). Частота упоминаний, поисков, ссылок в интернете с определенного сайта неких слов, терминов, имен, отображается в специальной области в виде изображения этих слов в формате гиперссылок. Размер изображения тем больше, чем чаще использовался данный тег (слово, термин или имя).
Не задавай глупых вопросов, не услышишь вранья.
Отредактировано: Ratibor (11.02.2009 18:51, 15 лет назад)
dervan
#20 11.02.2009 18:50
Ratibor, а если так: выборку из базы всегда делать случайную, как ты говоришь, но ввести опцию, чтобы можно было при желании полученную выборку отсортировать в алфавитном порядке?
Ratibor
#21 11.02.2009 18:54
# dervan : Ratibor, а если так: выборку из базы всегда делать случайную, как ты говоришь, но ввести опцию, чтобы полученную выборку можно было отсортировать в алфавитном порядке?
Нельзя делать никаких сортировок впринципе, это как я уже сказал убивает на корню саму идею. Если тебе нужна сортировка, то используй пример на яваскрипте приведенный мной выше, там можно сделать сортировку на стороне клиента, а на стороне сервера нельзя делать никаких сортировок.

P.S. Для сортировки по алфавиту надо заменить в файле set.js следующее:
order:"rand"
на:
order:"asc"
Не задавай глупых вопросов, не услышишь вранья.
Sergeich
#22 11.02.2009 19:04
Не понимаю, почему нельзя делать сортировку? Мне лично более симпатична идея выстраивания тегов в алфавитном порядке, так искать удобнее. А цвет и размер только помогают мне оценить "значимость" тега в материалах сайта. И мне глубоко наплевать на всякие "убийства идей", когда дело касается удобства использования. Что мешает сделать настройку сортировки в плагине? Хочешь - сортируй, не хочешь - не сортируй.
dervan
#23 11.02.2009 19:05
# Ratibor : Нельзя делать никаких сортировок впринципе, это как я уже сказал убивает на корню саму идею. Если тебе нужна сортировка, то используй пример на яваскрипте ...
Понятно, спасибо. :)
Ratibor
#24 11.02.2009 19:12
# Sergeich : Не понимаю, почему нельзя делать сортировку?
Прочитай еще раз мои посты и вникнись.

Повторяю еще раз для любителей крупной бронитехники:
Мне по барабану, нужны мои переделки кому то или нет, я их зделал для себя,
и если они кому-то из числа вменяемых нужны, то они переделают и я буду рад тому что смог кому-то помочь, а кому не нужны, то на нет и суда нет.

В общем еще внес некоторые поправки:

В functions.php найти function sed_tag_cloud и заменить ее на эту:

function sed_tag_cloud($area = 'pages', $order = 'tag', $limit = null)
{
	global $db_tag_references;
	$res = array();
	$limit = is_null($limit) ? '' : ' LIMIT ' . $limit;
	$sql = sed_sql_query("SELECT `tag`, COUNT(*) AS `cnt`
		FROM $db_tag_references
		WHERE tag_area = '$area'
		GROUP BY `tag`
		ORDER BY RAND() $limit");
	while($row = sed_sql_fetchassoc($sql))
	{
		$res[$row['tag']] = $row['cnt'];
	}
	sed_sql_freeresult($sql);
	return $res;
}

Далее tags.index.php заменить на этот:

if (!defined('SED_CODE')) { die('Wrong URL.'); }
if($cfg['plugin']['tags']['pages'])
{
	require_once(sed_langfile('tags'));
	$tcloud = sed_tag_cloud('pages', $cfg['plugin']['tags']['order']);
	$tc_html = '<div align="justify">';
	foreach($tcloud as $tag => $cnt)
	{
		$tag_count++;
		$tag_t = $cfg['plugin']['tags']['title'] ? sed_tag_title($tag) : $tag;
		$tag_u = sed_urlencode($tag, $cfg['plugin']['tags']['translit']);
		$tl = $lang != 'en' && $tag_u != urlencode($tag) ? '&tl=1' : '';
			if ($cnt<=1) { $dim = "xs"; }
			else if ($cnt<=5) { $dim = "s"; }
			else if ($cnt<=20) { $dim = "m"; }
			else if ($cnt<=50) { $dim = "l"; }
			else { $dim = "xl"; }

		$tc_html .= '<span style="padding: 0 2px;" class="'.$dim.'"><a href="'.sed_url('plug', 'e=tags&a=pages&t='.$tag_u.$tl).'">'.sed_cc($tag_t).'</a></span>';
	}
	$tc_html .= '</div>';
	$tc_html = ($tag_count > 0) ? $tc_html : $L['tags_Tag_cloud_none'];
	$t->assign(array(
	'INDEX_TAG_CLOUD' => $tc_html,
	'INDEX_TOP_TAG_CLOUD' => $L['tags_Tag_cloud']
	));
}

далее в ваш *.css дописать:

/* Tags */
.xs {font-size:12px;color:#c4c4c4;}
.xs:hover {font-size:12px;color:#000;}
.s{font-size:14px;color:#336699;}
.s:hover {font-size:14px;color:#000;}
.m {font-size:16px;color:#A0522D;}
.m:hover {font-size:16px;color:#000;}
.l {font-size:18px;color:#B0C4DE;}
.l:hover {font-size:18px;color:#000;}
.xl {font-size:20px;color:#aad815;}
.xl:hover {font-size:20px;color:#000;}

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


Кому нужна сортировка, то tags.index.php заменить на этот:

if (!defined('SED_CODE')) { die('Wrong URL.'); }
if($cfg['plugin']['tags']['pages'])
{
	require_once(sed_langfile('tags'));
	$tcloud = sed_tag_cloud('pages', $cfg['plugin']['tags']['order']);
	$tc_html = '<div align="justify" class="tag_cloud">';
	foreach($tcloud as $tag => $cnt)
	{
		$tag_count++;
		$tag_t = $cfg['plugin']['tags']['title'] ? sed_tag_title($tag) : $tag;
		$tag_u = sed_urlencode($tag, $cfg['plugin']['tags']['translit']);
		$tl = $lang != 'en' && $tag_u != urlencode($tag) ? '&tl=1' : '';
			if ($cnt<=1) { $dim = "xs"; }
			else if ($cnt<=5) { $dim = "s"; }
			else if ($cnt<=20) { $dim = "m"; }
			else if ($cnt<=50) { $dim = "l"; }
			else { $dim = "xl"; }

		$tc_html .= '<span style="padding: 0 2px;" class="'.$dim.'"><a href="'.sed_url('plug', 'e=tags&a=pages&t='.$tag_u.$tl).'">'.sed_cc($tag_t).'</a></span>';
	}
	$tc_html .= '</div><script type="text/javascript" src="'.$cfg['plugins_dir'].'/tags/js/jquery.tinysort.js"></script><script type="text/javascript" src="'.$cfg['plugins_dir'].'/tags/js/set.js"></script>';
	$tc_html = ($tag_count > 0) ? $tc_html : $L['tags_Tag_cloud_none'];
	$t->assign(array(
	'INDEX_TAG_CLOUD' => $tc_html,
	'INDEX_TOP_TAG_CLOUD' => $L['tags_Tag_cloud']
	));
}

добавить из архива выше файл jquery.tinysort.js

и заменить содержимое set.js на это:

$(".tag_cloud").find("span").tsort({order:"asc"});

P.S. По этому же принципу можно переделать вывод тэгов и в других местах.

P.P.S. Для ленивых :-)
Готовый плагин, теперь в настройках выбирается нужна или нет сортировка.
Остается только внести изменения в functions.php и ваш *.css

Переделан только tags.index.php, остальные можете переделать сами.
Если кто не может сам, скажите, я переделаю.
Не задавай глупых вопросов, не услышишь вранья.
Отредактировано: Ratibor (11.02.2009 21:13, 15 лет назад)
Trustmaster
#25 11.02.2009 21:55
Хмм, похоже, имеет смысл разделить плагины tags и tag_cloud, чтобы первый обеспечивал управление тэгами и их отображением в страницах, а второй генерировал только облака. Чтобы были различные плагины для облаков: хочешь с жабой, хочешь без жабы, хочешь банановые.
May the Source be with you!
Ratibor
#26 11.02.2009 22:18
Вот полностью переделанный, а не только tags.index.php
Нужна сортировка по asc, идем в админку и включаем, не нужна ничего не трогаем :-)

Как сказал выше, остается только внести изменения в functions.php и ваш *.css

При небольшой доработке можно настроить вид разный для индекса, для форума и для листов со страницами.

Если это комуто надо, ищите в файлах конструкцию вида:
if ($cnt<=1) { $dim = "xs"; }
else if ($cnt<=5) { $dim = "s"; }
else if ($cnt<=20) { $dim = "m"; }
else if ($cnt<=50) { $dim = "l"; }
else { $dim = "xl"; } 

И поменяйте значения для $dim,
только потом не забудьте внести определения в *.css для этих значений
Не задавай глупых вопросов, не услышишь вранья.
Отредактировано: Ratibor (11.02.2009 22:39, 15 лет назад)
motor2hg
#27 11.02.2009 22:48
Супер, работа проведена конкретная! Изложено понятно. Спасибо.
Ratibor
#28 11.02.2009 22:53
нашел один недостаток применительно к дефолтному скину, не меняется цвет у тэгов.

Решение:
перенести class="'.$dim.'" из span в а

и в *.css поправить на:

/* Tags */
a.xs {font-size:12px;color:#c4c4c4;}
a.xs:hover {font-size:12px;color:#000;}
a.s{font-size:14px;color:#336699;}
a.s:hover {font-size:14px;color:#000;}
a.m {font-size:16px;color:#A0522D;}
a.m:hover {font-size:16px;color:#000;}
a.l {font-size:18px;color:#B0C4DE;}
a.l:hover {font-size:18px;color:#000;}
a.xl {font-size:20px;color:#aad815;}
a.xl:hover {font-size:20px;color:#000;}

Архив обновил

Если еще внести изменения в .htaccess и urltrans.dat, как я писал выше,
то вообще ляпота :-)
Не задавай глупых вопросов, не услышишь вранья.
Отредактировано: Ratibor (11.02.2009 23:05, 15 лет назад)
Sergeich
#29 11.02.2009 23:19
Trustmaster, разделение на два плагина идеологически правильное, т.к. теги и облако тегов как бы разные функции выполняют :). Я за всеми пятью конечностями, плюс нос.
motor2hg
#30 12.02.2009 00:16
# Trustmaster : Хмм, похоже, имеет смысл разделить плагины tags и tag_cloud, чтобы первый обеспечивал управление тэгами и их отображением в страницах, а второй генерировал только облака. Чтобы были различные плагины для облаков: хочешь с жабой, хочешь без жабы, хочешь банановые.

Считаю правильным решением такое разделение.

<<<1234>>>