Forums / National / Russian / Модули и плагины / Счётчик для Tags

Подскажите

ATCnik
#1 2009-08-20 12:03
Привет всем, господа, какой код нужно использовать, что бы был автоматический подсчёт определённого слова в облаке тегов.
Вот к примеру тут, вы видете вверху картинки которые привязаны к облаку тегов, наводя на них, вы видете кол-во встречающихся тегов, вот как сделать что бы это кол-во подсчитывалось автоматически?
Trustmaster
#2 2009-08-21 03:31
А он ведётся, просто вывод не организован. Скажем, берём нужный кусок кода плагина tags, который выводит облако. Например, в tags.index.php:
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' : '';
		foreach($tc_styles as $key => $val)
		{
			if($cnt <= $key)
			{
				$dim = $val;
				break;
			}
		}
		$tc_html .= '<a href="'.sed_url('plug', 'e=tags&a='.$cfg['plugin']['tags']['index'].'&t='.$tag_u.$tl)
			.'" class="'.$dim.'">'.htmlspecialchars($tag_t).'</a> ';
	}
Вот здесь в $tc_html вполне можно использовать $cnt - счётчик для текущего тега.
May the Source be with you!
Evil
#3 2009-08-21 11:44
# Trustmaster : Вот здесь в $tc_html вполне можно использовать $cnt - счётчик для текущего тега.
Так будет верна вставка?
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' : '';
		foreach($tc_styles as $key => $val)
		{
			if($cnt <= $key)
			{
				$dim = $val;
				break;
			}
		}
		$tc_html .= '<a href="'.sed_url('plug', 'e=tags&a='.$cfg['plugin']['tags']['index'].'&t='.$tag_u.$tl)
			.'" class="'.$dim.'">'.htmlspecialchars($tag_t).' ('$cnt')</a> ';
	}
ATCnik
#4 2009-08-21 12:04
# Trustmaster : А он ведётся, просто вывод не организован. Скажем, берём нужный кусок кода плагина tags, который выводит облако. Например, в tags.index.php:
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' : '';
		foreach($tc_styles as $key => $val)
		{
			if($cnt <= $key)
			{
				$dim = $val;
				break;
			}
		}
		$tc_html .= '<a href="'.sed_url('plug', 'e=tags&a='.$cfg['plugin']['tags']['index'].'&t='.$tag_u.$tl)
			.'" class="'.$dim.'">'.htmlspecialchars($tag_t).'</a> ';
	}
Вот здесь в $tc_html вполне можно использовать $cnt - счётчик для текущего тега.
За это спасибо, но если бы ещё и описание было, что куда вставлять, вам бы цены не было.
Trustmaster
#5 2009-08-21 15:09
$cnt - эта переменная содержит значение счётчика (число). Строчка с $tc_html формирует вывод каждого отдельного тега. Скажем мы хотим, чтобы счётчик показывался при наведении на ссылку, поэтому поместим счётчик в атрибут title:
$tc_html .= '<a title="'.$cnt.'" href="'.sed_url('plug', 'e=tags&a='.$cfg['plugin']['tags']['index'].'&t='.$tag_u.$tl)
			.'" class="'.$dim.'">'.htmlspecialchars($tag_t).'</a> ';
May the Source be with you!
ATCnik
#6 2009-08-21 16:40
Странно, я заменил как вы сказали, у меня не прозошло абсолютно никаких изменений.

Правдо я думал теги будут работать по другому принципу, например:
<a href=http://sait.ru/plug.php?e=tags&a=pages&t=TEST&tl=1> 13 совпадений </a>
Trustmaster
#7 2009-08-22 00:22
Вам не надо выводить сам тег, а только число совпадений? Тогда нечто вроде
$tc_html .= '<a href="'.sed_url('plug', 'e=tags&a='.$cfg['plugin']['tags']['index'].'&t='.$tag_u.$tl)
			.'" class="'.$dim.'">'.$cnt.' совпадений</a> ';
Только обратите внимание, в каком именно облаке меняете код. Облака есть на главной, в категориях и в форумах - все разные.
May the Source be with you!
ATCnik
#8 2009-08-22 01:12
По всей видимости мы друг друга не понимаем.
Вы немножко не поняли что мне требуется.

