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

Toxa33

  • Захожу иногда
  • 81
  • 0 / 0
Была такая же тема для Joomla 2.5 http://joomlaforum.ru/index.php?topic=183528.0

В 3 Joomla ктонито сделал подобное?
*

fbr

  • Завсегдатай
  • 1366
  • 157 / 6
Зачем подобное? этот вариант и работает без проблем в j3

Код: php
echo JHtml::_('string.truncate', ($item->introtext), '100');

цифру ставите свою
*

Toxa33

  • Захожу иногда
  • 81
  • 0 / 0
не подскажите в какой файл вставлять? и куда именно?
*

fbr

  • Завсегдатай
  • 1366
  • 157 / 6
Это зависит от того что и где вы хотите ограничить
Я ж не знаю, где  - в модуле, блоге, на главной ...
*

Toxa33

  • Захожу иногда
  • 81
  • 0 / 0
вывод статей на главной и в блоге категории
статьи выводятся стандартными средствами, без сторонних компонентов
*

fbr

  • Завсегдатай
  • 1366
  • 157 / 6
в блоге категории файл blog_item.php:
Код: php
40 <?php echo $this->item->event->beforeDisplayContent; ?> <?php echo JHtml::_('string.truncate', ($this->item->introtext), '100')?>
аналогично для главной - найти код в соответствующем файле и отредактировать

Лучше это делать не в самом компоненте, а в шаблоне в папке HTML, если нет - то создать
*

Toxa33

  • Захожу иногда
  • 81
  • 0 / 0
*

fbr

  • Завсегдатай
  • 1366
  • 157 / 6
Пожалуйста
Только, на мой взгляд, это не лучший вариант. Может проще "подробнее" вставлять раньше? Естественный ограничитель выводимого текста - лучше чем хак. Другое дело в модуле, где это может диктоваться компактностью
*

Toxa33

  • Захожу иногда
  • 81
  • 0 / 0
подробнее вставляется вручную, но статьи размещают разные пользователи и все делают вводную часть разной длины.
Для красоты хочется чтобы было везде одинаково
*

Ingener

  • Давно я тут
  • 547
  • 10 / 5
Да, но еще бы для красоты к этому решению добавить еще автоочистку HTML ВВОДНОГО ТЕКСТА, а то получится еще хуще чем было, подскажите решение пожалуйста.
*

Ingener

  • Давно я тут
  • 547
  • 10 / 5
Напишите пожалуйста какой будет окончательный вариант указанной выше строки:

Код
40 <?php echo $this->item->event->beforeDisplayContent; ?> <?php echo JHtml::_('string.truncate', ($this->item->introtext), '100')?>

чтобы работало ограничение кол-ва символов и очистка HTML.
*

b2z

  • Глобальный модератор
  • 6959
  • 755 / 0
  • Разраблю понемногу
Хех, разве так сложно заменить одно на другое? :)

Код: php
<?php echo $this->item->event->beforeDisplayContent; ?> 
<?php echo JHtml::_('string.truncate', (strip_tags($this->item->introtext)), '100')?>
*

Takohashi

  • Захожу иногда
  • 69
  • 10 / 3
Хех, разве так сложно заменить одно на другое? :)

Код: php
<?php echo $this->item->event->beforeDisplayContent; ?> 
<?php echo JHtml::_('string.truncate', (strip_tags($this->item->introtext)), '100')?>

А можно как-то сделать, чтобы при этой обрезке оставался блок с ссылками «Подробнее» и «Комментарии»?
*

beliyadm

  • Легенда
  • 8862
  • 1624 / 63
  • Севастополь == Россия
А можно как-то сделать, чтобы при этой обрезке оставался блок с ссылками «Подробнее» и «Комментарии»?
Этот код обрезает текст материала, а "подробнее" и "комментарии" вставляются плагинами уже за пределами этого кода
Так что одно другому не мешает
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

Takohashi

  • Захожу иногда
  • 69
  • 10 / 3
beliyadm, почти так. Не обратил внимание, что «Подробнее» в настройках пункта меню случайно отключил — действительно выводится. А вот ссылка на комментарии — нет. Я использую плагин для DISQUS, и вот он как раз ссылку на комментарии засовывает в introtext, поэтому она и не выводится. Можно это как-то исправить? Вот кусок кода:
Код: php
// Set '$row->text' to '$row->introtext' for J!1.6+
if (version_compare(JVERSION, '1.6.0', 'ge'))
$row->text = $row->introtext;

// Fetch the template
ob_start();
$dsqListingPath = DisqusHelper::getTemplatePath($this->plg_name, 'listing.php');
$dsqListingPath = $dsqListingPath->file;
include ($dsqListingPath);
$getListingTemplate = $this->plg_copyrights_start.ob_get_contents().$this->plg_copyrights_end;
ob_end_clean();

// Output
$row->text = $getListingTemplate;
*

beliyadm

  • Легенда
  • 8862
  • 1624 / 63
  • Севастополь == Россия
DISQUSне знаю этого плагина, потому не могу ничего сказать
В этом куске кода я не не вижу вставки
Давайте так, по порядку
Версия движка на сайте, что используется из плагинов, что требуется получить и какими средствами
Возможно что есть решение достаточно простое
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

