Перейти к содержимому


Облако тегов


  • Вы не можете ответить в тему
В теме одно сообщение

#1 vsupport

    Продвинутый пользователь

  • Администраторы
  • 758 сообщений
Репутация: 31
Ассистент

Отправлено 23 May 2011 - 11:42 AM

"Облако тегов или Туча ярлыков или Облако меток или Облако ключевых слов (англ. tag cloud) — визуальное представление списка ярлыков (или категорий)"
Как следует из описания, величина изображения (текста ссылки) для выбранного слова, определяется частотой упоминанний данного слова в конечном списке.
В данной статье представлена функция блока "Облако тэгов" (ОТ) для скрипта интернет-магазина ShopCMS. Функция разрабатывалсь для версии 3, однако при желании ее, с минимальными изменениями, можно перенести и на другие версии скрипта.
Ключевые слова для ОТ будем вносить "вручную", т.е. заполнять для каждой категории в отдельности. Для этого несколько изменим структуру базы данны (БД). В таблицу категорий добавим поле CLOUD_KEYWORDS, а также поле USE_IN_CLOUD, значение в котором будет определять использовать ли слова данной категории при выводе ОТ:

ALTER TABLE "scms_categories" ADD "cloud_keywords" text, ADD "use_in_cloud" int(11) NOT NULL default "1";

Ключевые слова вносятся через запятую.
Еще одной особенностью представленной функции - отдельное окно редактирования слов облака для категории. Это связано с тем фактом, что некоторые файлы в поставке скрипта находятся "под Zend"ом", а именно файл admin.php, в котором находится код редактирования категории товара.
ОТ состоит из 2-х частей:

  • скрипта, формирующего массив слов из результата запроса к БД;
  • части шаблона для вывода результатов запроса или, к примеру, флэш-анимации.
Получение списка слов

В каталоге includes/ создадим файл с именем cloud_keywords.php. Скрипт содержащийся в файле автоматически подключается при обработке файла index.php.
При выводе ОТ также дополнительно используем флэш-анимацию (ФА), представленную здесь.
Инициализицируем переменные. Константы, например CONF_CLOUD_MINFONTSIZE, при желании можно перенести в раздел "Настройки" административной панели.

define(CONF_CLOUD_MINFONTSIZE, 11); $result = array(); $cloud_tags = "";

Запрос к базе данных на получение ключевых слов выглядит следущим образом:
$q = db_query("SELECT categoryID, cloud_keywords, use_in_cloud FROM "     .CATEGORIES_TABLE)." WHERE use_in_cloud = 1 ");  

Обработаем полученные результаты запроса:
while ($row = db_fetch_row($q))  {      $keywords = explode(",", $row["cloud_keywords"]);      for ($i = 0; $i < count($keywords); $i++)      {          $keyword = trim($keywords[$i]);          if ( strlen($keyword) == 0 )              continue;          $idx = isKeywordExists($keyword, $result);            if ( !isset($idx) )          {              $cat["categoryID"] = $row["categoryID"];              $cat["keyword"] = $keyword;              $cat["rating"] = 1;              $cat["link"] = "index.php?categoryID=";              $cloud_tags .= $cat["link"];              $result[] = $cat;          }          else              $result[$idx]["rating"]++;      }  }  

Здесь переменная массива $cat["link"] содержит ссылку для ФА. Фукнция isKeywordExists проверяющая существование слова в массиве и возвращающая индекс элемента массива в случае успешного поиска:
function isKeywordExists($keyword, $array)  {      for ($k = 0; $k < count($array); $k++)      {          if ($keyword == $array[$k]["keyword"])              return $k;      }  }  

Перемешаем элементы полученного массива случайным образом:
shuffle($result);
Сформируем блок для показа флэш-анимации:
$cloud = "

";
Присваиваем полученный массив переменной cloud_keywords, используемой в шаблоне при выводе ОТ и переменной cloud, содержащей ФА облака:
 $smarty->assign("cloud_keywords", $result);  $smarty->assign("cloud", $cloud);  

Скрипт готов. Можно перейти к выводу результатов.
Шаблон для показа облака

Шаблон для вывода ОТ представлен в виде двух частей. Первая отображает облако в "классическом" виде:

{section name=cl loop=$cloud_keywords} %7Bif%20$smarty.const.CONF_MOD_REWRITE%20eq%201%7Dcategory_%7B$cloud_keywords[cl].categoryID%7D.html%0D%0A%20%20%20%20%7Belse%7Dindex.php?categoryID=%7B$cloud_keywords[cl].categoryID%7D%7B/if%7D {if $smarty.section.cl.index > 0} {/if} {/section}

Изображение

Вторая в виде флэш-анимации:

{$cloud}

Изображение

Для классического варианта вывода облака дополнительно необходимо определить CSS стили:

.cloud_keywords a.rating11 {font-size: 11px; color: #00BFFF;} ... .cloud_keywords a.rating22 {font-size: 22px; color: #8FBC8F;}

Подключим файл для редактирования слов облака категории. Скопируем файл cloud_cat.php архива в корневой каталог скрипта. Ссылку на собственно функцию редактирования слов вставьте в файл шаблона catalog_products_categories.tpl.html:
#  

источник


  • 0

#2 Omega

    Пользователь

  • Пользователи
  • PipPip
  • 17 сообщений
Репутация: 0
Начинающий

Отправлено 07 October 2011 - 08:00 PM

Можете пояснить по поводу базы данных: объясните в какой файл именно заливать дополнения скрипта? я не догоняю, что то куда именно идёт половина описанных строк
  • 0