Облако тегов в Shop-script

у меня облако тегов формируется из выборки подходящих данных из базы с делением этих данных на "теги" с подсчетом их повторов.
не знаю будет ли по коду понятно, но достаточно изменить выборку данных из базы и настроить стили и будет ворк. кое где написал комментарии, может пригодится
PHP:
$where_clause = " where (in_stock>=1 OR preorder=1) and enabled=1";
$tag = array();
$q = db_query("SELECT name, rel_artist, rel_label, rel_track2 FROM ".
				PRODUCTS_TABLE.$where_clause." ORDER BY in_stock");	
$searchstr = array ( "/", "|", "///", "feat.", "feat", "ft.", " & ", "&", "(", ")"); //что принимаем за разделители 
$replacestr = ","; // заменяем на общий разделитель
while($row = db_fetch_row($q))
{
	if (trim($row[0]!=""))	
		{
			$splitname = explode(",", trim(str_replace($searchstr,$replacestr,$row[0])));
			if ($splitname[0]) $tag[] = trim($splitname[0]);
			if ($splitname[1]) $tag[] = trim($splitname[1]);
		}
	if (trim($row[1]!=""))	$tag[] = trim($row[1]);
	$splitstyle = explode(",", trim(str_replace($searchstr,$replacestr,$row[2])));
	if (trim($row[2]!=""))	
		{
			$splitname = explode(",", trim(str_replace($searchstr,$replacestr,$row[2])));
			if ($splitname[0]) $tag[] = trim($splitname[0]);
			if ($splitname[1]) $tag[] = trim($splitname[1]);
			if ($splitname[2]) $tag[] = trim($splitname[2]);
		}
	foreach ($splitstyle as $value) 
		{
			if ($value) $tag[] = trim($value);
		}
}
while (list($key, $val) = each($tag))
{  
if (isset($mas[trim($val)]))
		{
      $mas[$val]++;
	  	}
   else
   		{
      $mas[$val] = 1;
		}
}	
$i = 0;
foreach ($mas as $item=>$val)
{
$i++;
$tagcloud[$i]["tag"] = $item; // тег
$tagcloud[$i]["counter"]=$val; // счетчик тега
}
$terms = array(); 
$maximum = 0; 
for ($i = 1; $i < count($tagcloud); $i++) {
        if ($tagcloud[$i]['counter'] > $maximum) {
            $maximum = $tagcloud[$i]['counter'];
        }
        if ($tagcloud[$i]['counter'] < $min) {
            $min = $tagcloud[$i]['counter'];
        }
		}
shuffle($tagcloud); // сортировка
//asort($tagcloud);
foreach ($tagcloud as $k) //присваиваем стили 
{
    $percent = (floor(($k['counter'] / $maximum) * 100));  
    if ($percent <2)
    {
        $class = 'tagsize1';
    }  elseif ($percent>= 2 and $percent <3) {
        $class = 'tagsize1-2';
    }  elseif ($percent>= 3 and $percent <5) {
        $class = 'tagsize3-4';
    }  elseif ($percent>= 5 and $percent <7) {
        $class = 'tagsize5-6';
    }  elseif ($percent>= 7 and $percent <21) {
        $class = 'tagsize7-20';
    }  elseif ($percent>= 21 and $percent <51) {
        $class = 'tagsize21-50';
    } else {
        $class = 'tagsize51-';
    }
 //Формирование html строки
   $tagclo[] = "<span class='$class'><a style='$class' href='/tag/" . preg_replace("/\+/" ,"-",urlencode($k['tag'])) . "/' title='" . TransformDataBaseStringToText( $k['tag'] ) . "'> " .strtolower($k['tag'])." </a></span>";
//конечно можно было бы формировать html код в smarty, но показалось на php эта работа будет побыстрее. 
}
	$smarty->assign("tagcloud",$tagclo); //и просто тупо вывожу в блок шаблона
 
для стандартного SS можно так
PHP:
$where_clause = " where enabled=1"; //получаем все включенные позиции
$tag = array();
$q = db_query("SELECT name FROM ".
                PRODUCTS_TABLE.$where_clause." ORDER BY in_stock");    
$searchstr = array ( "/", "|", "///", " & ", "&", "(", ")");
 
у меня облако тегов формируется из выборки подходящих данных из базы с делением этих данных на "теги" с подсчетом их повторов...
..для стандартного SS можно так...
Предлагаю оформить всё в инструкцию.
А то один: "у меня таК..", второй: "а у меня вот тАк..".
Хочется уже увидеть общий знаменатель!
Нет. {..Нет ничего сложного для человека с интеллектом..}
Разобраться невопрос, но это время. А время, как известно - деньги.
Вот и хочеться видеть, что кто-то разобрался, "прикрутил" и сказал: "парни! я вот сделал ТаК и тАк!...".
С нетерпением жду (ждём) инструкции....
 
Не могу выставить удобное (большее) расстояние между словами, из-за чего они сливаются друг с другом и не работают различные цвета слов. А также не удается уменьшить размер максимальный шрифта в облаке. Из-за чего облако не похоже на шар.... помогите!
Та же проблема, подскажите как с ней разобраться:(
Еще в логах вот такая ошибка выскакивает:
2009-06-25 00:10. array_rand() [<a href='function.array-rand'>function.array-rand</a>]: Second argument has to be between 1 and the number of elements in the array File: ****/published/SC/html/scripts/modules/cptmanager/_methods/tag_cloud.php Line: 71 Error #: 2
$all_Tags2=array_rand($all_Tags, 20);
shuffle($all_Tags);
$a=0;//в какой-то из этих строк ошибка :(
 
too: Ask4morE - здесь идет речь об облаке тегов для Shop-script Prem, Pro а ты ето дело хочеш всунуть в вебасист :D
Для асиста есть ришение - поиск рулит.
 
Юзаю скрипт для ВАСС, но проблема то в стилях отображения, а не в его неверной работе. Да и скрипт исходник вроде как 1, если не ошибаюсь, значит люди прошаренные в данном скрипте, могут что-то подсказать :ah:
 
Честно говоря, мало что понял из этой темы.
Например, в какой файл прописывать Для просмотра ссылки Войди или Зарегистрируйся?
Ткните носом, плиз, в готовое решение.
Собственно мне даже не нужно никакого флеш-облака, достаточно простого. Все что требуется - реализовать через теги бренды в магазине.
P.S. Для просмотра ссылки Войди или Зарегистрируйся, но пока что без толку ((
 
А последний скрипт проверяли?
У меня не отображается почему-то
 
Назад
Сверху