Ограничить длину заголовков К2

  • 22 Ответов
  • 4975 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

 ! ! Ребята! Подскажите! Как в К2 для блога категории или в обычном материале К2 ОГРАНИЧИТЬ! количество символов в заглавии материала. то же самое и если заголовок материала как ссылка (вот как здесь http://mannvillage.com/index.php/download-movies-online/popular-categories-films/kinofantastika-fentezi ) символы в заголовке тоже нужно ограничить и при наведении на эту ссылку во всплывающей подсказке писать полное название материала. 

Конкретно - я хочу уменьшить количество символов в заголовках блога категории как эта
http://mannvillage.com/index.php/download-movies-online/popular-categories-films/kinofantastika-fentezi или
http://mannvillage.com/index.php/download-movies-online/popular-categories-films/comedy или
http://mannvillage.com/index.php/download-movies-online/popular-categories-films/action-ekshenfilm

и писать там

Пример
НЕ Битва Титанов / Clash of the Titans 2010 HD смотреть онлайн
А Битва Титанов / Clash of ...

этот заголовок как ссылка. А при наведении на эту ссылку в подсказке чтобы высвечивалось полное название материала т.е. ссылка Битва Титанов / Clash of ...  а подсказка  Битва Титанов / Clash of the Titans 2010 HD смотреть онлайн

ПОЖАЛУЙСТА! ПОМОГИТЕ! ОЧЕНЬ НУЖНО. А то эти длинные заглавия портят весь дизайн моего сайта http://mannvillage.com  !
« Последнее редактирование: 02.10.2011, 20:39:48 от SDKiller »

*

Оффлайн HYBRID

  • ****
  • 236
  • [+]46 / [-]0
  • Они захватят мир
    • Просмотр профиля
    • Hybrid-Lab
Re: Ограничить длину заголовков К2
« Ответ #1 : 02.10.2011, 08:53:05 »
файл: /components/com_k2/templates/default/category_item.php
или: /templates/ИСПОЛЬЗУЕМЫЙ_ШАБЛОН/html/com_k2/templates/default/category_item.php

найти строки примерно следующего содержания:

<h3 class="catItemTitle">
    <?php if ($this->item->params->get('catItemTitleLinked')): ?>
        <a href="<?php echo $this->item->link; ?>">
            <?php echo $this->item->title; ?>
        </a>
        <?php else: ?>
            <?php echo $this->item->title; ?>
        <?php endif; ?>

поменять на:

<h3 class="catItemTitle">
    <?php if ($this->item->params->get('catItemTitleLinked')): ?>
        <a href="<?php echo $this->item->link; ?>" title="<?php echo $this->item->title; ?>">
            <?php echo mb_substr($this->item->title, 0, 25).'...'; ?>
        </a>
        <?php else: ?>
            <?php echo $this->item->title; ?>
        <?php endif; ?>

функция mb_substr() возвращает строку заданной длинны, в данном случае передается заголовок и задается стартовая позиция 0 (отсчет с первого символа), и до 25го, последнее значение нужно изменить на подходящее

есть второй метод через CSS и свойство text-overflow:ellipsis, но оно пока не поддерживается в полной мере всеми браузерами, и особенно ослом

ЗЫ, поменьше красок в тексте, а красный вообще нельзя использовать, он только для модераторов
http://hybrid-lab.com - лаборатория

Re: Ограничить длину заголовков К2
« Ответ #2 : 02.10.2011, 11:21:08 »
Сейчас попробую! Спасибо!

Ура!   <?php echo mb_substr($this->item->title, 0, 25).'...'; ?>  Сработало отлично! То, что мне и нужно. Большое вам спасибо за оперативное решение.

Еще хочу узнать, правда это не совсем по теме..     
« Последнее редактирование: 02.10.2011, 21:05:14 от SDKiller »

*

Оффлайн staticlight

  • *****
  • 1090
  • [+]65 / [-]0
  • Staticlight
    • Просмотр профиля
Re: Ограничить длину заголовков К2
« Ответ #3 : 02.10.2011, 15:14:28 »
Главное - пользоваться этим с умом, а то будут заголовки типа "Перси Джексон и пох..."

« Последнее редактирование: 02.10.2011, 15:18:12 от staticlight »
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I

*

Оффлайн SDKiller

  • *****
  • 2734
  • [+]325 / [-]5
  • ...ergo sum
    • Просмотр профиля
    • Jexy.ru
Re: Ограничить длину заголовков К2
« Ответ #4 : 02.10.2011, 18:47:47 »
Главное - пользоваться этим с умом, а то будут заголовки типа "Перси Джексон и пох..."

Можно пользоваться одной из функций из утилит К2 и ограничивать длину заголовка целыми словами, например:

require_once(JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'helpers'.DS.'utilities.php');

$this->item->title = K2HelperUtilities::wordLimit($this->item->title, $limit = 5);
« Последнее редактирование: 02.10.2011, 21:36:31 от SDKiller »

*

Оффлайн staticlight

  • *****
  • 1090
  • [+]65 / [-]0
  • Staticlight
    • Просмотр профиля
Re: Ограничить длину заголовков К2
« Ответ #5 : 02.10.2011, 19:14:34 »
Можно пользоваться одной из функций из утилит К2 и ограничивать длину заголовка целыми словами, например:

require_once(JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'helpers'.DS.'utilities.php');

$this->item->title = K2HelperUtilities::wordLimit($this->item->title, $limit = 5);

То есть, в head прописываем require_once(JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'helpers'.DS.'utilities.php');
$this->item->title = K2HelperUtilities::wordLimit($this->item->title, $limit = 5);

Я правильно понял?
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I

*

Оффлайн SDKiller

  • *****
  • 2734
  • [+]325 / [-]5
  • ...ergo sum
    • Просмотр профиля
    • Jexy.ru
Re: Ограничить длину заголовков К2
« Ответ #6 : 02.10.2011, 19:59:37 »
Зачем в head, вызываем функцию в том месте, где непосредственно используем, в данном случае - в шаблоне.

Учитываем, что в разных шаблонах у нас формируются объекты по-разному, так что где-то может быть $this->item->title, а где-то $item->title

*

Оффлайн HYBRID

  • ****
  • 236
  • [+]46 / [-]0
  • Они захватят мир
    • Просмотр профиля
    • Hybrid-Lab
Re: Ограничить длину заголовков К2
« Ответ #7 : 02.10.2011, 20:16:50 »
SDKiller, за наводку на utilities спасибо, но в данном случае больше подошла бы функция
characterLimit($this->item->title, $limit = N, $end_char = '...')
http://hybrid-lab.com - лаборатория

*

Оффлайн SDKiller

  • *****
  • 2734
  • [+]325 / [-]5
  • ...ergo sum
    • Просмотр профиля
    • Jexy.ru
Re: Ограничить длину заголовков К2
« Ответ #8 : 02.10.2011, 20:19:24 »
SDKiller, за наводку на utilities спасибо, но в данном случае больше подошла бы функция
characterLimit($this->item->title, $limit = N, $end_char = '...')

Я вёл речь именно об ограничении длины полными словами а не символами, чтобы не было

Цитировать
...типа "Перси Джексон и пох..."

Re: Ограничить длину заголовков К2
« Ответ #9 : 02.10.2011, 21:51:06 »
Главное - пользоваться этим с умом, а то будут заголовки типа "Перси Джексон и пох..."



Ну в подобных модулях ( называеться News Show Pro GK4 - mod_news_pro_gk4  - это название продукта от Gavick для крутого вывода новостей, в котором через админ панель можно настраивать практически все, что угодно, вплоть до расстояния между картинками и текстом... у меня это просто не очень презентабельно, потому-что еще не дошел до того.. нужно добавить некоторый контент, а потом настраивать, чтобы было, что настраивать, так сказать ) длину настроить не проблема. Это просто делается через админ панель в свойствах модуля - значения доступны или для изменения количества символов или для изменения количества слов в заголовке. А вот как такое сделать для материалов в К2 я не знал - теперь знаю, за что вам огромное спасибо.

А заголовки типа ...типа "Перси Джексон и пох..." лучьше изменить на ..."Перси Джексон и похититель ..." ? Думаете так будет гораздо лучше? Т.е лучше сделать несколько полных слов и ... чем ограничить количество символов?

Цитировать
Можно пользоваться одной из функций из утилит К2 и ограничивать длину заголовка целыми словами, например:

Цитировать

require_once(JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'helpers'.DS.'utilities.php');

$this->item->title = K2HelperUtilities::wordLimit($this->item->title, $limit = 5);

А.. это, если не ошибаюсь можно использовать для всего, что связано с текстом. Верно? Только я не пойму, как это можно использовать, к примеру, для такого кода К2 category_item.php

<!-- Item introtext -->
<div class="catItemIntroText">
  Персей, сын&nbsp;бога, воспитанный человеком, не&nbsp;смог защитить свою…  </div>

В к2 через админ панель такой параметр где-то можно установить или только вручную редактировать код шаблона? и как characterLimit($this->item->title, $limit = N, $end_char = '...') применить относительно приведенного выше кода? Там же нет title

И насчет require_once(JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'helpers'.DS.'utilities.php');
$this->item->title = K2HelperUtilities::wordLimit($this->item->title, $limit = 5);

не будет ли эта утилита занимать больше ресурсов как у пользователя так и сервера - там же необходимо вызывать внешний файл и как понимаю загружать его на компьютер пользователя, а это время... думаю, в этом смысле characterLimit($this->item->title, $limit = N, $end_char = '...') - здесь используется только внутренная PHP функция characterLimit и никакие внешние файлы не нужны.
« Последнее редактирование: 02.10.2011, 21:58:42 от Yura Vakulenko »

*

Оффлайн SDKiller

  • *****
  • 2734
  • [+]325 / [-]5
  • ...ergo sum
    • Просмотр профиля
    • Jexy.ru
Re: Ограничить длину заголовков К2
« Ответ #10 : 02.10.2011, 21:59:29 »

...Только я не пойму, как это можно использовать, к примеру, для такого кода К2 category_item.php

<!-- Item introtext -->
<div class="catItemIntroText">
  Персей, сын&nbsp;бога, воспитанный человеком, не&nbsp;смог защитить свою…   </div>

...как
characterLimit($this->item->title, $limit = N, $end_char = '...') применить относительно приведенного выше кода? Там же нет title

Смотрите не исходный код страницы в браузере, а шаблон - увидите там состав всех объектов, которые доступны в том или ином месте.

В вашем примере - $this->item->introtext


Цитировать
... там же необходимо вызывать внешний файл и как понимаю загружать его на компьютер пользователя...

php-файлы исполняются на стороне сервера, а не на стороне клиента

Цитировать
... думаю, в этом смысле characterLimit($this->item->title, $limit = N, $end_char = '...') - здесь используется только внутренная PHP функция characterLimit и никакие внешние файлы не нужны.

Нет, это функция тоже из utilities K2.

Re: Ограничить длину заголовков К2
« Ответ #11 : 02.10.2011, 22:14:46 »
Цитировать
require_once(JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'helpers'.DS.'utilities.php');
$this->item->title = K2HelperUtilities::wordLimit($this->item->title, $limit = 5);

А как это применить относительно заголовка?  мне нужно писать..

<?php if($this->item->params->get('catItemTitle')): ?>
 <!-- Item title -->
 <h3 class="catItemTitle">
  <?php if ($this->item->params->get('catItemTitleLinked')): ?>
<a href="<?php echo $this->item->link?>" title="<?php echo $this->item->title?>">
  <?php echo 

require_once(
JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'helpers'.DS.'utilities.php');
$this->item->title K2HelperUtilities::wordLimit($this->item->title$limit 5);

 
?>

  </a>
  <?php else: ?>
  <?php echo $this->item->title?>
<?php endif; ?>

Re: Ограничить длину заголовков К2
« Ответ #12 : 02.10.2011, 22:21:36 »

А как это применить относительно заголовка?  мне нужно писать..

<?php if($this->item->params->get('catItemTitle')): ?>
  <!-- Item title -->
  <h3 class="catItemTitle">
  <?php if ($this->item->params->get('catItemTitleLinked')): ?>
<a href="<?php echo $this->item->link?>" title="<?php echo $this->item->title?>">
  <?php echo 

require_once(
JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'helpers'.DS.'utilities.php');
$this->item->title K2HelperUtilities::wordLimit($this->item->title$limit 5);

 
?>

  </a>
  <?php else: ?>
  <?php echo $this->item->title?>
<?php endif; ?>

в шаблоне такой код

<?php if($this->item->params->get('catItemIntroText')): ?>
  <!-- Item introtext -->
  <div class="catItemIntroText">
  <?php echo $this->item->introtext?>
  </div>
  <?php endif; ?>

и мне нужно писать в
  <div class="catItemIntroText">
        <?php echo characterLimit($this->item->introtext, $limit = N, $end_char = '...'); ?>
  </div>

Верно?

*

Оффлайн SDKiller

  • *****
  • 2734
  • [+]325 / [-]5
  • ...ergo sum
    • Просмотр профиля
    • Jexy.ru
Re: Ограничить длину заголовков К2
« Ответ #13 : 02.10.2011, 22:26:04 »
Кстати, в category_item можно не подключать utilities, они уже подключены.

Так что то что касается заголовка - этот кусок будет будет выглядеть так (5 - ваш лимит. можете поменять на своё значение):

Код: (php) [Выделить]
<?php if($this->item->params->get('catItemTitle')): ?>
    <!-- Item title -->
        <h3 class="catItemTitle">
    <?php if ($this->item->params->get('catItemTitleLinked')): ?>
        <a href="<?php echo $this->item->link?>" title="<?php echo $this->item->title?>">
      <?php echo K2HelperUtilities::wordLimit($this->item->title5); ?>
  </a>
    <?php else: ?>
  <?php echo K2HelperUtilities::wordLimit($this->item->title5); ?>
            <?php endif; ?>

Можете делать через функцию characterLimit, только аналогично надо вызывать её как K2HelperUtilities::characterLimit
« Последнее редактирование: 02.10.2011, 22:36:11 от SDKiller »

*

Оффлайн HYBRID

  • ****
  • 236
  • [+]46 / [-]0
  • Они захватят мир
    • Просмотр профиля
    • Hybrid-Lab
Re: Ограничить длину заголовков К2
« Ответ #14 : 02.10.2011, 22:34:35 »
удалено
http://hybrid-lab.com - лаборатория

Re: Ограничить длину заголовков К2
« Ответ #15 : 02.10.2011, 22:43:24 »
Цитировать
Так что то что касается заголовка - этот кусок будет будет выглядеть так (5 - ваш лимит. можете поменять на своё значение):

Да. я только-что изменил код на ваш вышеуказанный и действительно - все заработало. Теперь ограничение на показ в 5 слов. И так лучше, чем ограничивать символы.. хотя и в некоторых местах строка заголовок и занимает 2 строки, что смещает картинки под ним, но так по-моему лучше. При меньшей ширине поля с материалом эти все заголовки будут в 2 строки, тем более, что мне еще на стрничку необходимо поставить коллонку справа, что автоматически уменьшит ширину поля с материалом

Огромное спасибо за помощь!

А применительно к

 <?php if($this->item->params->get('catItemIntroText')): ?>
     <!-- Item introtext -->
     <div class="catItemIntroText">
        <?php echo K2HelperUtilities::wordLimit($this->item->introtext, 10); ?>
     </div>
 <?php endif; ?>

Верно?

*

Оффлайн SDKiller

  • *****
  • 2734
  • [+]325 / [-]5
  • ...ergo sum
    • Просмотр профиля
    • Jexy.ru
Re: Ограничить длину заголовков К2
« Ответ #16 : 02.10.2011, 22:52:29 »
Количество слов во вводном тексте вы можете просто ограничить в настройках категории

Re: Ограничить длину заголовков К2
« Ответ #17 : 02.10.2011, 22:58:38 »
Количество слов во вводном тексте вы можете просто ограничить в настройках категории

Это в админпанели выбрать нужную категорию и справа там блок Item view options in category listings и его параметр  Introtext word limit ? Это тот парамтр?

Почему разработчики К2 не предусмотрели такой очевидный вариант с настройкой количества символов или слов в Заголовке материалов для блока категории?  ;) Было бы отлично если бы они добавили такой параметр в админ панель, похоже параметру Introtext word limit

