cotonti.com : Настройка тегов. https://www.cotonti.com Последние сообщения в теме Cotonti en Sun, 14 Dec 2025 00:28:10 -0000 Clever Что делать для внедрения коректно работающего ЧПУ и правильно работающего обака категорий?]]> вт, 21 апр 2009 00:51:03 -0000 Trustmaster
Насчет jQuery Tagcloud, всё волшебство в селекторах. Если неплохо знать CSS2, то проблем не будет.]]>
сб, 14 фев 2009 04:25:43 -0000
Ratibor В общем вот.
Три вида сортировки и лекго настраиваемый размер и цвет тэгов.
А также поправил лимиты.

P.S. Не получается прикрутить jquery.tagcloud.js к чему бы то нибыло, отличному от li,
вот и пришлось выкосить, т.к. использовать li не вариант. Да и вообще к примеру jquery.tagcloud.js зависит сильно от дизайна, к примеру у менявообще цвета не меняются.]]>
сб, 14 фев 2009 02:17:20 -0000
Dayver Пример:
Тег - Радиосвязь
смущает замена мягкого знака....у меня вызвало ошибку 404 после перехода по такой ссылке

З.Ы. Используются ЧПУ правила
plug	e=tags&a=*&t=*&tl=1	{$e}/{$a}/{$tl}/{$t}.html
plug	e=tags&a=*	{$e}/{$a}/
]]>
сб, 14 фев 2009 00:32:52 -0000
Ratibor # Trustmaster : Примеры глюков?
Форматирование выходит за рамки блока.

Вот посмотри как я переделал.]]>
пт, 13 фев 2009 22:31:43 -0000
Trustmaster пт, 13 фев 2009 21:58:58 -0000 Ratibor # Trustmaster : Тогда есть еще предложение соединить два облака в одно. То есть сделать опцию выбора рендеринга облака: серверное и клиентское. Сейчас переделываю, позже выложу, посмотришь.
Суть в том что добавил к своему варианту в настройки тип сортировки RAND(),
также поправил лимиты, они у тебя на главной не задействованы,
ну и возможность сортировки на клиенте.
Но в любом случае придется отказаться от jquery.tagcloud.js,
т.к. он глючит неимоверно.]]>
пт, 13 фев 2009 21:06:23 -0000
Trustmaster пт, 13 фев 2009 20:45:50 -0000 dervan Ratibor, да уже отлично всё сделано - я недавно посмотрел. :) И API есть, см. функцищу sed_safename(), и добавить для любого языка просто - достаточно поместить в lang-файл массив $sed_translit, и сразу будет работать. Сейчас $sed_translit уже есть в русском и украинском lang-файлах.]]> пт, 13 фев 2009 18:17:47 -0000 Ratibor # dervan : Транслит нужен для преобразования имён файлов, которые посетители загружают на хост.
Сейчас транслит сделан только для русского языка,что не есть гуд.
Это как минимум эгоизмом попахивает.Если его делать, то делать типа апи для всех языков, примерно как мы зделали с числительными окончаниями.

P.S. Хотя я реализацию транслита и не смотрел, может он и зделан как апи. :-)
Если даже и так, то в любом случае, он преобразует только из русских имен.
В общем еще надо подумать хорошенько над этим.]]>
пт, 13 фев 2009 16:05:04 -0000
dervan # Ratibor : P.S. И думаю надо выкосить из движка транслит как класс.
Транслит нужен для преобразования имён файлов, которые посетители загружают на хост.]]>
пт, 13 фев 2009 08:21:03 -0000
Ratibor # Trustmaster : Объясняю, зачем нужно разделение. Базовая часть тэгов (все, кроме собственно облаков) по большей части всех устраивает, и будет дальше развиваться в направлении последовательного улучшения. А вот с облаками есть много вариантов.
Базовая часть - это какая ?
Если выкинуть вывод облаков, то что останется ?

