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

#
Re: Объемное облако тегов Cumulus для HostCMS
Пару месяцев назад попробовал установить это облако тегов, но ничего не получилось и я отложил разборки на потом. А сегодня вот сразу все получилось. Kotoff, большое спасибо
iNikSite - дизайн и фронтенд разработка
#
Re: Объемное облако тегов Cumulus для HostCMS
iNik, да пожалуйста!
Заказов не беру. Консультирую редко.
#
Re: Объемное облако тегов Cumulus для HostCMS
Привет! что-то не заводится

ошибки сыпать начинает...

Предупреждение: DOMDocument::loadXML() [domdocument.loadxml]: input conversion failed due to input error, bytes 0x98 0xD0 0xA2 0xD0 в файле /home/u1stnost/public_html/modules/Xsl/Xsl.class.php (строка 267)
Предупреждение: DOMDocument::loadXML() [domdocument.loadxml]: input conversion failed due to input error, bytes 0x98 0xD0 0xA2 0xD0 в файле /home/u1stnost/public_html/modules/Xsl/Xsl.class.php (строка 267)
Предупреждение: DOMDocument::loadXML() [domdocument.loadxml]: encoder errorComment not terminated <!--Создадим РєРѕРЅС‚ in Entity, line: 33 в файле /home/u1stnost/public_html/modules/Xsl/Xsl.class.php (строка 267)
Предупреждение: DOMDocument::loadXML() [domdocument.loadxml]: Premature end of data in tag template line 8 in Entity, line: 33 в файле /home/u1stnost/public_html/modules/Xsl/Xsl.class.php (строка 267)
Предупреждение: DOMDocument::loadXML() [domdocument.loadxml]: Premature end of data in tag stylesheet line 3 in Entity, line: 33 в файле /home/u1stnost/public_html/modules/Xsl/Xsl.class.php (строка 267)


Версия HostCMS: 5.9.27
Редакция Малый Бизнес

Делал по инструкции из третьего поста

Шаблон страницы:

<div class="module">
            <div class="module-header">Облако тегов</div>
               <div class="module-body">
                  <?php
                     /* Отображаем тэги Магазина */
                     
                     // автоматическое определение id текущего магазина из настроек структуры
                     // можно вбить id вручную, заменив следующую строку, например, на $shop_id = 3;
                     $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);
                  ?>
               </div>
         </div>      


XSL-шаблон:

<?xml version="1.0" encoding="windows-1251"?>
<!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="Windows-1251" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
   
   <!-- УниверсальноеОблакоТэговCumulus  -->
   
   <xsl:template match="/">
      
      <h2>Метки</h2>
      
      <!--Подключим библиотеку-загрузчик Flash-->
      <script type="text/javascript" src="/skin/cumulus/swfobject.js"></script>
      
      <!--Определим количество элементов для наиболее распространенной метки-->
      <xsl:variable name="max_tag_count" select="(//tag/count[not(. &lt; //tag/count)])[1] - 1"/>
      
      <!--Зададим минимальный и максимальный размер шрифта-->
      <xsl:variable name="max_size" select="24"/>
      <xsl:variable name="min_size" select="9"/>
      
      <!--Вычислим коэффициент размерности шрифта для меток с различным количеством элементов-->
      <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>
      
      <!--Создадим контейнер для Flash-облака.
      ОБРАТИТЕ ВНИМАНИЕ! Если на странице несколько облаков, то id у их контейнеров должен быть разным!-->
      <div id="smallcloudflashcontent">
         <!--Выведем сюда классическое облако тегов, для тех у кого отключен Flash или Javascript-->
         <div class="TagsCloud">
            <xsl:apply-templates select="//tags/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:apply-templates>
         </div>
      </div>
      
      <!--Подключим Flash-облако с помощью библиотеки SWFObject-->
      <script>
         <xsl:text disable-output-escaping="yes">
            &lt;!--
            <![CDATA[var tags_list = encodeURI('<tags>]]></xsl:text>
            <xsl:apply-templates select="//tags/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:apply-templates>
            <xsl:text disable-output-escaping="yes"><![CDATA[</tags>');
            var so = new SWFObject("/skin/cumulus/tagcloud.swf", "tagcloud", "190", "190", "7", "#ffffff");
            // uncomment next line to enable transparency
            so.addParam("wmode", "transparent");
            so.addVariable("tcolor", "0x333333");
            so.addVariable("mode", "tags");
            so.addVariable("distr", "true");
            so.addVariable("tspeed", "100");
            so.addVariable("tagcloud", tags_list);
            // в следующей строке параметром является ID div-контейнера, созданного выше.
            so.write("smallcloudflashcontent");
            ]]>
            -->;
         </xsl:text>
      </script>
   </xsl:template>
   
   <!-- Облако из групп -->
   <xsl:template match="tag">
      <xsl:param name="min_size"/>
      <xsl:param name="total"/>
      <xsl:param name="coeff_size" select="10"/>
      <!-- Нужный размер шрифта вычисляется по формуле $min_size + количество * $coeff_size -->
      <xsl:variable name="size" select="round($min_size + ((count - 1) * $coeff_size))"/>
      <a href="http://{//current_alias}{parent::*/parent::*/path}{parent::*/parent::*/url}tag/{tag_path_name}/" style="font-size: {$size}pt">
         <xsl:value-of select="tag_name"/>
      </a>
      <xsl:text disable-output-escaping="yes"> </xsl:text>
   </xsl:template>
</xsl:stylesheet><!-- Stylus Studio meta-information - (c) 2004-2009. Progress Software Corporation. All rights reserved.

<metaInformation>
   <scenarios>
      <scenario default="yes" name="Scenario1" userelativepaths="yes" externalpreview="no" url="..\tagcloud2.xml" htmlbaseurl="" outputurl="" processortype="internal" useresolver="yes" profilemode="0" profiledepth="" profilelength="" urlprofilexml=""
         commandline="" additionalpath="" additionalclasspath="" postprocessortype="none" postprocesscommandline="" postprocessadditionalpath="" postprocessgeneratedext="" validateoutput="no" validator="internal" customvalidator="">
         <advancedProp name="sInitialMode" value=""/>
         <advancedProp name="bXsltOneIsOkay" value="true"/>
         <advancedProp name="bSchemaAware" value="true"/>
         <advancedProp name="bXml11" value="false"/>
         <advancedProp name="iValidation" value="0"/>
         <advancedProp name="bExtensions" value="true"/>
         <advancedProp name="iWhitespace" value="0"/>
         <advancedProp name="sInitialTemplate" value=""/>
         <advancedProp name="bTinyTree" value="true"/>
         <advancedProp name="bWarnings" value="true"/>
         <advancedProp name="bUseDTD" value="false"/>
         <advancedProp name="iErrorHandling" value="fatal"/>
      </scenario>
   </scenarios>
   <MapperMetaTag>
      <MapperInfo srcSchemaPathIsRelative="yes" srcSchemaInterpretAsXML="no" destSchemaPath="" destSchemaRoot="" destSchemaPathIsRelative="yes" destSchemaInterpretAsXML="no"/>
      <MapperBlockPosition></MapperBlockPosition>
      <TemplateContext></TemplateContext>
      <MapperFilter side="source"></MapperFilter>
   </MapperMetaTag>
</metaInformation>
-->


Константа ALLOW_FORMAT_XSL_HTML false - активна

Файлики swfobject.js и tagcloud.swf на месте

Куда копать?
Жизнь не преодоление сложностей, а поиск возможностей © DSergeev
#
Re: Объемное облако тегов Cumulus для HostCMS
DSergeev, добрый день.
А какая у вас версия системы? Если utf-8 то попробуйте версию облака из моего поста на 4й странице.
Заказов не беру. Консультирую редко.
#
Re: Объемное облако тегов Cumulus для HostCMS
Да уже понял что в кодировке проблемы, перекодил на utf-8, ошибки не сыпит но теги сами не выводятся

http://s50.radikal.ru/i130/1103/70/fdd13a9ea366.jpg
Жизнь не преодоление сложностей, а поиск возможностей © DSergeev
#
Re: Объемное облако тегов Cumulus для HostCMS
Kotoff писал(а):
Если utf-8 то попробуйте версию облака из моего поста на 4й странице.


такая же беда, ошибок нет, но и облака тоже нет

хотя вроде все выводит и все цепляется:

<div class="module">
            <div class="module-header">Облако тегов</div>
               <div class="module-body">
                  <h2>Метки</h2>
<script type="text/javascript" src="/cumulus/jquery.swfobject.1-1-1.js"></script>
<div id="smallcloudflashcontent"><div class="TagsCloud"></div></div>
<script><!--
         var tags_list = '&lt;tags&gt;&lt;/tags&gt;';
         
         
         //var rnumber = Math.floor(Math.random()*9999999);
         $('#smallcloudflashcontent').flash(
         {
         swf: 'tagcloud.swf',
         width: 190,
         height: 190,
         wmode: 'transparent',
         allowScriptAccess: 'always',
         allowFullScreen: false,
         flashvars: {
         tcolor: '0x333333',
         mode: 'tags',
         distr: 'true',
         tspeed: '100',
         tagcloud: tags_list
         }
         },
         { version: 8 }
         );
         
         --></script>               
                           </div>

         </div>      
Жизнь не преодоление сложностей, а поиск возможностей © DSergeev
#
Re: Объемное облако тегов Cumulus для HostCMS
У вас переменная tags_list получается пустая.
Точнее, она содержит лишь
<tags></tags>
но между этими тегами должен быть еще список тегов, из которых, собственно, и строится облако. То есть сейчас оно у вас просто выводится пустым.
Проверьте есть ли у вас в xml информация о тегах. Если есть, то выкладывайте xml сюда, посмотрю.
Заказов не беру. Консультирую редко.
#
Re: Объемное облако тегов Cumulus для HostCMS
Kotoff, спасибо добрый человек!

ID магазина не там указал, в комменте поправил, в переменной нет

все пора спать ложится, заработался
Жизнь не преодоление сложностей, а поиск возможностей © DSergeev
#
Re: Объемное облако тегов Cumulus для HostCMS
DSergeev, пожалуйста, и приятных снов!
Заказов не беру. Консультирую редко.
#
Re: Объемное облако тегов Cumulus для HostCMS
Такc еще потуплю пожалуй

А как цвета то поменять?

вот надо чтобы все было голубеньким:

поправил:
so.addVariable("tcolor", "0x333333");


на

so.addVariable("tcolor", "0x00B9F1");


вышло это: http://s58.radikal.ru/i162/1103/83/c0101e908efc.jpg

а вот как остальных тегов поменять?
Жизнь не преодоление сложностей, а поиск возможностей © DSergeev
Авторизация