Мне надо что бы число определённых тегов считалось автоматически, тоесть к примеру у меня на сайте страничек с тегом "Ухты" 7 штучек, и мне надо что бы число 7 отображалось в теге <title="">.
Как показано тут, при наведении на картинки (при помощи тега title="", выскакивает некое описание, и тут как раз таки требуется число этих уникальных тегов).
Вот я не знаю как это дело реализовать.
Trustmaster
#9 2009-08-22 02:44
Почему-то в упор не вижу на той страничке облако тегов. Можно скриншот?
May the Source be with you!
ATCnik
#10 2009-08-22 10:20
Вот посмотрите:

На данный момент мой скрипт выглядит так:
<a href=ссылка на тег(тоесть выделяю определённое слово тег и копирю ссылку на него, и при нажатие получается тоже самое что я бы в плагине таг набрал тоже самое ключевое слово.) title="Иван Иванович Евдокентий <br> 121 видео"><img src=></a>
Вот более понятный скрин, что происходит при нажатии:


Дак вот, и вот это число которое находится в титле (121 видео), это то самое число которое надо что бы изменялось автоматически, на количество этих ключевых слов (например слов Иван Иванович Евдокентий).

Может есть более простой способ, и я пытаюсь придумать велосипед? :)
Trustmaster
#11 2009-08-22 15:07
Ну так если речь об облаке тегов, то код из поста #5 должен сработать: при наведении на тег в облаке всплывает подсказка с количеством статей, отмеченных этим тегом. Если код в правильном месте отредактирован, конечно.

Или речь идёт о том, чтобы в произвольном месте (в шапке, скажем) узнать число вхождений для нужного тега?
May the Source be with you!
ATCnik
#12 2009-08-23 05:53
Да, вы меня поняли, речь идёт о произвольном месте (иммено в шапке) узнать число/кол-во нужного тега.
После того как изменил всё что описано в 5-ом посте, при наведении ничего не произошло:


Может я что то не то делаю, а может версия движка на это влияет?

Добавлено 2 Минуты спустя:

На всяий случай выкладую всё содержимое моего tags.index.php
Вдруг у меня там ошибка, или что то не дописал, вообщем вам как профи веднее.

if (!defined('SED_CODE')) { die('Wrong URL.'); }
if($cfg['plugin']['tags']['pages'])
{
	require_once sed_langfile('tags');
	require_once $cfg['plugins_dir'].'/tags/inc/config.php';
	$limit = $cfg['plugin']['tags']['lim_index'] == 0 ? null : (int) $cfg['plugin']['tags']['lim_index'];
	$tcloud = sed_tag_cloud('pages', $cfg['plugin']['tags']['order'], $limit);
	$tc_html = '<div 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' : '';
		foreach($tc_styles as $key => $val)
		{
			if($cnt <= $key)
			{
				$dim = $val;
				break;
			}
		}
$tc_html .= '<a title="'.$cnt.'" href="'.sed_url('plug', 'e=tags&a='.$cfg['plugin']['tags']['index'].'&t='.$tag_u.$tl)
            .'" class="'.$dim.'">'.htmlspecialchars($tag_t).'</a> ';
	}
	if($cfg['plugin']['tags']['more'] && $limit > 0)
	{
		$tc_html .= '<hr /><a class="more" href="'.sed_url('plug', 'e=tags&a=pages').'">'.$L['tags_All'].'</a>';
	}
	$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']
	));
}
?>


Добавлено 1 день спустя:

Господа, неужели никто не знает как это сделать ? :(
This post was edited by ATCnik (2009-08-24 07:29, 14 years ago)
Trustmaster
#13 2009-09-02 02:26
Можно написать маленький плагинчик, который будет получать статистику по нужным тегам для шапки. А теги указать в конфигурации.
May the Source be with you!
ATCnik
#14 2009-09-05 05:40
Увы, новичку плагин написать будет не легко, ну что ж, не унываю, попытаюсь :)
Спасибо :)