Объемное облако тегов Cumulus для HostCMS

#
Re: Объемное облако тегов Cumulus для HostCMS
leousa, вы бы лучше, чем шаблон переделывать, описали что за ошибки у вас возникли - всем полезнее было бы.
Потому как в вашем шаблоне я вижу следующие недостатки:

Во1х он тянет за собою кусок _вашего_ оформления от вашего сайта.

Во2х, и это уже серьезнее, в вашем случае облако будет видно лишь тем у кого включен javascript и есть flash. Всем остальным не будет видно ничего. Кроме того, поисковый робот также не увидит вашего облака, и не сможет его проиндесировать.
А в моем варианте шаблона для роботов и тех у кого нет javascript/flash генерируется html-версия облака, которая потом заменяется flash-версией. Все ж продумано, а не просто так.

Ну и в3х, вы выложили ваш шаблон в таком виде, что скопипастить его отсюда невозможно, только заново набрать Но это, с учетом первых двух пунктов, даже хорошо! Не исправляйте этот косяк, прошу вас как автор темы
Заказов не беру. Консультирую редко.
#
Re: Объемное облако тегов Cumulus для HostCMS
А вот и очередное обновление рецепта!
На этот раз XSL-шаблон стал проще, его легче читать и проще понять что в нем происходит. А весь javascript по подключению облака вынесен в отдельный файл и переписан в jQuery-стиле. Код поддерживает любое число облаков на странице - от нуля до бесконечности! (Хотя я слабо себе представляю ситуацию, когда их может понадобиться больше двух). Javascript-код также поддерживает атрибут defer, что позволяет оптимизировать загрузку страниц в браузер.
Код использует jQuery-библиотеку "jQuery SWFObject Plugin".

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

Код построения облака для информационной системы (вставляется в макет или шаблона страницы)
<?php
/* Отображаем тэги ИС */

// автоматическое определение id текущей инфосистемы из настроек структуры
// для шаблона главной страницы нужно вбить id вручную,
// заменив следующую строку, например, на $InformationSystemId = 1;
$InformationSystemId = to_int($GLOBALS['LA']['InformationSystemID']);

$xsl_name = 'УниверсальноеОблакоТэговCumulus';

// Определим текущий домен сайта, для передачи его в XML
$site = &singleton('site');
$alias_row = $site->GetAlias($_SERVER['HTTP_HOST']);
$current_alias = $site->GetCurrentAlias($alias_row['site_id']);

$property = array();

$external_propertys = array();

// Передадим текущий домен сайта в XML
$external_propertys['current_alias'] = $current_alias;

$InformationSystem = &singleton('InformationSystem');
$InformationSystem->ShowTagsCloud($InformationSystemId, $xsl_name, $property, $external_propertys);
?>


Код построения облака для интернет-магазина (вставляется в макет или шаблона страницы)
<?php
/* Отображаем тэги Магазина */

// автоматическое определение id текущего магазина из настроек структуры
// можно вбить id вручную, заменив следующую строку, например, на $shop_id = 1;
$shop_id = to_int($GLOBALS['LA']['shop_id']);

$xsl_name = 'УниверсальноеОблакоТэговCumulus';

// Определим текущий домен сайта, для передачи его в XML
$site = &singleton('site');
$alias_row = $site->GetAlias($_SERVER['HTTP_HOST']);
$current_alias = $site->GetCurrentAlias($alias_row['site_id']);

$property = array();

$external_propertys = array();

// Передадим текущий домен сайта в XML
$external_propertys['current_alias'] = $current_alias;

$shop = &singleton('shop');
$shop->ShowTagsCloud($shop_id, $xsl_name, $property, $external_propertys);
?>


Код файла cumulus.js
// enabling Cumulus with jQuery & swfobject
$(document).ready(function () {
   $('.tagscloudflashcontent').each(function(){
        $(this).flash(
         {
            swf: '/cumulus/tagcloud.swf',
            width: 190,
            height: 190,
               wmode: 'transparent',         
            allowScriptAccess: 'always',
               allowFullScreen: false,
            flashvars: {
            tcolor: '0x333333',         
            mode: 'tags',
            distr: 'true',
            tspeed: '100',
            tagcloud: '<tags>' + $(this).find($('div.TagsCloud')).html() + '</tags>'
            }
         },
            { version: 8 }
         );
      });   
});