Takohashi

  • Захожу иногда
  • 69
  • 10 / 3
beliyadm, у меня сейчас всё на локалхосте. Joomla 3.3.6, плагин Disqus Comments. Плагин вообще простецкий — два с половиной файла и две с половиной настройки. По факту — всего лишь в статью подгружает из сети форму Дискуса и выводит ссылку на комментарии в вводном тексте статьи (в introtext), который обрезается.
*

beliyadm

  • Легенда
  • 8862
  • 1624 / 63
  • Севастополь == Россия
По факту — всего лишь в статью подгружает из сети форму Дискуса и выводит ссылку на комментарии в вводном тексте статьи (в introtext), который обрезается.
То есть по сути это как плагин стандартный движка аля loadmodule?

По факту — всего лишь в статью подгружает из сети форму Дискуса и выводит ссылку на комментарии в вводном тексте статьи (в introtext), который обрезается.
Честно не понял, кто у тебя обрезается? Интротекст? В режиме стандартных материалов?

Или может так - подгружает форму дискуса и ссылку на комментарии и обрезает интротекст

Честно - я пока не очень понимаю задачу
Если стукнешь мне завтра в скайп - может и решим быстрей задачу, так испорченный телефон получается
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

Takohashi

  • Захожу иногда
  • 69
  • 10 / 3
beliyadm, ну вот смотри: на главной странице выводятся новости в виде вводного текста (интротекст), к каждой новости плагин Дискуса на главной странице отображает ссылку «Х комментариев», но эта ссылка выводится в конце интротекста, а так как мы обрезаем интротекст, как сказано в этом топике, то само-собой эта ссылка тоже обрезается.
Мне нужно, чтобы ссылка «Х комментариев» выводилась не в интротексте, а за его пределами, рядом с «Подробнее».

А форма Дискуса отображается на странице полного текста новости — это я просто суть плагина описал.
*

beliyadm

  • Легенда
  • 8862
  • 1624 / 63
  • Севастополь == Россия
Если посмотреть страницу шаблона материала - то там видно что работает afterDisplayContent
Если у этого (не знаю что за дискусс) работает эта логика нашего движка - то все работает

То есть что нам нужно сделать сделать - написать банально плагин, что будет выводить текст за пределами fulltext ну или может я ошибаюсь
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

Takohashi

  • Захожу иногда
  • 69
  • 10 / 3
написать банально плагин
Эх, я то думал, там как-то по-простому можно исправить, буквально заменив какую-то переменную...
Но, видимо, так просто не исправить. По тому куску кода, что я привёл выше видно, что первоначальный интротекст отправляется в файл listing.php (в том файле всего лишь к интротексту добавляяется ссылка «Х комментариев»), потом он обрамляется комментариями plg_copyrights_start/plg_copyrights_end и всё это выводится интротекстом.

Можно на гитхабе код глянуть — https://github.com/joomlaworks/disqus-comments-for-joomla Он более чем подробно закомментирован, но всё равно не соображу, так как никогда код в подобном ключе не менял.
*

beliyadm

  • Легенда
  • 8862
  • 1624 / 63
  • Севастополь == Россия
Эх, я то думал, там как-то по-простому можно исправить, буквально заменив какую-то переменную...
не, ну можно и так
На уровне шаблона приходит уже весь текст после обработки плагинами
а вот в модели статьи можно делать многое
Но аккуратно, при обновлении все потеряется, потому надежнее плагином (но и чуть сложнее)

Но еще проще, если я правильно понимаю суть
Мне нужно, чтобы ссылка «Х комментариев» выводилась не в интротексте, а за его пределами, рядом с «Подробнее»
На уровне шаблона контента проверить, есть ли комментарии и вывести ссылку
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

Takohashi

  • Захожу иногда
  • 69
  • 10 / 3
beliyadm, спасибо за помощь. Сейчас решил проблему, причём решил элементарно. Как я уже говорил, в файле listing.php к интротексту добавляется ссылка на комментарии, вот тамошний код:
Код: php
<a class="jwDisqusListingCounterLink" href="<?php echo $output->itemURL; ?>#disqus_thread" title="<?php echo JText::_("JW_DISQUS_ADD_A_COMMENT"); ?>" data-disqus-identifier="<?php echo $output->disqusIdentifier; ?>">
<?php echo JText::_("JW_DISQUS_ADD_A_COMMENT"); ?>
</a>
Я всего навсего скопировал этот код в нужное место в defaul_item.php, исправив $output->itemURL и $output->disqusIdentifier:
Код: php
<a class="jwDisqusListingCounterLink" href="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid)); ?>#disqus_thread" title="<?php echo JText::_("JW_DISQUS_ADD_A_COMMENT"); ?>" data-disqus-identifier="<?php echo substr(md5('MY_DISQUS_DOMAIN'), 0, 10).'_id'.$this->item->id; ?>">
<?php echo JText::_("JW_DISQUS_ADD_A_COMMENT"); ?>
</a>
В результате ссылка выводится ровно такого же вида, как и плагином, но как я и хотел — за пределами интротекста. Только есть единственное НО — что в моём варианте, что ссылка из плагина, не всегда корректно отображается кол-во комментариев. Не знаю, то ли где-то кэшируется, то ли из-за того, что на локалхосте работает.
*