А останутся только:
tags.forums.delete.php
tags.forums.editpost.php
tags.forums.editpost.tags.php
tags.forums.newtopic.php
tags.forums.newtopic.tags.php
tags.forums.topics.php
tags.page.php
tags.page.add.php
tags.page.add.tags.php
tags.page.delete.php
tags.page.edit.php
tags.page.edit.tags.php
tags.setup.php

А выкинуть придется:
tags.php
tags.forums.php
tags.index.php
tags.list.php
Выкосить функцию sed_tag_cloud из functions.php
Папку js
Ну и покромсать папки lang и tpl

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


P.S. И думаю надо выкосить из движка транслит как класс.
Звучит конечно глупо, если учесть что я его и предлагал ввести :-)
Но тогда мы не знали что можно получить нормально читаемые не латинские ссылки.]]>
пт, 13 фев 2009 07:12:27 -0000
Trustmaster
В качестве примера берем tags_new. Что в нем здорово:
  • Разноцветные тэги, потому что красиво
  • Случайный порядок, потому что, цитирую "соответствует идее облака тэгов"
  • Рендеринг на стороне сервера, для тех, кто не любит javascript по тем или иным причинам
Что в нем не здорово:
  • Алгоритм интерполяции размеров, точнее его отсутствие. Несколько жестко кодированных констант - это не очень корректно. Их можно вынести в конфиг, тогда будет универсальнее, но администратору придется их редактировать по мере роста базы сайта, что, впрочем, не так уж плохо на самом деле. Потому что если реализовывать интерполяцию, то понадобится минимум на 2 запроса больше и гораздо более сложный код обработки, что при большом количестве тэгов будет хорошо нагружать сервер.
  • Нужно больше вариантов размеров и цветов? Редактируем плагин!

Что не здорово в варианте на jquery.tagcloud:
  • Собственно, jquery.tagcloud, потому что во-первых, это JavaScript, а во-вторых, он отрабатывает не моментально, что создает неприятный визуальный эффект.
Что в нем хорошего:
  • Он умеет делать интерполяцию, сортировку и рассеивание облака на стороне клиента, что несколько облегчает жизнь вашему серверу.
  • Я уже говорил, что то, что реализовано в стандартном плагине - это цветочки. У него довольно много вариантов отображения облака. Скачайте jquery.tagcloud и посмотрите примеры.

Несколько моментов (вроде того же index и нескольких вариантов сортировки, влючая случайный) необходимо реализовать во всех вариантах плагина. Но все же мы видим 2 разных взгляда на рендеринг этих облаков. И это далеко не предел, ведь кто-то может захотеть написать, к примеру, отображение трехмерных облаков на флеше. А кто-то еще что-то эдакое. Каждый раз клонировать весь плагин tags - это приведет к большой неразберихе с версиями.

Неплохой вариант сделать универсальные облака, чтоб и на жабе работал и без нее. Но желающим сделать что-то свое придется эти части отключать (да, многие админы до сих пор не знают, что кнопочка Pause нужна для отключения частей плагина от хуков, чтобы не выполнялся ненужный код).

В общем, вот вам еще пара дней на размышления, господа. И заранее попрошу без лишнего флейма (особенно по поводу Флеша или чего-то в этом роде).]]>
пт, 13 фев 2009 04:54:36 -0000
Ratibor # Sergeich : А если тег не вставлен в шаблон, то пхп-код плагина не отрабатывает в холостую? Я не в курсе, просто интересно. Помнится была с рейтингами в седитио похожая ситуация, убирание тегов из скина вовсе не отменяло обработку пхп-кода, просто результат не выводился.
Дак вот и надо решать эту проблемму, если нет тэга, то и нефиг обрабатывать.
А так давай будем тупо все разделять, тем более то, что разделять не требуется.
У меня к примеру куча тэгов не вставлена на главной, но я же тут шашкой не махаю,
давайте типа будем разделять каждую фигню.
Если уж решать, то решать глобально.

В крайнем случае просто можно удалить tags.index.php

Также еще можно внести один переключатель в настройки плагина.
Сейчас в tags.index.php используется:
if($cfg['plugin']['tags']['pages'])
заменить его на:
if($cfg['plugin']['tags']['index'])