Код xsl-шаблона "УниверсальноеОблакоТэговCumulus"
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="UTF-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>

   <!-- УниверсальноеОблакоТэговCumulus  -->

   <xsl:template match="/">
      <xsl:choose>
         <xsl:when test="/document/InformationSystem/tags/node()">
            <xsl:apply-templates select="/document/InformationSystem/tags"/>
         </xsl:when>
         <xsl:when test="/shop/tags/node()">
            <xsl:apply-templates select="/shop/tags"/>
         </xsl:when>
      </xsl:choose>
   </xsl:template>

   <xsl:template match="tags">

      <!--Зададим минимальный и максимальный размер шрифта-->
      <xsl:variable name="max_size" select="24"/>
      <xsl:variable name="min_size" select="9"/>

      <!--Определим количество элементов для наиболее распространенной метки-->
      <xsl:variable name="tag_count" select="tag/count"/>
      <xsl:variable name="max_tag_count" select="($tag_count[not(. &lt; $tag_count)])[1] - 1"/>

      <!--Вычислим коэффициент размерности шрифта для меток с различным количеством элементов-->
      <xsl:variable name="coeff_size">
         <xsl:choose>
            <xsl:when test="$max_tag_count &gt; 0">
               <xsl:value-of select="($max_size - $min_size) div $max_tag_count"/>
            </xsl:when>
            <xsl:otherwise>0</xsl:otherwise>
         </xsl:choose>
      </xsl:variable>

      <xsl:variable name="domain">
         <xsl:choose>
            <xsl:when test="/document/current_alias/node()">
               <xsl:value-of select="/document/current_alias"/>
            </xsl:when>
            <xsl:when test="/shop/current_alias/node()">
               <xsl:value-of select="/shop/current_alias"/>
            </xsl:when>
         </xsl:choose>
      </xsl:variable>

      <h2>Метки</h2>

      <div class="tagscloudflashcontent">
         <div class="TagsCloud">
            <xsl:apply-templates select="tag">
               <xsl:with-param name="min_size" select="$min_size"/>
               <xsl:with-param name="total" select="sum(tag/count)"/>
               <xsl:with-param name="coeff_size" select="$coeff_size"/>
               <xsl:with-param name="domain" select="$domain"/>
            </xsl:apply-templates>
         </div>
      </div>
   </xsl:template>

   <!-- Облако из групп -->
   <xsl:template match="tags/tag">
      <xsl:param name="min_size"/>
      <xsl:param name="total"/>
      <xsl:param name="coeff_size" select="10"/>
      <xsl:param name="domain"/>

      <xsl:variable name="tag_url">
         <xsl:choose>
            <xsl:when test="path/node()">
               <xsl:value-of select="parent::*/parent::*/path"/>
            </xsl:when>
            <xsl:otherwise>
               <xsl:value-of select="parent::*/parent::*/url"/>
            </xsl:otherwise>
         </xsl:choose>
      </xsl:variable>

      <xsl:variable name="size" select="round($min_size + ((count - 1) * $coeff_size))"/>

      <a href="http://{$domain}{$tag_url}tag/{tag_path_name}/" style="font-size:{$size}pt">
         <xsl:value-of select="tag_name"/>
      </a>
   </xsl:template>
</xsl:stylesheet>


Как всегда, все это можно скачать одним архивом, и развернуть его в корень папки, в которую установлена HostCMS.

Для подключения облака, в части head макета, после подключения библиотеки jQuery, необходимо добавить следующие две строки:
<script src="/cumulus/jquery.swfobject.1-1-1.js" type="text/javascript"></script>
<script src="/cumulus/cumulus.js" type="text/javascript"></script>

Далее нужно создать в системе XSL-шаблон с названием "УниверсальноеОблакоТэговCumulus" и скопировать в него XSL-код (см. выше или из файла в архиве).
Затем в нужном месте макета или шаблона вставить код вызова построения облака, обновить страничку в браузере и медитировать на результат!
Заказов не беру. Консультирую редко.
#
Re: Объемное облако тегов Cumulus для HostCMS
Все сделал как написано теги появляются но не в виде объемного облака


Intel AMD AGP тест
#
Re: Объемное облако тегов Cumulus для HostCMS
livliv, вероятно что-то вы сделали не так. Воспользуйтесь рецептом из моего второго сообщения на этой странице и внимательно следуйте инструкции.
Заказов не беру. Консультирую редко.
#
Re: Объемное облако тегов Cumulus для HostCMS
Kotoff,
1. Шаблон для Интернет-магазина - вставил Код построения облака для интернет-магазина
2. Шаблон для Информационной системы  - вставил Код построения облака для ИС

