Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: substr nie działa
Forum PHP.pl > Forum > PHP
AboutMe
Witam,

Chciałbym skrócić text zwracany przez bp_activity_content_body (funkcja Buddypress)

  1. echo substr( bp_activity_content_body(),0,10 )."...";


Niestety funkcja nadal ucina tekst dopiero po 300 znakach. Jak zrobić żeby wyświetlało tylko 10 znaków?
no_face
Tylko dlatego sie tak dzieje, gdyz funkcja ktora wywolujesz nie zwraca stringu. Funkcja, ktora wywolujesz jest tak skonstruowana, ze daje echo funkcji bp_get_activity_content_body() ktora to z kolei cos tam dalej robi.
AboutMe
A da się to jakoś obejść bez grzebania gdzieś głęboko w core?
no_face
Hmm, gdzies gleboko...

Jezeli potrzebujesz tego na stale i ogolnie ma to byc w przyszlosci nie ruszane itd. itd. chodz tutaj juz sie mieszaja templaty z php.

Skrabnij sobie substr w tej funkcji

  1. 1158 function bp_activity_content_body() {
  2. 1159 echo bp_get_activity_content_body();
  3. 1160 }


ktora znajduje sie w pliku: /bp-activity/bp-activity-template.php
Grzesie.k
A może po prostu odczytanie zwartości buforu?
  1. function funkcja(){
  2. bp_activity_content_body();
  3. return $r;
  4. }
  5. echo substr(funkcja(),0,10)."...";
AboutMe
Niestety poniższy kod nie działa sad.gif (wyświetla się pełny post):

  1. function funkcja(){
  2. bp_activity_content_body();
  3. $r=bbp_reply_content();
  4. return $r;
  5. }
  6. echo substr(funkcja(),0,10)."...";


Aktualnie chciałbym wyświetlić ostatnie 5 postów z bbPress.
Niktoś
A rzutowanie by nie pomogło?
  1. function funkcja(){
  2. bp_activity_content_body();
  3. $r=(string)bbp_reply_content();
  4. return $r;
  5. }
  6. echo substr(funkcja(),0,10)."...";
AboutMe
Dziwne, teraz mam taki błąd:

Cytat
Fatal error: Cannot redeclare funkcja() (previously declared in /home/wp-content/themes/szablon/bbpress/loop-mysingle-topic.php:8) in /home/wp-content/themes/szablon/bbpress/loop-mysingle-topic.php on line 13



Mój kod:

  1. function funkcja(){
  2. bbp_reply_content();
  3. $r=(string)bbp_reply_content();
  4. return $r;
  5. }
  6. echo substr(funkcja(),0,10)."...";


Samo bbp_reply_content() działa ale wyświetla cały post.
Niktoś
Ech..hmm.Spróbuj jeszcze tak:
  1. function funkcja(){
  2. bp_activity_content_body();
  3. $r=print_r(bbp_reply_content(),true);
  4. return $r;
  5. }
  6. echo substr(funkcja(),0,10)."...";
AboutMe
Niestety błąd jest taki sam.
!*!
Poszukaj pod frazą "truncate" w symfony 2 była dobra funkcja.
Niktoś
Właśnie doczytałem przeszkodą jest ob_start(), wewnątrz której nie można użyć funkcji print_r.
Może:
  1. function funkcja(){
  2. bbp_reply_content();
  3. $r=bbp_reply_content();
  4. $r2=print_r($r,true);
  5. return $r2;
  6. }
  7. echo substr(funkcja(),0,10)."...";
AboutMe
Ciągle ten sam błąd.
Niktoś
Przyznam ,że też kombinuje hehe:
  1. function funkcja(){
  2. bp_activity_content_body();
  3. return $r;
  4. }
  5. echo substr(print_r(funkcja(),true),0,10)."...";

Może ktoś mądrzejszy się wypowie.
AboutMe
To również nie działa. Trzeba będzie chyba to zrobić od drugiej strony - jquery.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.