Форум русской поддержки Joomla!® CMS
04.12.2016, 22:26:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

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

 (Прочитано 4466 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Yura Vakulenko
Осваиваюсь на форуме
***

Репутация: +6/-1
Offline Offline

Пол: Мужской
Сообщений: 178


« : 02.10.2011, 03:38:11 »

 ! ! Ребята! Подскажите! Как в К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, 18:39:48 от SDKiller » Записан
HYBRID
Давно я тут
****

Репутация: +46/-0
Offline Offline

Пол: Мужской
Сообщений: 237


Они захватят мир


« Ответ #1 : 02.10.2011, 06: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, но оно пока не поддерживается в полной мере всеми браузерами, и особенно ослом

ЗЫ, поменьше красок в тексте, а красный вообще нельзя использовать, он только для модераторов
Записан
Yura Vakulenko
Осваиваюсь на форуме
***

Репутация: +6/-1
Offline Offline

Пол: Мужской
Сообщений: 178


« Ответ #2 : 02.10.2011, 09:21:08 »

Сейчас попробую! Спасибо!

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

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

Репутация: +65/-0
Offline Offline

Пол: Мужской
Сообщений: 1090


Staticlight


« Ответ #3 : 02.10.2011, 13:14:28 »

Главное - пользоваться этим с умом, а то будут заголовки типа "Перси Джексон и пох..."

« Последнее редактирование: 02.10.2011, 13:18:12 от staticlight » Записан
SDKiller
Moderator
*****

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #4 : 02.10.2011, 16: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, 19:36:31 от SDKiller » Записан
staticlight
Moderator
*****

Репутация: +65/-0
Offline Offline

Пол: Мужской
Сообщений: 1090


Staticlight


« Ответ #5 : 02.10.2011, 17: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);

Я правильно понял?
Записан
SDKiller
Moderator
*****

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #6 : 02.10.2011, 17:59:37 »

Зачем в head, вызываем функцию в том месте, где непосредственно используем, в данном случае - в шаблоне.

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

Репутация: +46/-0
Offline Offline

Пол: Мужской
Сообщений: 237


Они захватят мир


« Ответ #7 : 02.10.2011, 18:16:50 »

SDKiller, за наводку на utilities спасибо, но в данном случае больше подошла бы функция
Код:
characterLimit($this->item->title, $limit = N, $end_char = '...')
Записан
SDKiller
Moderator
*****

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #8 : 02.10.2011, 18:19:24 »

SDKiller, за наводку на utilities спасибо, но в данном случае больше подошла бы функция
Код:
characterLimit($this->item->title, $limit = N, $end_char = '...')

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

Цитировать
...типа "Перси Джексон и пох..."
Записан
Yura Vakulenko
Осваиваюсь на форуме
***

Репутация: +6/-1
Offline Offline

Пол: Мужской
Сообщений: 178


« Ответ #9 : 02.10.2011, 19: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, 19:58:42 от Yura Vakulenko » Записан
SDKiller
Moderator
*****

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #10 : 02.10.2011, 19: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.
Записан
Yura Vakulenko
Осваиваюсь на форуме
***

Репутация: +6/-1
Offline Offline

Пол: Мужской
Сообщений: 178


« Ответ #11 : 02.10.2011, 20: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; ?>
Записан
Yura Vakulenko
Осваиваюсь на форуме
***

Репутация: +6/-1
Offline Offline

Пол: Мужской
Сообщений: 178


« Ответ #12 : 02.10.2011, 20: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
Moderator
*****

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #13 : 02.10.2011, 20:26:04 »

Кстати, в category_item можно не подключать utilities, они уже подключены.

Так что то что касается заголовка - этот кусок будет будет выглядеть так (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 K2HelperUtilities::wordLimit($this->item->title, 5); ?>
  </a>
   <?php else: ?>
  <?php echo K2HelperUtilities::wordLimit($this->item->title, 5); ?>
           <?php endif; ?>
 

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

Репутация: +46/-0
Offline Offline

Пол: Мужской
Сообщений: 237


Они захватят мир


« Ответ #14 : 02.10.2011, 20:34:35 »

удалено
Записан
Yura Vakulenko
Осваиваюсь на форуме
***

Репутация: +6/-1
Offline Offline

Пол: Мужской
Сообщений: 178


« Ответ #15 : 02.10.2011, 20: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
Moderator
*****

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #16 : 02.10.2011, 20:52:29 »

Количество слов во вводном тексте вы можете просто ограничить в настройках категории
Записан
Yura Vakulenko
Осваиваюсь на форуме
***

Репутация: +6/-1
Offline Offline

Пол: Мужской
Сообщений: 178


« Ответ #17 : 02.10.2011, 20:58:38 »

Количество слов во вводном тексте вы можете просто ограничить в настройках категории

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

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

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

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

Репутация: +35/-3
Offline Offline

Пол: Мужской
Сообщений: 1261



« Ответ #18 : 03.10.2011, 10:46:46 »


Почему разработчики К2 не предусмотрели такой очевидный вариант с настройкой количества символов или слов в Заголовке материалов для блока категории?  Wink Было бы отлично если бы они добавили такой параметр в админ панель, похоже параметру 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
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 83


« Ответ #19 : 20.11.2013, 01:55:36 »

Подскажите как ограничить количество символов в такой конструкции

Код:
<?php
            if($params->get('pTooltip')){
              if(($params->get('pTooltipLimit')) && (strlen($item->fulltext) > $params->get('pTooltipLimit'))){
                $toolText = substr($item->fulltext, 0, $params->get('pTooltipLimit'));
              }else{
                $toolText = $item->fulltext;
              }
              echo JHTML::tooltip(strip_tags($toolText), $item->title,
              '', $item->title);
              ?>
Записан
Edikxp
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 33


« Ответ #20 : 24.09.2014, 13:23:32 »

Дай вам бог здоровья программисты, что отвечаете тут людям ))) Все два варианта работают ))
Записан
Edikxp
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 33


« Ответ #21 : 02.10.2014, 18: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, 18:43:09 от Edikxp » Записан
vitmail99
Осваиваюсь на форуме
***

Репутация: +2/-2
Offline Offline

Сообщений: 73


« Ответ #22 : 28.10.2015, 22:53:12 »

Код
<?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->title, 5); ?>
  </a>
   <?php else: ?>
  <?php echo K2HelperUtilities::wordLimit($this->item->title, 5); ?>
           <?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; ?>

Вроде все работает, но после заголовка появляются три точки! Их можно убрать?
« Последнее редактирование: 28.10.2015, 23:14:23 от vitmail99 » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet