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

krazyyolka

  • Новичок
  • 19
  • 0 / 0
Здравствуйте. Возник вопрос при работе с версиями Joomla 1.6 и 1.7

Каким образом возможно автоматически ограничить количество символов вводного текста без использования K2?

Заранее, спасибо.
*

elscept

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Присоединяюсь к вопросу.
*

b2z

  • Глобальный модератор
  • 7006
  • 757 / 0
  • Разраблю понемногу
*

elscept

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
bzzik, насколько я понял, это несколько другое. Предложенный Вами вариант подразумевает ограничение по тексту заголовка материала при его добавлении к кнопке "подробнее".
*

b2z

  • Глобальный модератор
  • 7006
  • 757 / 0
  • Разраблю понемногу
А, блин сорри! Чего-то затупил. Текст вводного текста ограничивается тегом Подробнее в статье:
Код
<hr id="system-readmore" />

Насколько мне известно в Joomla нет возможности ставить его автоматом.
*

elscept

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
*

Efanych

  • Глобальный модератор
  • 4686
  • 643 / 0
  • Меняю свою жизнь на 360°!
Цитировать
Каким образом возможно автоматически ограничить количество символов вводного текста без использования K2?
А что нужно ограничить и где? Вводимого или выводимого?
Есть функция substr, правда при обрезании квадратик непонятный вконце
Например, если не ставить подробнее в материале, а в блоге категории заменить
Цитировать
<?php echo JFilterOutput::ampReplace($this->item->text);  ?>
На
Цитировать
<?php echo JFilterOutput::ampReplace(substr($this->item->text, 0, 75)); ?>
То будет обрезать примерно на 25 символов  (75/3)
P.S. Понял, как квадратик убрать. Нужно substr заменить на mb_substr
« Последнее редактирование: 09.03.2012, 19:34:09 от Efanych »
Создание сайтов, шаблонов, помощь в решении проблем.
*

zeher

  • Захожу иногда
  • 164
  • 12 / 0
можно пожалуйста по подробней где это заменить
*

NightGuard

  • Живу я здесь
  • 2932
  • 378 / 7
  • вжжж-вжжж
Efanych, эт ты по символам, по словам оптимальнее.
Идеология сверхпотребления более опасна для человечества, чем идеология гитлеровского тоталитаризма

skype: nightguardsrussia - только по рабочим вопросам, любые консультации - платные!
*

Efanych

  • Глобальный модератор
  • 4686
  • 643 / 0
  • Меняю свою жизнь на 360°!
Efanych, эт ты по символам, по словам оптимальнее.
Не. Оптимальнее по символам, по словам может очень сильно разниться обьём текста. Нашёл ещё оптимальнее - обрезать по символам, не обрезав последнее слово.
Код: php
<?php 
$text = strip_tags($this->item->text);
if (!function_exists('truncate_words')) {
function truncate_words($text, $limit=99)
{
$text=mb_substr($text,0,$limit);
/*если не пустая обрезаем до  последнего  пробела*/
if(mb_substr($text,mb_strlen($text)-1,1) && mb_strlen($text)==$limit)
{
$textret=mb_substr($text,0,mb_strlen($text)-mb_strlen(strrchr($text,' ')));
if(!empty($textret))
{
return $textret;
}
}
return $text;
}}
echo truncate_words($text)."..."; ?>
« Последнее редактирование: 14.03.2013, 21:27:06 от Efanych »
Создание сайтов, шаблонов, помощь в решении проблем.
*

Efanych

  • Глобальный модератор
  • 4686
  • 643 / 0
  • Меняю свою жизнь на 360°!
Ага. Траблу нашёл. При таком обрезании возникает незакрытый тег. Если это <p>, то некритично, а при <div> может и вёрстка посыпаться.
Исправил предыдущий пост. Теперь сначала текст очищается от всех тегов.
« Последнее редактирование: 21.06.2012, 10:41:44 от Efanych »
Создание сайтов, шаблонов, помощь в решении проблем.
*

Ravilka

  • Осваиваюсь на форуме
  • 33
  • 5 / 1
Не. Оптимальнее по символам, по словам может очень сильно разниться обьём текста. Нашёл ещё оптимальнее - обрезать по символам, не обрезав последнее слово.
Код: php
<?php 
$text = $this->item->introtext;
function truncate_words($text, $limit=200)
{
$text_substr=mb_substr($text,0,$limit);
/*если не пустая обрезаем до  последнего  пробела*/
if(mb_substr($text,mb_strlen($text)-1,1) && mb_strlen($text)==$limit)
{
$textret=mb_substr($text,0,mb_strlen($text)-mb_strlen(strrchr($text,' ')));
if(!empty($textret))
{
return $textret;
}
}
return $text_substr;
}
echo truncate_words($text)."..."; ?>

Подскажите, может кто в курсе, как это применить для краткого описания переменная $product_s_desc, она как-раз только текстовая varchar

Ставлю вот так

Спойлер
[свернуть]
а у меня весь вид странице теряется
« Последнее редактирование: 15.05.2012, 15:49:08 от Ravilka »
*

Efanych

  • Глобальный модератор
  • 4686
  • 643 / 0
  • Меняю свою жизнь на 360°!
Сохраните файл в кодировке utf-8 без boom
Создание сайтов, шаблонов, помощь в решении проблем.
*

wert9

  • Новичок
  • 5
  • 0 / 0
Подскажите пожалуйста а как такое же провернуть на Joomla 2.5, для страницы категорий и модуля новостей. На Joomla 1.5 получалось, но она по другим параметрам мне не подошла >:(, пришлось брать 2.5 версию, а тут никак решения для автоматического обрезания текста отображаемого в блоке категорий материала и новостей ( mod_articles_news) никак не найду, а пользователи категорически отказываются сами разделитель ставить и заливают многостраничные документы >:(
*

wert9

  • Новичок
  • 5
  • 0 / 0
С "Блоком категорий" я разобрался, как там сделать автообрезание метериала, а вот с mod_articles_news никак не разобраться, как автоматом отрезать !
*

cantsave

  • Захожу иногда
  • 215
  • 2 / 0
С "Блоком категорий" я разобрался, как там сделать автообрезание метериала, а вот с mod_articles_news никак не разобраться, как автоматом отрезать !

Покажи пожалуйста как сделал на 2.5 Блога категорий.
Рискуйте! Если вы победите — будете счастливы, а если проиграете — мудры.
*

wert9

  • Новичок
  • 5
  • 0 / 0
Покажи пожалуйста как сделал на 2.5 Блога категорий.
Нашол тут на сайте решение, но сейчас что-то не найти. У себя грохнул эту модификацию, т.к. в конечном итоге не понравилось , что оно без кнопоря "читать далее ...", было тупо обрезание по 200 символов и 3 точки в конце.
*

ycsus

  • Новичок
  • 2
  • 0 / 0
Код
 echo JHtml::_('string.truncate', ($item->title), '100');
*

dron

  • Завсегдатай
  • 1268
  • 12 / 9
Код: php
<?php 
$text = strip_tags($this->item->text);
if (!function_exists('truncate_words')) {
function truncate_words($text, $limit=99)
{
$text=mb_substr($text,0,$limit);
/*если не пустая обрезаем до  последнего  пробела*/
if(mb_substr($text,mb_strlen($text)-1,1) && mb_strlen($text)==$limit)
{
$textret=mb_substr($text,0,mb_strlen($text)-mb_strlen(strrchr($text,' ')));
if(!empty($textret))
{
return $textret;
}
}
return $text;
}}
echo truncate_words($text)."..."; ?>


люди добрые, объясните мне идиоту, как в этот код запихнуть строку $product->name?  ?
куда ее вставлять? в PHP полный ноль, все что пробовал делать приводило к ошибке загрузки страницы, ошибки синтаксиса и т.п.

Заранее спасибо!
*

OmniWizard

  • Захожу иногда
  • 51
  • 3 / 0
Пример $item->content = JString::substr($item->content, 0, $params->get('introtext_limit')); Чтобы ребята квадратиков не было пользуйтесь JString)))
Чтобы что-то делать хорошо, сначала нужно научиться это делать плохо !
*

dron

  • Завсегдатай
  • 1268
  • 12 / 9
Прошу прощения, я снова не понял... Т.е. в моем случае целиком код будет выглядеть так:

<?php
$item->content = JString::substr($product->name, 0, $params->get('introtext_limit'));
?>

?
*

OmniWizard

  • Захожу иногда
  • 51
  • 3 / 0
Я привел пример) для тех людей у кого проблемы с ограничение в php русских слов.

А вам надо просто, найти компонент или модуль , я не знаю что у вас выводит данный текст и просто добавить данную функцию в тело))  Дайте ссылку на компонент которым вы пользуетесь
« Последнее редактирование: 10.12.2013, 13:02:39 от OmniWizard »
Чтобы что-то делать хорошо, сначала нужно научиться это делать плохо !
*

