Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Вывод анонса с ограничением по количеству слов

00 голосов
4
Необходимо сделать ограничение вывода анонса по количеству слов. Скажем, не более 30 слов. Нужно чтобы обрезался анонс не в середине слова, а целыми словами.
спросил 24 Дек, 13 от nik (100 баллов)

4 Ответы

00 голосов
Добрый день,

судя по коду компонента bitrix.news.list слова резаться не должны.

P.S. Данный функционал работает только для типа анонса, который сохранён в типе "Текст"
ответил 15 Март, 14 от JIETYHOK (2,260 баллов)
00 голосов
Вот так выглядит у меня "шаблон" компонента который выводит список новостей

----------
Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<div class="news-list">
<?if($arParams["DISPLAY_TOP_PAGER"]):?>
   <?=$arResult["NAV_STRING"]?><br />
<?endif;?>
<?foreach($arResult["ITEMS"] as $arItem):?>
   <p class="news-item">
      <?if($arParams["DISPLAY_PICTURE"]!="N" && is_array($arItem["PREVIEW_PICTURE"])):?>
         <?if(!$arParams["HIDE_LINK_WHEN_NO_DETAIL"] || ($arItem["DETAIL_TEXT"] && $arResult["USER_HAVE_ACCESS"])):?>
            <a href="<?=$arItem["DETAIL_PAGE_URL"]?>"><img class="preview_picture" border="0" src="<?=$arItem["PREVIEW_PICTURE"]["SRC"]?>" width="<?=$arItem["PREVIEW_PICTURE"]["WIDTH"]?>" height="<?=$arItem["PREVIEW_PICTURE"]["HEIGHT"]?>" alt="<?=$arItem["NAME"]?>" title="<?=$arItem["NAME"]?>" style="float:left" /></a>
         <?else:?>
            <img class="preview_picture" border="0" src="<?=$arItem["PREVIEW_PICTURE"]["SRC"]?>" width="<?=$arItem["PREVIEW_PICTURE"]["WIDTH"]?>" height="<?=$arItem["PREVIEW_PICTURE"]["HEIGHT"]?>" alt="<?=$arItem["NAME"]?>" title="<?=$arItem["NAME"]?>" style="float:left" />
         <?endif;?>
      <?endif?>
      <?if($arParams["DISPLAY_DATE"]!="N" && $arItem["DISPLAY_ACTIVE_FROM"]):?>
         <span class="news-date-time"><?echo $arItem["DISPLAY_ACTIVE_FROM"]?></span>
      <?endif?>
      <?if($arParams["DISPLAY_NAME"]!="N" && $arItem["NAME"]):?>
         <?if(!$arParams["HIDE_LINK_WHEN_NO_DETAIL"] || ($arItem["DETAIL_TEXT"] && $arResult["USER_HAVE_ACCESS"])):?>
            <a href="<?echo $arItem["DETAIL_PAGE_URL"]?>"><b><?echo $arItem["NAME"]?></b></a><br />
         <?else:?>
            <b><?echo $arItem["NAME"]?></b><br />
         <?endif;?>
      <?endif;?>
      <?if($arParams["DISPLAY_PREVIEW_TEXT"]!="N" && $arItem["PREVIEW_TEXT"]):?>


         <?$text_for_anons = $arItem["PREVIEW_TEXT"];?>
            <?$text_end_anons = substr($text_for_anons,0,420);?>


         <small><?echo $text_end_anons;?>......</small>

            
      <?endif;?>
      <?if($arParams["DISPLAY_PICTURE"]!="N" && is_array($arItem["PREVIEW_PICTURE"])):?>
         <div style="clear:both"></div>
      <?endif?>
      <?foreach($arItem["FIELDS"] as $code=>$value):?>
         <small>
         <?=GetMessage("IBLOCK_FIELD_".$code)?>: <?=$value;?>
         </small><br />
      <?endforeach;?>
      <?foreach($arItem["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?>
         <small>
         <?=$arProperty["NAME"]?>: 
         <?if(is_array($arProperty["DISPLAY_VALUE"])):?>
            <?=implode(" / ", $arProperty["DISPLAY_VALUE"]);?>
         <?else:?>
            <?=$arProperty["DISPLAY_VALUE"];?>
         <?endif?>
         </small><br />
      <?endforeach;?>
   </p>
<?endforeach;?>
<?if($arParams["DISPLAY_BOTTOM_PAGER"]):?>
   <br /><?=$arResult["NAV_STRING"]?>
<?endif;?>
</div>


----------
сам вывод

<?if($arParams["DISPLAY_PREVIEW_TEXT"]!="N" && $arItem["PREVIEW_TEXT"]):?>
<?$text_for_anons = $arItem["PREVIEW_TEXT"];?>
<?$text_end_anons = substr($text_for_anons,0,420);?>
<small><?echo $text_end_anons;?>......</small>
<?endif;?>

вот здесь задаешь необходимую тебе длину
<?$text_end_anons = substr($text_for_anons,0,420);?>
ответил 06 Июль, 14 от Simantica (460 баллов)
00 голосов
Цитата
Владимир Лобас пишет:
Нужно чтобы обрезался анонс не в середине слова, а целыми словами.

Не видим по коду, чтобы данная задача была решена.
ответил 06 Ноя, 14 от JIETYHOK (2,260 баллов)
00 голосов
php wordwrap
ответил 05 Март, 15 от ONYX (100 баллов)

Похожие вопросы

0 голосов
3 ответов
0 голосов
2 ответов
спросил 22 Март, 14 от DoKeR (100 баллов)
0 голосов
1 ответ
0 голосов
3 ответов
спросил 02 Апр, 14 от ROKKI (160 баллов)