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

#
Re: Объемное облако тегов Cumulus для HostCMS
Kotoff писал(а):
и скорее всего будет вам щястье


Респект и уважуха за скорость ответа и содержание оного!
#
Re: Объемное облако тегов Cumulus для HostCMS
recrut, всегда пожалуйста!
Заказов не беру. Консультирую редко.
#
Re: Объемное облако тегов Cumulus для HostCMS
Подскажите пожалуйста. Сделал все согласно описанию с 4 страницы. скачал все с 4 страницы, но отображается обычное облако тегов. И при переходе по метке пишется путь "http://shop/tag/".

html код фрагмента.
<!-- Метки -->
   <h2>Метки</h2>
<script type="text/javascript" src="/cumulus/jquery.swfobject.1-1-1.js"></script>
<div id="smallcloudflashcontent"><div class="TagsCloud"><a href="http:///shop/tag/%D0%9C%D0%B5%D0%B4%D0%B2%D0%B5%D0%B6%D0%BE%D0%BD%D0%BE%D0%BA/" style="font-size: 9pt;">Медвежонок</a> </div></div>

<script><![CDATA[<!--]]><![CDATA[
         var tags_list = '<tags>]]><![CDATA[<]]>a href="http:///shop/tag/%D0%9C%D0%B5%D0%B4%D0%B2%D0%B5%D0%B6%D0%BE%D0%BD%D0%BE%D0%BA/" style="font-size: 9pt">Медвежонок<![CDATA[<]]>/a><![CDATA[ </tags>';
         
         
         //var rnumber = Math.floor(Math.random()*9999999);
         $('#smallcloudflashcontent'.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_list
         }
         },
         { version: 8 }
         );
         
         ]]>--></script>
   
      
   
   
   </div>
#
Re: Объемное облако тегов Cumulus для HostCMS
AHCAP, откуда у вас CDATA в коде? В шаблоне на 4й странице все CDATA убраны, т.к. на некоторых сайтах приводят к ошибке.

Чтобы в олаке тегов магазина после http:// писался домен сайта, надо xsl-шаблоне в выводе текущего домена заменить корневой элемент document на shop, или (что универсальнее) не заменить, а продублировать этот вывод с разными корневым элементами:
<!-- Облако из групп -->
    <xsl:template match="tag">
       <xsl:param name="min_size"/>
       <xsl:param name="total"/>
       <xsl:param name="coeff_size" select="10"/>
       <xsl:variable name="size" select="round($min_size + ((count - 1) * $coeff_size))"/><xsl:text disable-output-escaping="yes">&lt;</xsl:text>a href="http://<xsl:value-of select="/document/current_alias"/><xsl:value-of select="/shop/current_alias"/><xsl:value-of select="parent::*/parent::*/path"/><xsl:value-of select="parent::*/parent::*/url"/>tag/<xsl:value-of select="tag_path_name"/>/" style="font-size: <xsl:value-of select="$size"/>pt"<xsl:text disable-output-escaping="yes">&gt;</xsl:text><xsl:value-of select="tag_name"/><xsl:text disable-output-escaping="yes">&lt;</xsl:text>/a<xsl:text disable-output-escaping="yes">&gt;</xsl:text><xsl:text> </xsl:text></xsl:template>
</xsl:stylesheet>
(по сути это мой косяк - когда выкладывал шаблон, забыл что в xml магазина другой корневой элемент, не такой как в xml инфосистем)
Заказов не беру. Консультирую редко.
#
Re: Объемное облако тегов Cumulus для HostCMS
Добрый деньKotoff,
Вот макет xsl шаблона который я скопировал с 4 ой страницы. Сам не знаю откуда там CData появляется но в макете его нет.

