Posted by tracer76 on January 6, 2009 at 2:43pm
Har försökt och få user login till secondary links.
Hittade lite kod som jag la in i page.tpl.php
<div id="login">
<?php global $user; ?>
<?php if ($user->uid) : ?>
Inloggad som: <?php print l($user->name,'user/'.$user->uid); ?> |
<?php print l("Logga ut","logout"); ?>
<?php else : ?>
<form action="/<www.i-cc.se>/?q=user&<?php print drupal_get_destination() ?>" method="post" id="user-login-form">
<input type="hidden" name="form_id" id="edit-user-login" value="user_login" />
<div align="right">
Användarnamn: <input style="width:85px; height:15px" type="name"; "text" maxlength="30" name="name" id="edit-name" size="15" tabindex="1" align="bottom"/>
Lösenord: <input style="width:85px; height:15px" type="password" name="pass" id="edit-pass" size="15" tabindex="2" align="bottom"/>
<input type="image" src="/files/logga_in.gif" name="op" id="edit-submit" value="Log in" tabindex="3" class="form-submit" align="middle" />
<a href="?q=user/register" title="Registrera dig på Turbomeck.se">Registrera</a>
<a href="?q=user/password" title="Glömt lösenordet ?"> Glömt? </a>
</div>
</form>
<?php endif; ?>
</div>och det funkar någorlunda bra, nu kan jag bara inte lägga till vanliga secondary länkar där de ska va via Meny add.
Har jag lagt koden på fel ställe ? eller finns det annat sätt man kan göra det på som att lägga koden i ett block och sen
på något sätt greja det i secondary links ?
www.i-cc.se

Comments
Det finns ett enklare sätt
1: Gå till admin, menus, secondary links.
2: Välj "Add item".
3: I path-fältet skriver du "user" (som leder till en loginsida för den som inte är inloggad)
4: I "Menu link title" skriver du lämpligtvis "Logga in" eller så.
5: Spara.
Klart!
Om ditt tema inte har en egen region för Secondary Links kommer du att behöva lägga blocket för Secondary Links någonstans. Du hittar det under admin, building, blocks.
(Begreppet "Secondary Links" kan vara lite förvirrande, men en kort förklaring finns här.)
//Johan Falk, Solna
nästa så jag ville ha det
Hej Johan.
Nästan så jag ville ha det, men det jag gjorde istället va att jag la in koden i ett block och att det ska visas i "sidhuvud"
då funkar det perfekt också om man lägger in secondary links.
Kolla in www.i-cc.se för hur jag ville had det.
Men tack för hjälpen, det var ett bra sätt att lägga in det på med.
Horisontell meny
Aha. Då förstår jag bättre vad du vill åstadkomma.
Om du vill lösa det "the Drupal way" tror jag att metoden är som följer:
* Hitta .tpl-filen för user login. (Finns förmodligen under modules/user.)
* Kopiera den till din tema-katalog.
* Ändra så mycket du vill i den - förhoppningsvis räcker det med att ändra runt i färdiga element. (I värsta fall får du modifiera några av temafunktionerna som används för att byta ordning på grejor.)
* Flytta blocket till en lämplig region på sajten genom admin/build/blocks. Om ditt tema saknar lämplig region går det att lägga till såna, men det blir en egen liten guide i så fall. (Vad jag sett på annat håll verkar det inte vara särdeles svårt.)
Hej!
//Johan Falk, Solna
edit
Efter att ha kollat lite närmare i källfilerna får jag istället föreslå följande tillvägagångssätt:
* Det finns ingen egen tpl-fil för login-blocket. Istället får du skapa en själv, vilket du lättast gör genom att kopiera ditt temas block.tpl.php till block-user-0.tpl.php. Den tpl-filen kommer endast att anropas för just login-blocket, vilket ju är praktiskt.
* Funktionerna som styr innehållet i blocket ligger i user_login_block() i modules/user/user.module. Det är dock inte där du vill ändra, och det är förmodligen inte ens den funktionen du vill mecka i.
* Istället vill du mecka med funktionen som gör variablerna i user_login_block() till ett formulär. Jag tror att den funktionen är theme_form_element i includes/form.inc.
* För att få den att göra som du vill får du (1) kopiera den till template.php i ditt tema, (2) byta namn på funktionen till _form_element, (3) sätta upp lämpliga villkor så att inga formulär utom det aktuella loginformuläret ändras, samt (4) mecka runt med funktionen så att du slipper radbrytningar.
Efter det borde det bara vara att lägga in blocket i lämplig region på sajten. :-)
Det låter förmodligen rätt krångligt att göra på detta vis istället för att använda din egen kod ovan, men jag tror att det ändå är att föredra. Om du använder Drupals egna formulär får du nämligen massa säkerhetskontroller (och andra verifieringar) på köpet. Till exempel.
Hej igen!
krångligt
Hehe vet inte om jag fixar det här, jag är inte så haj på php ännu. Det är mest att man testar sig fram hela tiden (klippa o klistra).
Förstår allt hur jag ska göra fram till att jag ska sätta upp lämpliga villkor och mecka runt med php koden :)
Haha, jag hittade det!
Som så ofta annars finns det ett enklare sätt: Bara flytta login-blocket till header-regionen, så har du 90 % av vad du vill göra löst.
Om du verkligen vill ha loginfälten på samma plats som på i-cc.se får du nog ta och lägga till en ny region. Jag letade lite efter en screencast jag sett om det (från Drupal School, från The Art Lab), men jag hittade den inte.
Det är i alla fall regions man ska mecka med.
Om det inte löser sig rekommenderar jag en ny fråga för att få svar på hur man skapar nya regioner i sitt tema.
Lycka till!
//Johan Falk, Solna
Regioner, igen
Jag letade lite till efter screencasten om regioner, och hittade den till slut.
Av någon anledning ligger den inte ute bland de andra Drupal School-klippen på blip.tv, utan man får kolla på annat håll.
En kort och tydlig video.
Screencasten gäller för Drupal 5, men jag utgår från att det fungerar på samma sätt för sexan.
//Johan Falk, Solna
Tack !!
Tack Johan.
Det var en stor hjälp. Ser att du är ganska aktiv här på group/sweden mest av alla tror jag heheh..
Tack än en gång.
Kommer mer frågor sen :)