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

Toxa33

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

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

fbr

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

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

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

Toxa33

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

fbr

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

Toxa33

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

fbr

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

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

Toxa33

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

fbr

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

Toxa33

  • Захожу иногда
  • 79
  • 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

  • Глобальный модератор
  • 6935
  • 753 / 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

  • Легенда
  • 8218
  • 1590 / 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

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

Takohashi

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

beliyadm

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

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

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

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

Takohashi

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

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

beliyadm

  • Легенда
  • 8218
  • 1590 / 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

  • Легенда
  • 8218
  • 1590 / 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

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

Леон

  • Захожу иногда
  • 290
  • 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);
}
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Пропала панель форматирования текста

Автор Nastya_lee

Ответов: 1
Просмотров: 71
Последний ответ 23.11.2017, 02:24:36
от pavelrer
Автоматическое закрытие тегов

Автор sved2000

Ответов: 0
Просмотров: 54
Последний ответ 16.11.2017, 01:31:45
от sved2000
Не работает стандарный плагин подсветки текста Highlight

Автор Antonchip

Ответов: 4
Просмотров: 281
Последний ответ 14.11.2017, 11:32:06
от effrit
Как ограничить количество символов в результате поиска Joomla 3/x?

Автор q.q121

Ответов: 1
Просмотров: 109
Последний ответ 06.11.2017, 23:15:03
от pavelrer
Изображение для вступительного текста материала в Шаблоне Helix3

Автор AntonioKryl

Ответов: 1
Просмотров: 145
Последний ответ 25.10.2017, 13:19:02
от AntonioKryl