<?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="/">            <h2>Метки</h2>            <!--Подключим библиотеку-загрузчик Flash-->      <script type="text/javascript" src="/cumulus/jquery.swfobject.1-1-1.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-облако с помощью библиотекиjquery.swfObject-->      <script>         <xsl:text disable-output-escaping="yes">&lt;!--</xsl:text>         var tags_list = '&lt;tags><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>&lt;/tags>';                           //var rnumber = Math.floor(Math.random()*9999999);         $('#smallcloudflashcontent'.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_list         }         },         { version: 8 }         );                  <xsl:text disable-output-escaping="yes">--&gt;</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"/><xsl:variable name="size" select="round($min_size + ((count - 1) * $coeff_size))"/><xsl:text disable-output-escaping="yes">&lt;</xsl:text>a href="http://<xsl:value-of select="/shop/current_alias"/><xsl:value-of select="parent::*/parent::*/path"/><xsl:value-of select="parent::*/parent::*/url"/>tag/<xsl:value-of select="tag_path_name"/>/" style="font-size: <xsl:value-of select="$size"/>pt"<xsl:text disable-output-escaping="yes">&gt;</xsl:text><xsl:value-of select="tag_name"/><xsl:text disable-output-escaping="yes">&lt;</xsl:text>/a<xsl:text disable-output-escaping="yes">&gt;</xsl:text><xsl:text> </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="cumulus.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>-->
Написал Shop все работает. Спасибо. Осталось только проблема с отображением самого облака ((. Не подскажите быть может есть какой то инструмент для отладки или что то подобное. Дело в том что к веб программированию я не имею ни какого отношения. Ну и как то напрягать людей тоже не хочется, так как проблемка то наверное пустяковая и я что нить не так сделал. но самому разобраться не получается. ((.
#
Re: Объемное облако тегов Cumulus для HostCMS
AHCAP, когда вы что-то пишете, имейти уважение к другим участникам форума, если хотите чтобы ваше сообщение читали. Будьте так добры, вставьте ваш код по-человечески, я не буду ломать глаза об эту билиберду, которую вы выложили.
Вы в курсе что на форуме есть кнопочка "Вставить код"? Она в том же ряду что и кнопки "Жирный", "Курсив", "Подчеркивание" и т.д., 6я слева.
С помощью этой кнопки вы можете выложить код так, чтобы его можно было прочесть.
Заказов не беру. Консультирую редко.
#
Re: Объемное облако тегов Cumulus для HostCMS
AHCAP, постучитесь в аську с доступами к админке, посмотрю в чем дело. Не должно быть там CData
Заказов не беру. Консультирую редко.
#
Re: Объемное облако тегов Cumulus для HostCMS
AHCAP, у вас на хостинге, видимо, не совсем стандартные настройки xslt-процессора, поэтому он окружает вывод тега xsl:text в секцию CDATA.
В вашем частном случае проблема решена путем исключения вывода через xsl:text.
Заказов не беру. Консультирую редко.
#
Re: Объемное облако тегов Cumulus для HostCMS
Поскольку на последних двух страницах несколько раз задавались вопросы по шаблону с 4й страницы, то я выкладываю здесь обновленый шаблон, с учетом обсужденных вопросов. В шаблоне исправлена ошибка в пути в swf-файлу, исправлена генерация названия домена в url для тегов интернет-магазина.
Также шаблон немного оптимизирован для более быстрой обработки.

<?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"/>

      <!--Подключим библиотеку-загрузчик Flash-->
      <script type="text/javascript" src="/cumulus/jquery.swfobject.1-1-1.js"></script>

      <!--Определим количество элементов для наиболее распространенной метки-->
      <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>

      <xsl:variable name="cloud_content">
         <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>
      </xsl:variable>

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

      <!--Создадим контейнер для Flash-облака.
      ОБРАТИТЕ ВНИМАНИЕ! Если на странице несколько облаков, то id у их контейнеров должен быть разным!-->
      <div id="smallcloudflashcontent">
         <!--Выведем сюда классическое облако тегов, для тех у кого отключен Flash или Javascript-->
         <div class="TagsCloud">
            <xsl:value-of disable-output-escaping="yes" select="$cloud_content"/>
         </div>
      </div>

      <!--Подключим Flash-облако с помощью библиотеки SWFObject-->
      <script type="text/javascript">
         <xsl:text disable-output-escaping="yes">&lt;!-- </xsl:text>var tags_list = '&lt;tags><xsl:value-of disable-output-escaping="yes" select="$cloud_content"/>&lt;/tags>';                            
        
         $('#smallcloudflashcontent').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_list
            }
         },
            { version: 8 }
         );

         <xsl:text disable-output-escaping="yes">--&gt;</xsl:text>
      </script>
   </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" select=""/>

      <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))"/>

      <xsl:text disable-output-escaping="yes">&lt;</xsl:text>a href="http://<xsl:value-of select="$domain"/><xsl:value-of select="$tag_url"/>tag/<xsl:value-of select="tag_path_name"/>/" style="font-size: <xsl:value-of select="$size"/>pt"<xsl:text disable-output-escaping="yes">&gt;</xsl:text><xsl:value-of select="tag_name"/><xsl:text disable-output-escaping="yes">&lt;</xsl:text>/a<xsl:text disable-output-escaping="yes">&gt;</xsl:text><xsl:text> </xsl:text></xsl:template>
