PDA

Zobacz pełną wersję : [Rozwiązane] Czytaj więcej po określonej liczbie znaków.



lukask10
08-11-2021, 10:07
Szukam dodatku, który pozwoli mi na to, aby przycisk czytaj więcej w artykułach wstawiał się automatycznie np. po 100 znakach (coś podobnego ma wbudowane wordpress).
Dodatek może być płatny.

Znalazłem już taki temat na forum sprzed kilku lat gdzie polecano dodatek, ale link do niego już nie istnieje.

siristru
08-11-2021, 21:03
Załatwiam to funkcją:



<?php
defined( '_JEXEC' ) or die( 'Restricted index access' );

function limit_text($text, $chars = 25) {
$text = $text." ";
$text = substr($text,0,$chars);
$text = substr($text,0,strrpos($text,' '));
$text = $text."...";
return $text;
}
?>

Robię z tego plik truncate.php i umieszczam w katalogu zsablonu.

Potem dodaje do pliku widoku item np. kategorii artykułów (blog):


require_once('templates/<nazwa szablonu>/truncate.php');

I używam:


<?php
$wpis_text = strip_tags($this->item->introtext);
echo limit_text($wpis_text, 200);
?>

lukask10
08-11-2021, 23:30
Załatwiam to funkcją:



<?php
defined( '_JEXEC' ) or die( 'Restricted index access' );

function limit_text($text, $chars = 25) {
$text = $text." ";
$text = substr($text,0,$chars);
$text = substr($text,0,strrpos($text,' '));
$text = $text."...";
return $text;
}
?>

Robię z tego plik truncate.php i umieszczam w katalogu zsablonu.

Potem dodaje do pliku widoku item np. kategorii artykułów (blog):


require_once('templates/<nazwa szablonu>/truncate.php');



Ok to jest jasne, ale pisząc "używam" ten kod niżej. to gdzie go implementujesz? Na początku każdego artykułu w panelu joomla? To nie wchodziłoby u mnie w grę bo mam blisko tysiąc artykułów i chciałbym zbiorczo im to zadać truncate.



I używam:


<?php
$wpis_text = strip_tags($this->item->introtext);
echo limit_text($wpis_text, 200);
?>

siristru
08-11-2021, 23:58
Ok to jest jasne, ale pisząc "używam" ten kod niżej. to gdzie go implementujesz? Na początku każdego artykułu w panelu joomla? To nie wchodziłoby u mnie w grę bo mam blisko tysiąc artykułów i chciałbym zbiorczo im to zadać truncate.

Nie, dwa ostatnie kawałki kodu używam w pliku: ROOT/templates/<twojszablon>/html/com_content/category/blog_item.php

Pierwszy kawałek w nagłówku, inkluduję swój plik z funkcją.
Drugim zastępuje tam gdzie ładowana jest zmienna $this->item->introtext

I to zmienia wszystko, niczego nie robi się pojedynczo.

lukask10
18-05-2022, 15:32
Wszystko pięknie działa! :)

A jakich zmian należy dokonać w powyższym kodzie aby kontrolować tą funkcją długość tytułu artykułu na liście wszystkich artykułów w danej kategorii?

siristru
18-05-2022, 19:39
Ale widok listy czy bloga? :)

lukask10
18-05-2022, 20:07
Widok bloga

siristru
18-05-2022, 21:23
Wtedy należy nadpisać szablonem layouts. Kopiujesz ten plik:

ROOT/layouts/joomla/content/blog_style_default_item_title.php

Do:

ROOT/templates/<twoj-szablon>/html/layouts/joomla/content/

Edytujesz plik i na samym początku, tak jak uprzednio dodajesz:


require_once('templates/<nazwa szablonu>/truncate.php');

Tuż pod:


defined('_JEXEC') or die;

A potem:


<?php
echo limit_text($this->escape($displayData->title), 200);
?>

zamiast:


<?php echo $this->escape($displayData->title); ?>

lukask10
18-05-2022, 22:26
Działa pięknie, bardzo dziękuję!