Выделить первое слово в заголовке блока

Главные вкладки

Аватар пользователя FORTIS FORTIS 23 февраля 2010 в 17:06

Переводя джумловские шаблоны под друпал столкнулся с необходимостью выделять первое слово заголовка блока другим цветом, собсна его нужно обернуть в span, тут не нашел этого решения, поэтому сильвупле:

в template.php добавляем функцию:

function wordlimit($string, $length = 50, $ellipsis = "...") {
  $words = explode(' ', strip_tags($string));
  if (count($words) > $length)
    return implode(' ', array_slice($words, 0, $length)) . $ellipsis;
  else
    return $string;
}

а внутри block.tpl.php выводим заголовок так:

...
<?php
$firstword = wordlimit($block->subject, 1, '');
$block->subject = str_replace($firstword, '<span class="first-word">'. $firstword .'</span>', $block->subject);
...
?>
<h3 class="s5_mod_h3"><?php print $block->subject ?></h3>

ну и конечно в style.css добавляем:
.first-word {color:#0099FF;}

Комментарии

Аватар пользователя riyuzakki riyuzakki 10 марта 2010 в 21:35

Вам не кажется, что быстрее будет порезать строчку substr`ом, чем распарсивать её в массив, а потом собирать обратно? Я, конечно, понимаю, что прирост в производительности заметить будет сложно, но оптимазация должна быть оптимальной, не так ли?

Аватар пользователя InvDeath InvDeath 27 марта 2011 в 16:36

Аналогично переделывал с джумловских... только это... оно там на jQuery спанами обтягивается Smile Тоже делал на пхп, но потом одумался (случайно заметил задержку выделения первого слова при торможении браузера)... да и как-то неправильно нагружать сервер такой фигней Smile

 jQuery('.class-1, .class-2').each(function() {
            var hd = jQuery(this).html();
            var index = hd.indexOf(' ');
            if(index == -1) {
                index = hd.length;
            }
            jQuery(this).html('<span>' + hd.substring(0, index) + '</span>' + hd.substring(index, hd.length));
        });
Аватар пользователя man-1982 man-1982 3 мая 2011 в 0:48

спасибо то что искал... а если юзать вариант через скрипт jquery его надо в отдельный файл прописывать а потом подключать через theme.info или есть более правильные варианты?