Links für Gäste verbergen + Cache-Mod

Cachet rechenintensive Vorgänge bei der Darstellung von Beiträgen. Dadurch wird die Performance des phpBB stabilisiert und teilweise sogar erheblich verbessert.

Moderator: Supporter

Links für Gäste verbergen + Cache-Mod

Beitragvon J. Haberstroh » 21. Feb 2007 14:43

Hallo,

Ich habe im Forum eine Funktion, die Links für Gäste verbergen soll, bis sie sich eingeloggt haben.
Seiten werden auch gecached, wenn sie von Gästen aufgerufen werden. Im Cache bleibt dann die Seite mit dem verborgenen Link, bis man den Cache händisch wieder leert.

Das Snippet:
bb_code.php
Code: Alles auswählen
function guest_links($text)
{
   global $userdata, $lang;
   
   $ret = ' ' . $text;
   $ret = preg_replace("#(^|[\n ])([\w]+?://[^ \"\n\r\t<]*)#is", $lang['Guest_links'], $ret);
   $ret = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r<]*)#is", $lang['Guest_links'], $ret);
   $ret = preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", $lang['Guest_links'], $ret);

   return($ret);
}


viewtopic.php:
Code: Alles auswählen
$message = ( $userdata['session_logged_in'] ) ? make_clickable($message) : guest_links($message);


Ich hab das nach dem Einbau des Caches versuchsweise so umgeschrieben:
Code: Alles auswählen
(!$parsed || !$board_config['enable_post_cache']) ? $message = ( $userdata['session_logged_in'] ) ? make_clickable($message) : guest_links($message) : '';


Wie kann man dem Cache-Mod beibringen, dass die Links für eingeloggte User wieder sichtbar werden?

Bitte um Hilfe,

Schöne Grüße,
Jürgen
J. Haberstroh
 
Beiträge: 5
Registriert: 21. Feb 2007 14:36

Beitragvon AmigaLink » 21. Feb 2007 20:10

Was du da gemacht hast ist ganz nett. Bringt aber, wie du selber ja gemerkt hast, nichts.
Das liegt daran das gecachte Beiträge nicht mehr über die bbcode.php geparst werden (was der Sinn des MODs ist).

Was du machen könntest, ist die Zeile
Code: Alles auswählen
$message = ( $userdata['session_logged_in'] ) ? make_clickable($message) : guest_links($message);
hinter
Code: Alles auswählen
   } else {
      $parse_status = ($postrow[$i]['parsed']) ? $CPS_Indicator['off_but_cached'] : $CPS_Indicator['off'] ;
      $cps_img = ($postrow[$i]['parsed'] && $userdata['user_level'] == ADMIN) ? '<a href="modcp.'.$phpEx.'?'.POST_CPS_MANAGE_URL.'=delete&amp;'.POST_POST_URL.'='.$postrow[$i]['post_id'].'&amp;'.POST_TOPIC_URL.'='.$postrow[$i]['topic_id'].'&amp;sid='.$userdata['session_id'].'"><img src="'.$images['icon_cache_delete'].'" alt="'.$lang['CPS_delete'].'" title="'.$lang['CPS_delete'].'" border="0" /></a>' : '';
   }
// Cache Posts
verschieben.

Das Funktioniert aber auch nur bei links die ohne den URL BBCode gepostet werden!

Wenn bei dir auch die BBCode-links für Gäste verborgen werden dann gibt es nur die Möglichkeit, den Cache bei Beiträge in denen links vorkommen abzuschalten.
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

CP System + Links verbergen

Beitragvon J. Haberstroh » 22. Feb 2007 13:59

Hi Markus,

Danke für den Vorschlag - funktioniert leider nicht. Mit BB-Code hat die Modifikation auch vor dem CP-Mod nicht funktioniert, macht aber nichts. Ich hab jetzt mal den Mod ausgebaut und beobachte, ob der CP-Mod was bringt.

Schönen Tag,
Jürgen
J. Haberstroh
 