добавить параметр  header word limit and/or header characters limit

Вообще к2 такой мощный контент менеджер - мне он очень нравится. Я правда еще не очень в нем разобрался, только недавно начал использовать. Очень удобный в организации любого материала, особенно каталога товаров или чего-то такого глобального, масштабногог, такой своеобразный вариант хорошей базы данных с отличной структурой... можно создать целую структурную сеть, добавлять и описания и ключевые слова и поиск по ключевым словам, и выборки...очень удобная вещь.. просто мегаструктура.. жаль что к2 нет для J1.6.
« Последнее редактирование: 02.10.2011, 23:17:20 от Yura Vakulenko »

*

Оффлайн yrygvay

Re: Ограничить длину заголовков К2
« Ответ #18 : 03.10.2011, 12:46:46 »

Почему разработчики К2 не предусмотрели такой очевидный вариант с настройкой количества символов или слов в Заголовке материалов для блока категории?  ;) Было бы отлично если бы они добавили такой параметр в админ панель, похоже параметру Introtext word limit

добавить параметр  header word limit and/or header characters limit

Вообще к2 такой мощный контент менеджер - мне он очень нравится. Я правда еще не очень в нем разобрался, только недавно начал использовать. Очень удобный в организации любого материала, особенно каталога товаров или чего-то такого глобального, масштабногог, такой своеобразный вариант хорошей базы данных с отличной структурой... можно создать целую структурную сеть, добавлять и описания и ключевые слова и поиск по ключевым словам, и выборки...очень удобная вещь.. просто мегаструктура.. жаль что к2 нет для J1.6.