bb777

  • Осваиваюсь на форуме
  • 46
  • 0 / 0
А нет ли готового решения в виде плагина?
*

Леон

  • Захожу иногда
  • 296
  • 4 / 0
Не знаю по какой причине, но у меня многоточие добавлялось почему-то на новой строке. Оно почему-то после последнего </p> вставлялось и получалось новая строка с '...'

Решил проблему так, также в файле шаблона, в нужном месте вставил:

Код
// Получаю id текущей категории
$input = JFactory::getApplication()->input;
$categoryid = ($input->getCmd('view', '')=='article')?  $input->getCmd('catid', ''): $input->getCmd('id', '');

//Если id категории от 8 до 16 (это нужные мне категории где нужно сокращать текст), тогда выводим первые 470 символов текста и многоточие, иначе в других категориях выводим все как обычно, без обрезок.
if ($categoryid >= 8 && $categoryid <= 16) {
echo mb_substr($this->item->introtext,0,470). '...';
} else {
echo JHtml::_('content.prepare', $this->item->introtext);
}
*

autokaif

  • Захожу иногда
  • 61
  • 0 / 0
Зачем подобное? этот вариант и работает без проблем в j3

Код: php
echo JHtml::_('string.truncate', ($item->introtext), '100');

цифру ставите свою

Доброго времени суток. Выручите пожалуйста, надо ограничить текст до знака -
В файле \plugins\content\pagenavigation\tmpl\default.php
Не получается использовать Ваш пример с записью, которая выводит ссылку текстом на след и предыдущий материал

<ul class="pager pagenav">
<?php if ($row->prev) :
   $direction = $lang->isRtl()? 'right' : 'left'; ?>
   <li class="previous">
      <a class="hasTooltip" title="<?php echo htmlspecialchars($rows[$location-1]->title); ?>" aria-label="<?php echo JText::sprintf('JPREVIOUS_TITLE', htmlspecialchars($rows[$location-1]->title)); ?>" href="<?php echo $row->prev; ?>" rel="prev">
         <?php echo '<span class="icon-chevron-' . $direction . '" aria-hidden="true"></span> <span aria-hidden="true">' . $row->prev_label . '</span>'; ?>
         <?php echo htmlspecialchars($rows[$location-1]->title); ?>
      </a>
   </li>
<?php endif; ?>
<?php if ($row->next) :
   $direction = $lang->isRtl()? 'left' : 'right'; ?>
   <li class="next">
      <a class="hasTooltip" title="<?php echo htmlspecialchars($rows[$location+1]->title); ?>" aria-label="<?php echo JText::sprintf('JNEXT_TITLE', htmlspecialchars($rows[$location+1]->title)); ?>" href="<?php echo $row->next; ?>" rel="next">
         <?php echo htmlspecialchars($rows[$location+1]->title); ?><?php echo '<span aria-hidden="true">' . $row->next_label . '</span> <span class="icon-chevron-' . $direction . '" aria-hidden="true"></span>'; ?>
      </a>
   </li>
<?php endif; ?>
</ul>
Заранее Благодарю
*

NewUsers

  • Завсегдатай
  • 1460
  • 116 / 0
А какой текст ты хочешь ограничивать?
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги
Помогу с переездом на PHP 7.x и исправлю ошибки PHP
*

autokaif

  • Захожу иногда
  • 61
  • 0 / 0
А какой текст ты хочешь ограничивать?
Благодарю за внимание!
Стрелки на предыдущий и следующий материал в самой статье, дооборудовал словами, как видно из титла (вставил echo htmlspecialchars($rows[$location-1]->title); ?> в <a href=""). Вот их и не получается обрезать до знака -
*

NewUsers

  • Завсегдатай
  • 1460
  • 116 / 0
Код: php
echo htmlspecialchars(substr($rows[$location-1]->title, 0, stristr($rows[$location-1]->title, '-'));
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги
Помогу с переездом на PHP 7.x и исправлю ошибки PHP
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Дополнительное поле для вывода вступительного текста к новостям

Автор Merk

Ответов: 0
Просмотров: 64
Последний ответ 10.11.2018, 18:26:12
от Merk
Ограничить число выводимых символов

Автор SuschnosT

Ответов: 18
Просмотров: 676
Последний ответ 05.11.2018, 03:09:28
от pavelrer
Добавление "?" и строки символов к URL всех.js и.css - файлов

Автор vodochnikoff

Ответов: 17
Просмотров: 185
Последний ответ 21.10.2018, 20:01:12
от beliyadm
Изменение текста в кнопках пагинации

Автор serzh-serega

Ответов: 5
Просмотров: 124
Последний ответ 26.09.2018, 10:32:35
от NewUsers
Можно ли сделать отображение в меню количества документов в статье

Автор SergeiK2011

Ответов: 1
Просмотров: 141
Последний ответ 15.09.2018, 05:45:57
от Cedars