Beiträge: 5
Registriert: 21. Feb 2007 14:36

Beitragvon AmigaLink » 22. Feb 2007 15:06

Danke für den Vorschlag - funktioniert leider nicht.
Doch funktioniert. Ich habe nur vergessen zu erwähnen, das du den Cache nach der Änderung mal leeren musst. :roll:

Deine Frage ist mit zu Off Topic. Ich hab sie deswegen in http://www.amigalink.de/viewtopic.php?t=964 verschoben.
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon J. Haberstroh » 23. Feb 2007 13:34

Servus,

Funktioniert leider nicht - die Links bleiben für Gäste sichtbar, trotz Cache erneuern (für den Beitrag) oder Cache löschen (für den Beitrag)

Wenn man wie vorgeschlagen die Zeile an der neuen Stelle einfügt - bleibt die Zeile mit $message dennoch an der vom Mod vorgegebenen Position in dieser Form erhalten?
Code: Alles auswählen
(!$parsed || !$board_config['enable_post_cache']) ? $message = make_clickable($message) : '';


... oder muss der $message-Teil raus? Gäbe einen Fehler...

Grüße,
Jürgen
J. Haberstroh
 
Beiträge: 5
Registriert: 21. Feb 2007 14:36

Beitragvon AmigaLink » 23. Feb 2007 15:30

Die Zeile die du jetzt gepostet hast, muss komplett weg.
Und diese Zeile
Code: Alles auswählen
$message = ( $userdata['session_logged_in'] ) ? make_clickable($message) : guest_links($message);
muss nach
Code: Alles auswählen
    } else { 
       $parse_status = ($postrow[$i]['parsed']) ? $CPS_Indicator['off_but_cached'] : $CPS_Indicator['off'] ; 
       $cps_img = ($postrow[$i]['parsed'] && $userdata['user_level'] == ADMIN) ? '<a href="modcp.'.$phpEx.'?'.POST_CPS_MANAGE_URL.'=delete&amp;'.POST_POST_URL.'='.$postrow[$i]['post_id'].'&amp;'.POST_TOPIC_URL.'='.$postrow[$i]['topic_id'].'&amp;sid='.$userdata['session_id'].'"><img src="'.$images['icon_cache_delete'].'" alt="'.$lang['CPS_delete'].'" title="'.$lang['CPS_delete'].'" border="0" /></a>' : ''; 
    } 
// Cache Posts
eingefügt werden.

Wenn du das gemacht hast, musst du noch den Cache löschen und alles wird gut. :mrgreen:
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon BIG Mule » 6. Mai 2007 11:19

Wenn ich das richtig verstanden habe muss ja diese Zusammenfassung in Ordnung sein.

Cache Posts System Hide Links ADDON

Code: Alles auswählen
#
#-----[ ÖFFNE ]-----
#

includes/bbcode.php

#
#-----[ FINDE ]-----
#

?>

#
#-----[ SETZE VORHER EIN ]-----
#

function guest_links($text) 

   global $userdata, $lang; 
     
   $ret = ' ' . $text; 
   $ret = preg_replace("#(^|[\n ])([\w]+?://[^ \"\n\r\t<]*)#is", $lang['Guest_links'], $ret); 
   $ret = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r<]*)#is", $lang['Guest_links'], $ret); 
   $ret = preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", $lang['Guest_links'], $ret); 

   return($ret); 
}

#
#-----[ ÖFFNE ]-----
#

viewtopic.php

#
#-----[ FINDE UND LÖSCHE ]-----
#

   (!$parsed || !$board_config['enable_post_cache']) ? $message = make_clickable($message) : ''; // Cache Posts

