Foren / National / Russian / Настройка тегов.

ErsteVorherige1234NächsteLetzte

Trustmaster
#16 7. Februar 2009, 16:57
Хорошая мысль. Надо ее в тикеты.
May the Source be with you!
Ratibor
#17 11. Februar 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;
}

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

Dieser Beitrag wurde von Ratibor (am 11. Februar 2009, 16:59, vor 16 Jahre) bearbeitet
Trustmaster
#18 11. Februar 2009, 18:01
Я не считаю, что отображение тэгов в определенном порядке является убийством идеи как таковой. В частности, алфавитная сортировка позволяет здорово экономить время на поиск нужного ключевого слова. Лучше добавить 3-ю опцию сортировки тэгов в облаке - случайную.
May the Source be with you!
Ratibor
#19 11. Februar 2009, 18:28
# Trustmaster : Я не считаю, что отображение тэгов в определенном порядке является убийством идеи как таковой. В частности, алфавитная сортировка позволяет здорово экономить время на поиск нужного ключевого слова.
Ну во-первых я не предлагал, не предлагаю и даже не собираюсь предлагать вносить это по умолчанию, я писал:
# Ratibor : Если кто хочет чтоб тэги работали правильно
А те кто не хочет, нехай юзают то что есть.

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

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

P.S. Для пользователей, кто не знает о чем вообще речь идет:
Облако тегов
Облако тегов или Туча ярлыков или Облако меток или Облако ключевых слов (англ. tag cloud) — визуальное представление списка ярлыков (или категорий). Частота упоминаний, поисков, ссылок в интернете с определенного сайта неких слов, терминов, имен, отображается в специальной области в виде изображения этих слов в формате гиперссылок. Размер изображения тем больше, чем чаще использовался данный тег (слово, термин или имя).
Не задавай глупых вопросов, не услышишь вранья.

Dieser Beitrag wurde von Ratibor (am 11. Februar 2009, 18:51, vor 16 Jahre) bearbeitet
dervan
#20 11. Februar 2009, 18:50
Ratibor, а если так: выборку из базы всегда делать случайную, как ты говоришь, но ввести опцию, чтобы можно было при желании полученную выборку отсортировать в алфавитном порядке?
Ratibor
#21 11. Februar 2009, 18:54
# dervan : Ratibor, а если так: выборку из базы всегда делать случайную, как ты говоришь, но ввести опцию, чтобы полученную выборку можно было отсортировать в алфавитном порядке?
Нельзя делать никаких сортировок впринципе, это как я уже сказал убивает на корню саму идею. Если тебе нужна сортировка, то используй пример на яваскрипте приведенный мной выше, там можно сделать сортировку на стороне клиента, а на стороне сервера нельзя делать никаких сортировок.

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

Dieser Beitrag wurde von Ratibor (am 11. Februar 2009, 21:13, vor 16 Jahre) bearbeitet
Trustmaster
#25 11. Februar 2009, 21:55
Хмм, похоже, имеет смысл разделить плагины tags и tag_cloud, чтобы первый обеспечивал управление тэгами и их отображением в страницах, а второй генерировал только облака. Чтобы были различные плагины для облаков: хочешь с жабой, хочешь без жабы, хочешь банановые.
May the Source be with you!
Ratibor
#26 11. Februar 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 для этих значений
Не задавай глупых вопросов, не услышишь вранья.

Dieser Beitrag wurde von Ratibor (am 11. Februar 2009, 22:39, vor 16 Jahre) bearbeitet
motor2hg
#27 11. Februar 2009, 22:48
Супер, работа проведена конкретная! Изложено понятно. Спасибо.
Ratibor
#28 11. Februar 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, как я писал выше,
то вообще ляпота :-)
Не задавай глупых вопросов, не услышишь вранья.

Dieser Beitrag wurde von Ratibor (am 11. Februar 2009, 23:05, vor 16 Jahre) bearbeitet
Sergeich
#29 11. Februar 2009, 23:19
Trustmaster, разделение на два плагина идеологически правильное, т.к. теги и облако тегов как бы разные функции выполняют :). Я за всеми пятью конечностями, плюс нос.
motor2hg
#30 12. Februar 2009, 00:16
# Trustmaster : Хмм, похоже, имеет смысл разделить плагины tags и tag_cloud, чтобы первый обеспечивал управление тэгами и их отображением в страницах, а второй генерировал только облака. Чтобы были различные плагины для облаков: хочешь с жабой, хочешь без жабы, хочешь банановые.

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

ErsteVorherige1234NächsteLetzte