[PHP] Als pagina het volgende woord bevat, doe dit..

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Dannydekr
  • Registratie: Januari 2005
  • Laatst online: 19-08 20:40
Voor mijn website gebruik ik Joomla maar heb een zelfgemaakt zeer gecostumisede template. Rechtsboven in vind je "Login | Registreer". Wanneer men inlogt, komt er in het menu een link bij "gebruikerspagina" maar de tekst "login" blijft gewoon staan, gezien het statische HTML tekst is.

Nu is mijn vraag of het met PHP mogelijk is om in te stellen dat die "Login" naar "Loguit" veranderd als er op de pagina de tekst "Gebruikerspagina" voorkomt. Of misschien is er een makkelijke methode om aan te geven dat de tekst anders moet als een gebruiker is ingelogd?

Dit is de website:
http://www.u-subjects.nl

Those who surrender freedom for security will not have, nor do they deserve, either one.


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 10-09 21:12

Matis

Rubber Rocket

PHP:
1
2
3
4
5
6
7
8
9
10
$user =& JFactory::getUser();

if($user->id)
{
    //do user logged in stuff
}
else
{
    //do user not logged in stuff
}


Op deze manier kun je checken of een gebruiker ingelogd is.

Zie ook de documentatie.

[ Voor 16% gewijzigd door Matis op 31-05-2010 19:35 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Accesteam
  • Registratie: Maart 2009
  • Laatst online: 15-08 07:53
Je kan in PHP met str_replace strings vervangen. Overigens is dit alles behalve netjes, maar ik weet verder niet hoe Joomla! dat (kan) afhandelen. Misschien is het een idee om is bij andere templates te spieken, hoe zij dit opgelost hebben? :)

[EDIT] Denk dat Matis zojuist de Joomla! vriendelijke manier heeft gegeven. Voor de rest gewoon zorgen dat die Login link niet statisch is, en wel dynamisch word gegenereerd.

[ Voor 24% gewijzigd door Accesteam op 31-05-2010 19:37 ]


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Grotere websites lossen dit probleem meestal op met SSI (server side includes) of ESI (edge side includes). Als je host dat ondersteund dan is dat waarschijnlijk je beste optie.

Bij www.fashiolista.com heb ik dat bijvoorbeeld ook gedaan, de hele pagina is volledig statisch gecached, maar de content specifiek voor de ingelogde gebruiker wordt door de reverse proxy erin geplakt.


Als je host dat niet kan dan moet je gaan werken met het cachen van losse blokken, werkt ook prima maar dan moet het geheel dus nog steeds langs je template parser.

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • dev10
  • Registratie: April 2005
  • Laatst online: 09-09 15:21
Daar kun je gewoon een check op doen. Iets als:

PHP:
1
2
3
4
5
6
7
<?php

if ($user->loggedIn()) {
 echo '<a href="gebruikerspagina.php">Profiel</a> | <a href="logout.php">Uitloggen</a>';
} else {
 echo '<a href="login.php">Login</a>' ;
}


Ik zou het niet letterlijk kopiëren, want ik heb geen flauw idee hoe Joomla werkt, maar zoiets moet het wel zijn.

edit:
Wat Matis zegt dus...
Grotere websites lossen dit probleem meestal op met SSI (server side includes) of ESI (edge side includes). Als je host dat ondersteund dan is dat waarschijnlijk je beste optie.
Kan ook wel, maar is hier niet echt van toepassing. De TS heeft het wat vreemd geformuleerd, maar hij bedoelt gewoon een link om in te loggen als er geen gebruiker is ingelogd en andere een link naar het profiel en een link om uit te loggen.

[ Voor 40% gewijzigd door dev10 op 31-05-2010 19:41 ]


Acties:
  • 0 Henk 'm!

  • Dannydekr
  • Registratie: Januari 2005
  • Laatst online: 19-08 20:40
Matis schreef op maandag 31 mei 2010 @ 19:34:
PHP:
1
2
3
4
5
6
7
8
9
10
$user =& JFactory::getUser();

if($user->id)
{
    //do user logged in stuff
}
else
{
    //do user not logged in stuff
}


Op deze manier kun je checken of een gebruiker ingelogd is.

Zie ook de documentatie.
precies wat ik zocht, problem solved _/-\o_

Those who surrender freedom for security will not have, nor do they deserve, either one.


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 10-09 21:12

Matis

Rubber Rocket

Dannydeman schreef op maandag 31 mei 2010 @ 19:42:
precies wat ik zocht, problem solved _/-\o_
Het is niet moeilijk [google=joomla check logged in] ;)

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 16:02
is het niet beter om $user->guest te gebruiken?
Dat is namelijk te property in joomla die speciaal staat aangemerkt om te kijken of een user is ingelogd.

Wel zo handig om die te gebruiken ivm met mogelijke wijzigingen in latere versies van joomla :)
Pagina: 1