а, в конфиг внести переключатель index

P.S. Так что не вижу причины для разделения.]]>
чт, 12 фев 2009 03:22:13 -0000
Sergeich чт, 12 фев 2009 03:11:56 -0000 Ratibor # Sergeich : Я могу вообще не устанавливать облако тегов, при этом активно использовать сами теги.
А в чем проблемма то ?
Ну не вставляй тэг вывода тэгов в tpl.]]>
чт, 12 фев 2009 03:07:14 -0000
Sergeich
Плагин "Облако тегов" - занимается исключительно формированием облака тегов и его визуальными преобразованиями.

Я могу вообще не устанавливать облако тегов, при этом активно использовать сами теги.]]>
чт, 12 фев 2009 03:01:43 -0000
Ratibor # Dayver : Ratibor может займешся таким разделением? Тем более больше чем половину труда ты уже выполнил Не вижу смысла в таком разделении.
Что они будут делать по отдельности ?
Выводить теже теги, но с разной сортировкой ?
Дак сейчас я зделал, хочешь сортируй, хочешь нет.
Так же хочешь цвета и шрифт, пропиши их в css,
не надо цвета или шрифт, убери из css.
Или я чтото не допонимаю ?]]>
чт, 12 фев 2009 02:44:35 -0000
Dayver Ratibor может займешся таким разделением? Тем более больше чем половину труда ты уже выполнил]]> чт, 12 фев 2009 00:53:45 -0000 motor2hg # Trustmaster : Хмм, похоже, имеет смысл разделить плагины tags и tag_cloud, чтобы первый обеспечивал управление тэгами и их отображением в страницах, а второй генерировал только облака. Чтобы были различные плагины для облаков: хочешь с жабой, хочешь без жабы, хочешь банановые.

Считаю правильным решением такое разделение.]]>
чт, 12 фев 2009 00:16:07 -0000
Sergeich ср, 11 фев 2009 23:19:19 -0000 Ratibor
Решение:
перенести 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, как я писал выше,
то вообще ляпота :-)]]>
ср, 11 фев 2009 22:53:38 -0000
motor2hg ср, 11 фев 2009 22:48:49 -0000 Ratibor Вот полностью переделанный, а не только 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 для этих значений]]>
ср, 11 фев 2009 22:18:34 -0000
Trustmaster ср, 11 фев 2009 21:55:32 -0000 Ratibor # 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=https://www.cotonti.com/"'.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=https://www.cotonti.com/"'.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=https://www.cotonti.com/"'.$cfg['plugins_dir'].'/tags/js/jquery.tinysort.js"></script><script type="text/javascript" src=https://www.cotonti.com/"'.$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, остальные можете переделать сами.
Если кто не может сам, скажите, я переделаю.]]>
ср, 11 фев 2009 19:12:55 -0000
dervan # Ratibor : Нельзя делать никаких сортировок впринципе, это как я уже сказал убивает на корню саму идею. Если тебе нужна сортировка, то используй пример на яваскрипте ...
Понятно, спасибо. :)]]>
ср, 11 фев 2009 19:05:54 -0000
Sergeich ср, 11 фев 2009 19:04:03 -0000 Ratibor # dervan : Ratibor, а если так: выборку из базы всегда делать случайную, как ты говоришь, но ввести опцию, чтобы полученную выборку можно было отсортировать в алфавитном порядке?
Нельзя делать никаких сортировок впринципе, это как я уже сказал убивает на корню саму идею. Если тебе нужна сортировка, то используй пример на яваскрипте приведенный мной выше, там можно сделать сортировку на стороне клиента, а на стороне сервера нельзя делать никаких сортировок.

