2012-02-19 3 views
0

Я пытаюсь ограничить количество символов, которые появляются в заголовке.Предельные символы с использованием strlen

Не уверен, что я делаю неправильно здесь (я новичок!), Но заголовок отображается на всю длину, а «...» не отображается.

Любая помощь очень ценится!

<? if ($params->get('itemid')) $itemid = '&Itemid='.$params->get('itemid'); else $itemid = ''; ?> 
<? $title = $event->title ?> 
<? $title = substr($title, 0, 20); ?> 
<? if (strlen($title) == 20) $title .= '...' ; ?> 
<? if (KRequest::get('get.view', 'string') == 'events' || isset($module)) : ?> 
    <h1 class="title" itemprop="name"> 
     <a href="<[email protected]('option=joomla_component&view=event&id='.$event->id.$itemid)?>" itemprop="url"><?=$event->title?></a> 
    </h1> 
<? endif ?> 
+7

В чем проблема? почему новые пользователи никогда не пишут, в чем проблема – dynamic

+2

Вам не нужно обертывать * каждую строку * в '' тегах. Это просто делает код совершенно нечитаемым. – JJJ

+0

какая ошибка вы получаете? редактируемый код кажется правильным –

ответ

2

Разве вы не используете заголовок $ title, а не $ event-> в своем выпуске?

+0

Другими словами, вы просто используете неправильную переменную в строке, которая читает ... itemprop = "url"> title ... – fred2

+0

да, вы правы .... должен быть $ title –

+0

Я идиот. благодаря! – Sarah

1

См. 2 комментария. Это должно заставить его работать.

<? 
    if ($params->get('itemid')) { 
     $itemid = '&Itemid='. $params->get('itemid'); 
    else 
     $itemid = ''; 
    $title = $event->title; 
    if (strlen($title) > 20) $title = substr($title, 0, 17).'...'; // Need to add a substr 
    if (KRequest::get('get.view', 'string') == 'events' || isset($module)) : ?>  
     <h1 class="title" itemprop="name"> 
      <a href="<[email protected]('option=joomla_component&view=event&id='.$event->id.$itemid)?>" 
       itemprop="url"> 
       <?= $title; // note the change here ?> 
      </a> 
     </h1> 
    <? endif ?> 
+0

Я не понимаю, почему это принятый ответ? Если вы просмотрите код, ... никогда не будет добавлен, но все заголовки будут усечены до 20 символов. Строка '$ title = substr ($ title, 0, 20);' должна быть удалена или 'if (strlen ($ title)> 20)' никогда не будет true. –

+0

Я не видел изначально, что там был субстрат. Я добавил его и полностью пропустил, что у нее это было на линии выше. Я починил это. – phpmeh

+0

Возможно, вы должны изменить 'substr ($ title, 0, 17)' to 'substr ($ title, 0, 20)' тоже. –

1

Я не уверен, если это будет ответить на ваш вопрос, но, возможно, вы должны попробовать этот код:

<?php 
if ($params->get('itemid')) { 
    $itemid = '&Itemid='.$params->get('itemid'); 
} else { 
    $itemid = ''; 
} 
$title = $event->title; 
if (strlen($title) >= 20) { 
    $title = substr($title, 0, 20); 
    $title .= '...'; 
} 
if (KRequest::get('get.view', 'string') == 'events' || isset($module)) : 
?> 
<h1 class="title" itemprop="name"> 
    <a href="<?= @route('option=joomla_component&view=event&id=' . $event->id . $itemid) ?>" itemprop="url"><?= $title ?></a> 
</h1> 
<?php 
endif; 
?> 

Основная проблема заключается в том, что вы трансформацию переменных $ заголовка и отображение $ event-> title. Кроме того, вы ищете строки EXACT длиной 20, чтобы добавить «...», но вы должны добавить их в любую строку с 20 или более символами.

Надеюсь, это помогло!

Смежные вопросы