1- Есть модуль Гавика, который это отлично делает. (но только для материалов)
2- для 1.7 http://getk2.org/svnDownload.php
Смотрю....

*

Оффлайн waterfly

Re: Ограничить длину заголовков К2
« Ответ #19 : 20.11.2013, 03:55:36 »
Подскажите как ограничить количество символов в такой конструкции

<?php 
            
if($params->get('pTooltip')){ 
              if((
$params->get('pTooltipLimit')) && (strlen($item->fulltext) > $params->get('pTooltipLimit'))){
                
$toolText substr($item->fulltext0$params->get('pTooltipLimit')); 
              }else{
                
$toolText $item->fulltext
              } 
              echo 
JHTML::tooltip(strip_tags($toolText), $item->title
  
            ''$item->title);
              
?>

*

Оффлайн Edikxp

Re: Ограничить длину заголовков К2
« Ответ #20 : 24.09.2014, 15:23:32 »
Дай вам бог здоровья программисты, что отвечаете тут людям ))) Все два варианта работают ))

*

Оффлайн Edikxp

Re: Ограничить длину заголовков К2
« Ответ #21 : 02.10.2014, 20:23:54 »
Подскажите еще как ограничить длину в модуле Content - mod_k2_content

Вот код

      <?php if($params->get('itemTitle')): ?>
      <a class="moduleItemTitle" href="<?php echo $item->link?>"><?php echo $item->title?></a>
      <?php endif; ?>