dron

  • Завсегдатай
  • 1268
  • 12 / 9
это JoomShopping обычный. $product->name - это название продукта.
*

OmniWizard

  • Захожу иногда
  • 51
  • 3 / 0
Ладно )) тогда слушай....
Создаешь папку в M:\home\test1.ru\www\libraries
назови ее libword в ней создай файл word.php в него закинь код

<?php
class word_str{
function str_word($text, $counttext = 10) {
    $sep = ' ';
    $words = explode($sep, $text);
    if ( count($words) > $counttext )
        $text = join($sep, array_slice($words, 0, $counttext));
    return $text;
}
}

далее зайди в папку своего компонента и найди вид который отвечает за это у меня это тут \www\components\com_jshopping\templates\default\list_products файл product.php
его как раз и меняем.
В шапку дописываем путь до нашей функции
<?php defined('_JEXEC') or die();
 jimport('libword.word')
?>

находим наше название
<div class="name">
            <a href="<?php print $product->product_link?>"><?php print $product->name?></a>
            <?php if ($this->config->product_list_show_product_code){?><span class="jshop_code_prod">(<?php print _JSHOP_EAN?>: <span><?php print $product->product_ean;?></span>)</span><?php }?>
        </div>
и меняем на
<div class="name">
            <a href="<?php print $product->product_link?>"><?php print word_str::str_word( $product->name,2)?></a>
            <?php if ($this->config->product_list_show_product_code){?><span class="jshop_code_prod">(<?php print _JSHOP_EAN?>: <span><?php print $product->product_ean;?></span>)</span><?php }?>
        </div>
так, описание word_str::str_word( $product->name,2) - так как это штука режет по словам, значение 2- значит он выводит 2 слова только.
Чтобы что-то делать хорошо, сначала нужно научиться это делать плохо !
*

dron

  • Завсегдатай
  • 1268
  • 12 / 9
ого! Спасибо большое! Буду разбираться.

Правда, думаю, по символам было бы интересней.

Кстати, это же все слетит при обновлении?
*

OmniWizard

  • Захожу иногда
  • 51
  • 3 / 0
jimport('libword.word')  - это твоя функция .. не куда она уже не денется, то есть в шапку любого выводимого файла вставляешь и любое имя word_str::str_word( $product->name,2), хоть это новости, хоть что угодно. А вот, обновиться может файл самого продукта. Ну я думаю, если FireBug есть и Total Командер)) то всегда можешь в поиске по тексту найти файл с отображением)))


если тебе нужен твой пример-> то просто открой файл word.php и добавь свой пример

function truncate_words($text, $limit=99)
{
   $text=mb_substr($text,0,$limit);
   if(mb_substr($text,mb_strlen($text)-1,1) && mb_strlen($text)==$limit)
   {
      $textret=mb_substr($text,0,mb_strlen($text)-mb_strlen(strrchr($text,' ')));
      if(!empty($textret))
      {
         return $textret;
      }
   }
   return $text;
}


только в тексте шаблона надо будет вместе word_str::str_word( $product->name,2) вставить word_str::truncate_words( $product->name,100) второй показатель тут уже не количество слов, а количество символов
« Последнее редактирование: 10.12.2013, 14:31:43 от OmniWizard »
Чтобы что-то делать хорошо, сначала нужно научиться это делать плохо !
*

dron

  • Завсегдатай
  • 1268
  • 12 / 9
благодарю! буду пробовать.
*

dron

  • Завсегдатай
  • 1268
  • 12 / 9
все работает! огромное спасибо!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Отступ текста от изображения

Автор lexus26

Ответов: 6
Просмотров: 222
Последний ответ 27.01.2019, 21:32:17
от lexus26
Вывод количества комментариев jcomment

Автор Vlasnov

Ответов: 1
Просмотров: 463
Последний ответ 19.06.2018, 09:53:58
от kern.USR
не сохраняется материал с большим количеством символов

Автор diman_bush

Ответов: 5
Просмотров: 489
Последний ответ 31.08.2017, 05:49:13
от diman_bush
Фильтрации текста (Нужна реанимация)

Автор vetalb91

Ответов: 0
Просмотров: 472
Последний ответ 17.08.2017, 17:56:42
от vetalb91
Автоматическое уменьшение размера изображений для статей

Автор rean1mator

Ответов: 5
Просмотров: 3711
Последний ответ 21.05.2017, 16:27:32
от valcoray