P.S. Для сортировки по алфавиту надо заменить в файле set.js следующее:
order:"rand"
на:
order:"asc"]]>
ср, 11 фев 2009 18:54:49 -0000
dervan Ratibor, а если так: выборку из базы всегда делать случайную, как ты говоришь, но ввести опцию, чтобы можно было при желании полученную выборку отсортировать в алфавитном порядке?]]> ср, 11 фев 2009 18:50:52 -0000 Ratibor # Trustmaster : Я не считаю, что отображение тэгов в определенном порядке является убийством идеи как таковой. В частности, алфавитная сортировка позволяет здорово экономить время на поиск нужного ключевого слова. Ну во-первых я не предлагал, не предлагаю и даже не собираюсь предлагать вносить это по умолчанию, я писал:
# Ratibor : Если кто хочет чтоб тэги работали правильно
А те кто не хочет, нехай юзают то что есть.

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

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

P.S. Для пользователей, кто не знает о чем вообще речь идет:
Облако тегов
Облако тегов или Туча ярлыков или Облако меток или Облако ключевых слов (англ. tag cloud) — визуальное представление списка ярлыков (или категорий). Частота упоминаний, поисков, ссылок в интернете с определенного сайта неких слов, терминов, имен, отображается в специальной области в виде изображения этих слов в формате гиперссылок. Размер изображения тем больше, чем чаще использовался данный тег (слово, термин или имя).
]]>
ср, 11 фев 2009 18:28:05 -0000
Trustmaster ср, 11 фев 2009 18:01:03 -0000 Ratibor Сейчас хоть сто раз обнови страничку, тэги выведутся одни и теже и в одном и том же порядке.

Если кто хочет чтоб тэги работали правильно, то для этого надо в 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;
}

После этого все будет работать правильно, т.е. при каждом обновлении тэги будут выводится в случайном порядке.]]>
ср, 11 фев 2009 16:43:37 -0000
Trustmaster сб, 07 фев 2009 16:57:49 -0000 Sergeich сб, 07 фев 2009 11:39:27 -0000 Ratibor # Trustmaster : А теперь English please и в Идеи, иначе мысль так и потеряется.
:-)

Поправь там если что.]]>
пн, 02 фев 2009 17:37:13 -0000
Trustmaster пн, 02 фев 2009 17:18:14 -0000 Ratibor
Кстати мое имхо по поводу поиска тэгов.
Может там переделать tpl ?

Вот к примеру глянь. Мне кажется это расточительство, оттуда надо убрать лишнии ссылки.
Выводить вида:

Категория 1 (в текстовом виде, без ссылки)
Страница 1 (с сылкой на страницу)
Страница 2
.....
Категория 1 (в текстовом виде, без ссылки)
Страница 1
Страница 2
.....

Тогда не будет распыления ссылок.

И вообще надо заняться посерьездней внутренней перелинковкой, чтоб поисковик впринципе не увидел ничего лишнего, такого как страница регистрации, ввода пароля, восстановления пароля и т.п. К примеру можно ссылки на все левые страницы спрятать в javascript.]]>
пн, 02 фев 2009 17:10:18 -0000
Trustmaster пн, 02 фев 2009 17:01:27 -0000 Ratibor Trustmaster
Я пока остановился на таком варианте:
### COTONTI URLTRANS ###
# Rewrite engine options
Options FollowSymLinks -Indexes
RewriteEngine On
# Server-relative path to seditio:
RewriteBase "/"
RewriteRule ^(tags)/(pages|forums)/(.*)$ plug.php?e=$1&a=$2&t=$3 [NC,NE,L]
RewriteRule ^(tags)/(pages|forums)/(.*)$ plug.php?e=$1&a=$2$3 [NC,NE,L]

### COTONTI URLTRANS ### 
Все равно ссылки тэгов могут быть либо
plug.php?e=tags&a=pages
либо
plug.php?e=tags&a=forums

ну а на конце (.*) пусть все хавает, все равно это в поиск уйдет.
Но сейчас еще проштудирую доки по .htaccess, может что крсивей найду.

# Trustmaster : Может быть, нужно убрать опцию NE. Надо будет еще копать.
Кстати что за опция, не могуу найти описания ?
Вот эти знаю: R, F, G, P, L, N, C, NS, NC, QSA, PT, S, E]]>
пн, 02 фев 2009 16:30:36 -0000