</xsl:stylesheet>


Архив с облаком, js-библиотекой, шаблонами, и образцами кода также обновлен.

P.S. Обратите внимание, что решение по проблеме возникшей у пользователя AHCAP в это обновление не включено, т.к. являет собою частный случай, и на хостинге с правильными настройками xslt-шаблонизатора работать не будет.
Заказов не беру. Консультирую редко.
#
Re: Объемное облако тегов Cumulus для HostCMS
на последней версии данный шаблон выдает ошибки, долго сидел и в итоге сделал сильно упрощенный вариант
по аналогии с типовым шаблоном для меток - внес изменения с кодом для облака. Может кому-нибудь будет полезно. Код в действии на моем сайте http://www.energoprofi23.ru/
Код для вызова шаблона от Kotoff (кстати, низкий ему поклон) остался прежним: код для макета - метки Магазина.php
отличие в том что Цитата:
<script type="text/javascript" src="/cumulus/swfobject.js"></script>
нужно вставить между <head> и </head>

а вот и xsl:

Цитата:
<?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"/>
   
   <!-- ОблакоТэговМагазин -->
   
   <xsl:template match="/">
      <xsl:apply-templates select="/shop"/>
   </xsl:template>
   
   <xsl:template match="/shop">
      
      <xsl:if test="count(tags/tag) != 0">
      <div>
         <div class="module-categories">
      <div class="box">
      <div class="tail-bottom">
      <div class="tail-top">
      <div class="tail-right">
      <div class="tail-left">
      <div class="corner-right-bottom">
      <div class="corner-left-bottom">
      <div class="corner-right-top">
      <div class="corner-left-top"><h3 style="text-decoration: underline;"><span><span>Метки</span></span></h3>
      </div></div></div></div></div></div></div></div></div></div>
         <div id="flashcontent1" style="border: #02fc07 1px solid; width: 198px;">no Flash or Javascript.</div>
         
         <xsl:variable name="max_tag_count" select="(/shop/tags/tag/count[not(. &lt; /shop/tags/tag/count)])[1] - 1"/>
         
         <xsl:variable name="max_size" select="16"/>
         <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>
         
         <div>
            <script type="text/javascript">
      var so = new SWFObject("/cumulus/tagcloud.swf", "tagcloud", "198", "198", "7", "#e8e8e8";
      // uncomment next line to enable transparency
      //so.addParam("wmode", "transparent";
      so.addVariable("tcolor", "0x333333";
      so.addVariable("tcolor2", "0x009900";
      so.addVariable("hicolor", "0x000000";
      so.addVariable("mode", "tags";
      so.addVariable("distr", "true";
      so.addVariable("tspeed", "125";
      so.addVariable("tagcloud", "<tags>
            
               <xsl:apply-templates select="tags/tag">
                  <xsl:with-param name="min_size" select="$min_size"/>
                  <xsl:with-param name="coeff_size" select="$coeff_size"/>
               </xsl:apply-templates>
            </tags>";
      so.write("flashcontent1";
   </script>
         </div>
      </div>
      </xsl:if>
      
   </xsl:template>
   
   <!-- Облако из групп -->
   <xsl:template match="tag">
      
      <xsl:param name="min_size"/>
      <xsl:param name="coeff_size" select="10"/>
      <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>
      
      <!-- Нужный размер шрифта вычисляется по формуле $min_size + количество * $coeff_size -->
      <xsl:variable name="size" select="round($min_size + ((count - 1) * $coeff_size))"/>
      
      
         <xsl:text disable-output-escaping="yes">&lt;</xsl:text>a href='http://<xsl:value-of select="$domain"/>/shop/tag/<xsl:value-of select="tag_path_name"/>' style='font-size: <xsl:value-of select="$size"/>pt'<xsl:text disable-output-escaping="yes">&gt;</xsl:text>
      <xsl:value-of select="tag_name"/>
      <xsl:text disable-output-escaping="yes">&lt;</xsl:text>/a<xsl:text disable-output-escaping="yes">&gt;</xsl:text>
      
      
   <!--    <a href="{/shop/path}tag/{tag_path_name}/" style="font-size: {$size}pt">
            <xsl:value-of select="tag_name"/>
         </a>-->
      
      
      <xsl:text> </xsl:text>
      
   </xsl:template>
</xsl:stylesheet>
www.energoprofi23.ru
Авторизация