We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 2750
    • 115 Posts
    Доброго времени суток!
    Ditto вызываю так:
    [!Ditto?tpl=`tplSpec`&tplLast=`tplLastSpec`&total=`2`&language=`russian-UTF8`&noResults=`Спецпредложений не найдено`&startID=`52`&extenders=`summary`&truncLen=`259`!]

    Шаблон tplSpec отличается от tplLastSpec только тем, что в tplLastSpec добавлен класс last. Шаблон tplSpec:
    <li class="clear">
    	<div class="left-li">
    		<img src="[+image+]" alt="[+page+]"/>	
    	</div>	
    	<div class="right-li">
    		<p class="title"><a href="[~[+id+]~]">[+pagetitle+]</a></p>
    		<p>[+summary+]</p>
    	</div>	
    </li>

    Когда показывается содержимое, то при отображении summary (само поле не заполнено, и оно формируется из поля content) точнее при обрезании в конце появляется символ �....Отчего? Как это побороть?

    ps как сделать, чтобы в конце, после того, как summary обрежется до определенного количества символов, ставилось троеточие?
      • 785
      • 2,113 Posts
      Так бывает, когда текст в кодировке UTF-8 обрабатывается без учета этого. В экстендере summary надо добавить mb_internal_encoding("UTF-8"); и функции substr заменить на mb_substr, strlen на mb_strlen и так далее.
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 2750
        • 115 Posts
        Спасибо, помогло.
        В начале файла написал
        mb_internal_encoding("UTF-8");

        И заменил
        strlen на mb_strlen
        substr на mb_substr
        strrpos на mb_strrpos
        strstr на mb_strstr
        stristr на mb_stristr

        Только вот как сделать, чтобы после последнего слова ставилось многоточие?
          • 1788
          • 1,103 Posts
          Quote from: BangMan at Nov 15, 2009, 03:13 PM

          Только вот как сделать, чтобы после последнего слова ставилось многоточие?
          <p>[+summary+]...</p>
            • 29487
            • 385 Posts
            Ещё можно сделать так: в экстендере summary перед return $summary; добавить
            $summary=iconv(’utf-8’, ’utf-8’, $summary);
              • 4036
              • 239 Posts
              Quote from: BangMan at Nov 15, 2009, 03:13 PM

              Спасибо, помогло.
              В начале файла написал
              mb_internal_encoding("UTF-8");

              И заменил
              strlen на mb_strlen
              substr на mb_substr
              strrpos на mb_strrpos
              strstr на mb_strstr
              stristr на mb_stristr

              Только вот как сделать, чтобы после последнего слова ставилось многоточие?

              Столкнулась с такой же проблемой.
              Пошла по Вашему пути, поставила вначале
              mb_internal_encoding("UTF-8");

              И заменила в коде.
              А у меня выдает ошибку
              Fatal error: Call to undefined function: mb_strstr() in /home/persona-city.ru/www/assets/snippets/ditto/extenders/summary.extender.inc.php on line 292

              Т.е. ругается на строчку
              if ((mb_strstr($resource['content'], $splitter)) && $truncsplit) {


              Что делать? huh
                Портфолио - http://wowstudio.pro
                • 4036
                • 239 Posts
                Quote from: Temus at Nov 24, 2009, 04:32 AM

                Ещё можно сделать так: в экстендере summary перед return $summary; добавить
                $summary=iconv(’utf-8’, ’utf-8’, $summary);

                Этот вариант почему-то тоже не сработал.
                // Post-processing to clean up summaries
                			$summary = ($closeTags === true) ? $this->closeTags($summary) : $summary;
                			$summary=iconv('utf-8', 'utf-8', $summary);
                			return $summary;
                


                Выводимый текст просто не показывается sad
                Помогите пожалуйста!
                  Портфолио - http://wowstudio.pro
                  • 2750
                  • 115 Posts
                  php должон быть собран с поддержкой мультибайтовых строк:
                  проверьте, что показывает phpinfo, должны быть такие строки в отчете:

                  mbstring
                  Multibyte Support 	enabled
                  Multibyte string engine 	libmbfl
                  Multibyte (japanese) regex support 	enabled
                  Multibyte regex (oniguruma) version 	4.4.4
                  Multibyte regex (oniguruma) backtrack check 	On 


                  Если их нет, обращайтесь к хостеру, пускай поставит расширение mbstring для PHP
                    • 4036
                    • 239 Posts
                    Quote from: BangMan at Nov 28, 2009, 03:54 PM

                    php должон быть собран с поддержкой мультибайтовых строк:
                    проверьте, что показывает phpinfo, должны быть такие строки в отчете:

                    mbstring
                    Multibyte Support 	enabled
                    Multibyte string engine 	libmbfl
                    Multibyte (japanese) regex support 	enabled
                    Multibyte regex (oniguruma) version 	4.4.4
                    Multibyte regex (oniguruma) backtrack check 	On 


                    Если их нет, обращайтесь к хостеру, пускай поставит расширение mbstring для PHP

                    Вроде как стоит, если я ничего не путаю
                    mbstring
                    Multibyte Support 	enabled
                    Japanese support 	enabled
                    Simplified chinese support 	enabled
                    Traditional chinese support 	enabled
                    Korean support 	enabled
                    Russian support 	enabled
                    Multibyte (japanese) regex support 	enabled 
                    
                      Портфолио - http://wowstudio.pro
                      • 4036
                      • 239 Posts
                      А может надо не mb_strlen, а mbstrlen?
                        Портфолио - http://wowstudio.pro