#
#-----[ FINDE ]-----
#

   } else {
      $parse_status = ($postrow[$i]['parsed']) ? $CPS_Indicator['off_but_cached'] : $CPS_Indicator['off'] ;
      $cps_img = ($postrow[$i]['parsed'] && $userdata['user_level'] == ADMIN) ? '<a href="modcp.'.$phpEx.'?'.POST_CPS_MANAGE_URL.'=delete&amp;'.POST_POST_URL.'='.$postrow[$i]['post_id'].'&amp;'.POST_TOPIC_URL.'='.$postrow[$i]['topic_id'].'&amp;sid='.$userdata['session_id'].'"><img src="'.$images['icon_cache_delete'].'" alt="'.$lang['CPS_delete'].'" title="'.$lang['CPS_delete'].'" border="0" /></a>' : '';
   }
// Cache Posts

#
#-----[ SETZE NACHHER EIN ]-----
#

                    $message = ( $userdata['session_logged_in'] ) ? make_clickable($message) : guest_links($message);

#
#-----[ ALLE ORDNER SPEICHERN UND SCHLIESSEN ]-----
#
# EoM
BIG Mule
 
Beiträge: 12
Registriert: 6. Mai 2007 11:09

Beitragvon AmigaLink » 6. Mai 2007 12:03

Der Teil für die viewtopic.php ist auf jeden Fall so richtig. :)
Der bbcode.php teil kommt wohl von dem MOD der die links für Gäste verbergen soll und sieht IMHO auch ok aus.

Das ganze Funktioniert aber, wie gesagt, nur bei links die ohne BBCode gepostet wurden. Sobald ein link mit [url][/url] oder [url=][/url] gesetzt wird, hat dieses Snippet keine Wirkung mehr!
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon BIG Mule » 6. Mai 2007 12:16

Code: Alles auswählen
#################################################################
## Mod Title: Hide Links
## Mod Author: Nome < nome@bk.ru > ICQ #162783614
## Mod Version: 3.0.0
## Mod Description: This mod will prevent links from being shown
##           to unregistered users. Instead they'll be
##          advised to register or login. Registered users
##          may also be not shown links if they don't have
##          a proper amount of posts set by the forum admin.
## Mod Features:
##      - hide http links and email from unregistered users
##      - hide http links and email from users which do not
##        have the proper amount of posts
##      - hide http links and email from moderators of other
##        forums (on/off switch in admin panel)
##
## Installation Level: Easy
## Installation Time: 5 Minutes
##
## Files To Edit: 6
##   admin/admin_board.php
##   includes/bbcode.php
##   language/lang_english/lang_admin.php
##   language/lang_english/lang_main.php
##   templates/subSilver/bbcode.tpl
##   templates/subSilver/admin/board_config_body.tpl
##
#################################################################
## Author's notes:
##   Code has been mostly rewritten, so you'll have to reinstall
##   the mode.
#################################################################


Hmm, dann ist das hier wohl ein anderes MOD. Ich habe Probleme mit Hide Links 3.0.0. Schalte ich das Cache System ein, können die User obwohl sie registriert sind die links nicht sehen. Könntest du bitte mal kurz nachsehen, ob da was machbar wäre, damit es funktioniert. Danke.

http://www.phpbbhacks.com/download/4543
BIG Mule
 
Beiträge: 12
Registriert: 6. Mai 2007 11:09

Beitragvon AmigaLink » 6. Mai 2007 13:19

Schalte ich das Cache System ein, können die User obwohl sie registriert sind die links nicht sehen.
Das kommt daher das der Cache erstellt wurde als ein User den Beitrag angesehen hat, der den link nicht sehen durfte!

Hmm, dann ist das hier wohl ein anderes MOD. Ich habe Probleme mit Hide Links 3.0.0.
Jupp - Bei dem MOD muss man mit etwas härteren Bandagen vorgehen: http://www.amigalink.de/viewtopic.php?t=1103
(Nach dem einbau, Cache löschen!)
Links ohne BBCode werden nun, wie bei dem MOD von J. Haberstroh, nach dem Cachen geparst und Beiträge in denen der URL-BBCode benutzt wird, werden nicht mehr gecached.
Das mindert natürlich die Wirkung des CPS ein wenig!
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Nächste

Zurück zu Cache Post System



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste

cron