1 и 2 вставлял после
<!-- Правый блок -->
<div class="right right_row" >

3. создал XSL-шаблон

Далее  Основной макет сайта после
<!-- jQuery -->
   <script type="text/javascript" src="/hostcmsfiles/jquery/jquery.js"></script>
вставил
<script src="/cumulus/jquery.swfobject.1-1-1.js" type="text/javascript"></script>
         <script src="/cumulus/cumulus.js" type="text/javascript"></script>

Что я ще не сделал? Если что сильно не пинайте я новичок в этом деле ,

забыл залил файлы на ftp (заливал просто папкой cumulus_utf8_jquery, а так же    misc + файлы в корень сайта)   
#
Re: Объемное облако тегов Cumulus для HostCMS
Ну спалите уж тогда адрес странички, посмотрю.

Файлики-то в папку /cumulus/ положили?
Заказов не беру. Консультирую редко.
#
Re: Объемное облако тегов Cumulus для HostCMS
вот скорее все я папку как то не правильно заливаю, как она д.б. залита и название у папки?

извиняюсь, затупил что-то увидел поправил, очевидно стало нормально но сами метки исчезли
#
Re: Объемное облако тегов Cumulus для HostCMS
livliv, вы архивчик вот этот скачали?
В архиве папка, называется она cumulus. Вот достаньте ее оттуда, вместе с файлами, и всю папку положите на ftp, туда же, где у вас index.php от hostcms. Прямо так целой папкой и положите. При сортировке по алфавиту она у вас будет между папками cron и hostcmsfiles. Больше ничего с ней делать-то и не надо.

Если не заработает - стучитесь ко мне с адресом страницы, посмотрю - а то так мы долго гадать будем.
Заказов не беру. Консультирую редко.
#
Re: Объемное облако тегов Cumulus для HostCMS
По результатам сегодняшних багрепортов, внесены следующие изменения.

В файле cumulus.js строка
tagcloud: '<tags>' + $(this).find($('div.TagsCloud')).html() + '</tags>'

изменена на
tagcloud: '<tags>' + $(this).children().html() + '</tags>'

для более корректной работы.

В xsl-шаблоне «УниверсальноеОблакоТэговCumulus» в определении переменной tag_url
      <xsl:variable name="tag_url">
         <xsl:choose>
            <xsl:when test="path/node()">
               <xsl:value-of select="parent::*/parent::*/path"/>
            </xsl:when>
            <xsl:otherwise>
               <xsl:value-of select="parent::*/parent::*/url"/>
            </xsl:otherwise>
         </xsl:choose>
      </xsl:variable>

изменено условие
      <xsl:variable name="tag_url">
         <xsl:choose>
            <xsl:when test="/shop/node()">
               <xsl:value-of select="parent::*/parent::*/path"/>
            </xsl:when>
            <xsl:otherwise>
               <xsl:value-of select="parent::*/parent::*/url"/>
            </xsl:otherwise>
         </xsl:choose>
      </xsl:variable>

для исправления url меток для интернет-магазина.

Как обычно, архив обновлен.
Заказов не беру. Консультирую редко.
#
Re: Объемное облако тегов Cumulus для HostCMS
Обновление. Исправлена ошибка отображения тегов в облаке, возникающая в IE8.
Для исправления ошибки изменен файл cumulus.js
Вот его новый код:
// enabling Cumulus with jQuery & swfobject
$(document).ready(function () {
   $('.tagscloudflashcontent').each(function(){
        var taglist = '';
        $(this).children().children().each(function(indx, element){
          taglist += '<a href="' + $(element).attr('href') + '" style="' + $(element).attr('style') + '">' + $(element).html() + '</a>';          
        });
        $(this).flash(
         {
            swf: '/cumulus/tagcloud.swf',
            width: 190,
            height: 190,
               wmode: 'transparent',         
            allowScriptAccess: 'always',
               allowFullScreen: false,
            flashvars: {
                tcolor: '0x333333',         
                mode: 'tags',
                distr: 'true',
                tspeed: '100',
                tagcloud: '<tags>' + taglist + '</tags>'
            }
         },
            { version: 8 }
         );
      });   
});


Как обычно, архив обновлен.
Заказов не беру. Консультирую редко.
Авторизация