Так вроде работает ))


     <?php if($params->get('itemTitle')): ?>
      <a class="moduleItemTitle" href="<?php echo $item->link; ?>" title="<?php echo $item->title; ?>"><?php echo K2HelperUtilities::wordLimit($item->title, 4); ?></a>
      <?php endif; ?>
« Последнее редактирование: 02.10.2014, 20:43:09 от Edikxp »

Re: Ограничить длину заголовков К2
« Ответ #22 : 28.10.2015, 23:53:12 »
Код: (php) [Выделить]
<?php if($this->item->params->get('catItemTitle')): ?>
    <!-- Item title -->
        <h3 class="catItemTitle">
   <?php if ($this->item->params->get('catItemTitleLinked')): ?>
       <a href="<?php echo $this->item->link?>" title="<?php echo $this->item->title?>">
     <?php echo K2HelperUtilities::wordLimit($this->item->title5); ?>
  </a>
   <?php else: ?>
  <?php echo K2HelperUtilities::wordLimit($this->item->title5); ?>
            <?php endif; ?>


У меня Joomla 3.4 и K2_v2.6.9
Заменил вашим кодом, который выше, свой код, который ниже:
<?php if($this->item->params->get('catItemTitle')): ?>
  <!-- Item title -->
  <h3 class="catItemTitle">
<?php if(isset($this->item->editLink)): ?>
<!-- Item edit link -->
<span class="catItemEditLink">
<a class="modal" rel="{handler:'iframe',size:{x:990,y:550}}" href="<?php echo $this->item->editLink?>">
<?php echo JText::_('K2_EDIT_ITEM'); ?>
</a>
</span>
<?php endif; ?>

  <?php if ($this->item->params->get('catItemTitleLinked')): ?>
<a href="<?php echo $this->item->link?>">
  <?php echo $this->item->title?>
  </a>
  <?php else: ?>
  <?php echo $this->item->title?>
  <?php endif; ?>

Вроде все работает, но после заголовка появляются три точки! Их можно убрать?
« Последнее редактирование: 29.10.2015, 00:14:23 от vitmail99 »