Csoportok neve más színnel

darin57 képe

Szia Mindenki!

Egy egyszerű, ám számomra mégis bonyolult kérdésben kérem a segítségeteket.
A weboldalalom mindössze 2 csoport létezik. Nők és férfiak. Azt szeretném, ha a felhasználói nevük mindenhol: a férfiaké kék színű, míg a nőké piros lenne.
Egy korábbi részben találtam egy javaslatot egy kóddal, amit a sminkek fájl könyvtárába kellett másolni. Megtettem, de az eredmény az lett, hogy a weblap fejrészén egy kódolt fekete szöveg jelent meg. Nyilvánvalóan elszúrtam valamit. De mit?
A kód a következő volt:

function theme_username($object) {

if ($object->uid && $object->name) {
// Shorten the name when it is too long or it will break many tables.
if (drupal_strlen($object->name) > 20) {
$name = drupal_substr($object->name, 0, 15) .'...';
}
else {
$name = $object->name;
}

if (user_access('access user profiles')) {
$output = l($name, 'user/'. $object->uid, array('title' => t('View user profile.')));
}
else {
$output = check_plain($name);
}
}
else if ($object->name) {
// Sometimes modules display content composed by people who are
// not registered members of the site (e.g. mailing list or news
// aggregator modules). This clause enables modules to display
// the true author of the content.
if ($object->homepage) {
$output = l($object->name, $object->homepage);
}
else {
$output = check_plain($object->name);
}

$output .= ' ('. t('not verified') .')';
}
else {
$output = variable_get('anonymous', t('Anonymous'));
}

return $output;

Tud valaki segíteni, hogy hogyan csináljam? Jó ez a kód egyáltalán nekem?
Előre is köszönöm
Adrienn

Fórum: 
Sweetchuck képe

Szia!

De a kód nem tartalmazza a kívánt funkcionalitást.

Látszik, hogy előbb mindig megpróbálod magad megoldani a problémát.
Rendkívül dicséretes! :-)

Most nincs időm megcsinálni.

$gender = '';
$role_id_male = n;
$role_id_female = x;
...
if ($object->uid) {
if (array_key_exists(n, $object->roles)) {
$gender = 'male';
}
else if (array_key_exists(x, $object->roles)) {
$gender = 'female';
}
}

$attributes = array('title' => t('View user profile.') );

if ($gender) {
$attributes['class'] = $gender;
}

...
$output = l($name, 'user/'. $object->uid, $attributes);

a homepage-es résznél is

Majd holnap este összerakom, ha addig senki.

Addig keresd ki a felhasználói csoportok azonosítóit.

/admin/user/roles útvonalon "jogosultságok szerkesztése" linkekre klikkelve. (vagy csak fölé tartod az egeret)

0
0
darin57 képe

Adrienn

Addig is köszönöm. Kikersem, de ez egy társkereső oldal és naponta több új regisztráló van. Itt több ezer névvel kell majd számolni, mindhez nem tudom a kódot, jelenleg 81 felhasználó van. Tényleg mindenkié kell? Valami más megoldás fog ide kelleni.Nem?

0
0

Adrienn

darin57 képe

Adrienn
Felhasználói csoport kettő van..viszont több oldalon jelenik meg..na átnézem mit is kérsz igazából.
Megtaláltam.

Tehát férfi admin/user/roles/acces/16

nő admin/user/roles/acces/15 a jogosultságok szerkesztésénél.

Nagyon jó lesz holnap este is, én már napok óta nyúzom mindhiába egyedül, egy-két nap igazán nem számít, lényeg az eredmény.
Köszönöm!

0
0

Adrienn

Sweetchuck képe

Az elmúlt hetekben több fórum téma is született a felhasználói profilokkal kapcsolatban. Érdemes lenne azokat átolvasnod.
Jelen topikod alapján, nem értem hogy egy felhasználó hogyan tudja megadni magárol hogy melyik nemhez tartozik.
-----

A kérdésed megoldásához a felhasználói nevek megjelenítését végző smink függvényt kell módosítani.
theme_username()
A kód amit küldök az kizárólag csak a te egyedi esetedre fog müködni!
A web helyeden használt sminknek a könyvtárában van egy olyan fájl hogy: template.php
A végéhez hozzá kell adni ezt:

function garland_username($object) {
  if ($object->uid && $object->name) {		
		// Shorten the name when it is too long or it will break many tables.
    if (drupal_strlen($object->name) > 20) {
      $name = drupal_substr($object->name, 0, 15) .'...';
    }
    else {
      $name = $object->name;
    }
 
    if (user_access('access user profiles')) {
			//A roles tömb akkor is létezik ha nem betöltött USER objebjektumról van szó, de akkor csak 1 csoportot tartalmaz.
			//A roles tömb nem létezik NODE object esetén.
			//$object = user_load($object);
			if ( !array_key_exists('roles', $object) OR count($object->roles) < 2)
			{
				$object->roles = array(DRUPAL_AUTHENTICATED_RID => 'authenticated user');			
				$result = db_query('SELECT r.rid, r.name FROM {role} r INNER JOIN {users_roles} ur ON ur.rid = r.rid WHERE ur.uid = %d', $object->uid);
				while ($role = db_fetch_object($result)) {
					$object->roles[$role->rid] = $role->name;
				}
			}
			$role_id_male = 16;
			$role_id_female = 15;
			$attributes = array('title' => t('View user profile.'));
 
			if ( array_key_exists($role_id_male, $object->roles) ) 	{
				$attributes['class'] = 'male';
			}
			else if ( array_key_exists($role_id_female, $object->roles) ) {
				$attributes['class'] = 'female';
			}
      $output = l($name, 'user/'. $object->uid, $attributes);
    }
    else {
      $output = check_plain($name);
    }
  }
  else if ($object->name) {
    // Sometimes modules display content composed by people who are
    // not registered members of the site (e.g. mailing list or news
    // aggregator modules). This clause enables modules to display
    // the true author of the content.
    if (!empty($object->homepage)) {
      $output = l($object->name, $object->homepage, array('rel' => 'nofollow'));
    }
    else {
      $output = check_plain($object->name);
    }
 
    $output .= ' ('. t('not verified') .')';
  }
  else {
    $output = variable_get('anonymous', t('Anonymous'));
  }
 
  return $output;
}

Egy kicsit változtatni kell rajta. Ez első sora jelenleg így néz ki:
 function garland_username($object) {
A garlad helyére a te sminked nevét kell írni. Tehát:
 function atesminkedneve_username($object) {

---
 function phptemplate_username($object){
jobb megoldás, ha phptemplate-t használunk, mert így kényelmesebb lesz az életünk, ha átnevezzük a sminket, vagy alsminket alakítunk ki.

pp
---

(Ha már volt ilyen függvény akkor bukik az egész.)

Szintén a sminked könyvtárában van egy olyan fájl hogy: style.css
Annak a végére pedig add hozzá ezt:

a:link.female {
	background-color: pink;
}
a:link.male {
	background-color: #c0e0f4;
}

Ez csak példa a dizájnra. Izlés szerint lehet rajta változtatni.
(Böngésző gyorstárazás megviccelhet)

Remélem jó lesz.

0
0
darin57 képe

Adrienn

Onnét lehet tudni regisztráláskor, hogy férfi, vagy nő-e az illető, hogy eleve be kell pipálnia és máris ott van az adatlapján ez az információ is. A profilmezőt több adatra bővítettem választólistákkal is. Regisztráláskor ezekre válaszolni kell.
Aki elfelejti, annak én jelölöm be, így eleve 1-1 csoportban van mindenki. Vagy férfi, vagy nő.
Nagyon kedves vagy, hogy amit igértél, azt időre meg is csináltad.
Gratulálok Neked, mint embernek és mint szakembernek is.
Köszönöm.

0
0

Adrienn

Sweetchuck képe

Gratulálok Neked, mint embernek és mint szakembernek is.

Gyanítom, hogy ezért még nem fogom megkapni az informatikai Nobel-díjat.

0
0
darin57 képe

Nekem bluemarine a sminkem és egyszerűen nincs lehetőség a könyvtárba másolni a kódot.
A gralandnak van, viszont én már remekül beállítottam mindent a bluemarine sminkhez, ami a többihez nekem nem tetszik.
Így jártam, keresem tovább a megoldást..

http://tars.myip.hu

Adrienn

0
0

Adrienn

pp képe

Nem értem mi nem megy ;)

1. fogsz egy olyan szerkesztőt, ami tud utf-8 kódolást(ezen már ugye túl vagy, tehát van egy pspad editorod, vagy valami hasonló)
2. létrehozol benne egy új fájlt
3. belemásolod Sweetchack által készített kódot
4. a függvény nevében "garland_usr.." a garland szót lecseréled bluemarine szóra. (kismókusok phptemplate szóra is lecserélhetik így a kódrész bármelyik sminkel fog működni(pláne alsminkeknél ;)), legalábbis ott, ahol nincs már ilyen függvény eleve a phptemplat-ben.)
5. elmented a smink könyvtárába (phptemplate) template.php néven.
5a. örül
5b. nem megy, akkor hibaüzenet idemásolásával együtt kérdez.

pp

0
0
darin57 képe

Megcsináltam, bemásoltam, átjavítottam bluemarine-ra, mentettem php.template és ugyanaz történt,
a fejrészen megjelent egy többsoros feke, kódolt szöveg..., valami nem jó..
Azért köszönöm..:((
Adrienn

0
0

Adrienn

pp képe

Vagy csak megosztottad velünk bánatodat?

Mi lenne, ha a rébuszok helyett, idemásolnád azt a többsoros fekete kódolt szöveget??

Persze ha csak sopánkodni akarsz és a megoldás nem érdekel, akkor ne másold ide.

pp

0
0
darin57 képe

Ide fogom másolni, de jelneleg nem akarom kitenni a "karbantartás miatt zárva" szöveget. Az a baj, hogy ha le akarom másolni, ott virít a fejlécen az a fekete kód, ami elég ciki. Éjjel lemásolom.. Template.php néven mentettem... Nem siránkozom, gondolkodom és majd másolok. Jól jöhet ez még más kezdőknek is..
Adrienn

0
0

Adrienn

thamas képe

mentettem php.template

template.php néven mentsd! (Ugye pp??)

Üdvözlettel:
Hajas Tamás

0
0

Üdvözlettel:
Hajas Tamás

pp képe

Köszi!

0
0
Sweetchuck képe

A táv gyógyítás nem az erőségem, de egyszer mindent el kell kezdeni :)
A bluemarine sminknek alap esetben nincsen template.php fájlja(de szép magyar szó), PP útmutatása alapján létrehoztad és bemásoltad a kódot amit küldtem.
Programozói körökben az az általános nézet, hogy minden PHP fájl szereti a <?php nyitó tagot.
Ezt elfelejtettük neked is elmondani.
Tehát a template.php tartalma (kis mókus módra) így kezdődjön:

function phptemplate_username($object) {
0
0
pp képe

Erre nem is gondoltam!

Te meg használd a php nyitó és záró tag-et ne a code-ot! És akkor ilyen hiba nem lesz, és még színezi is a kódot a Drupal.hu!

pp
(a másik hozzászólásodat is kijavtom.)

0
0
Sweetchuck képe

Valóban sokkal szebb és érthetőbb, de van egy kis bibi.
Egy laikus számára sokkal részletesebben kellett volna megadni hogy mit csináljon a kóddal.

Ha van template.php akkor ez a kód:
function phptemplate_username()
ha nincsen akkor:
létre kell hozni és ez a kód
<?php function phptemplate_username()

A drupal.hu highlighter-e megjeleníti a nyitó tagot is, ez megnehezíti, hogy minden esetben pontos színezett kódot lehessen küldeni.

De ez már csak szőrszál hasogatás. :)
Kár ezen meditálni amíg Adrienn nem jelez vissza.

0
0
pp képe

A PHP záró tag (?>) a template.php végéről pl. elhagyható. Javaslom bevezetni a PZT megjegyzést a kódok után, hogy tudja a júzer, hogy az ott egy pukkasztott záró tag, amit jobb, ha nem rak be haszonbank tiketre.

Egyébként, ha a júzer beírja a google-ba, hogy "cannot modify header information" majd a bűvös "drupal template" szavakat akkor megkapja a választ a kérdésére, igaz angolul:

http://drupal.org/node/67122

Azonban ha a hibaüzenet után a "template.php" bűvszót írja be, akkor megkapja a sorstársai oldalait ;))

...azt hiszem pihennem kéne egy kicsit...

pp

0
0
darin57 képe

Bemásolás után az eredmény:
http://tars.myip.hu/bluemarine_error.JPG

Szóval nem jött össze.
Adrienn

0
0

Adrienn

pp képe

Ugye nem a jegyzettömbbel készítetted el a fájlt? (az ugyanis belerakja a BOM-ot a fájl elejére)

Ami a hiba, hogy a nyitó <?php előtt van valami. Szóköz, vagy enter, vagy a BOM.
A szóközt és az entert észre fogod venni, a BOM-ot sajnos nem, mert azt nem fogja neked megmutatni egy szövegszerkesztő sem. Ezért javasoltam használj pspad editort, amibe copypaste-el bemásolod a kódot, és nem megnyitod a fájlt és elmented, mert akkor a BOM simán ott maradhat. Persze, ha megtalálod a beállítást ami azt mondja, hogy a BOM-ot semmi esetre se mentse bele a fájlba még akkor se, ha volt benne, akkor nyugodtan csináld ezt.

Javaslom még, hogy a záró ?> tag-et is hanyagold el.

pp

0
0
Antal Adrienn képe

Notepad++ editort használok...Be kellett jelölni az UTF-8 kódolást (BOM nélkül). Köszönöm a tippet. Most már működik szépen.
Adrienn

ui: kicsit zavaros napjaim voltak, elfelejtettem a jelszavamat, új belépést csináltam, a darin57 én vagyok, de már csak voltam.

0
0

Adrienn

Sweetchuck képe

Szerintem van még egy pici szépség hiba.

A böngészők szerint a kattintható linkeknek 4 különböző állapota lehet. A bluemarine smink meg is mondja hogy ezek az állapotok milyen színnel legyenek jelölve, de te ezek közül csak egyet definiáltál felül.
a:link.male{...}

http://htmlinfo.polyhistor.hu/css_new/css2.htm
http://www.w3schools.com/css/pr_pseudo_hover.asp

a:link {color: #FF0000} /* unvisited link */
a:visited {color: #00FF00} /* visited link */
a:hover {color: #FF00FF} /* mouse over link */
a:active {color: #0000FF} /* selected link */

0
0
Antal Adrienn képe

Igen. Igazad van és nagyon köszönöm, mert ezt sem tudtam és persze még sok mást sem tudok. De majd fogok!
Valószínűleg a gyorstár az ami meg is viccelt, mert egyszer piros a nevem, máskor kék..most éppen kék.
Megcsinálom amit javasoltál, hamarosan.
Köszi!
Adrienn

0
0

Adrienn

Antal Adrienn képe

Az eredeti kód
a:link.female {
background-color: pink;
}
a:link.male {
background-color: #c0e0f4;
}

Amit Te írtál azt a femele{.....helyén kezdjem? Kihagyva belőle a többit?
Már majdnem nagyon örültem, hogy végre jó, de lassan kikékül az egész pirosam....

Adrienn

0
0

Adrienn

Sweetchuck képe

Nagyon sok mindent kéne nagyon részletesen elmagyarázni, hogy megértsed, de megpróbálom röviden.

Mint már említettem a hivatkozásoknak 4 állapota van, és minden állapotot különböző módon lehet megjeleníteni (külön Dizájn mindegyikhez). Ha a webhely nem rendelkezik a hivatkozások sminkelését illetően, akkor a böngésző alapértelmezése fog érvényesülni. Ami jellemzően a kék betűk aláhúzva.
Tehát a 4 állapot:

:link
Minden hivatkozás ebben az állapotban kezdi pályafutását. A hivatkozás egy olyan oldalra vezet amit a felhasználó (más néven a webhely látogatója) még nem látott. Nem kell félni a böngészőknek (még) nincsenek telepatikus képességeik, hogy kiolvassák a tudást a monitor előtt ülők fejéből. Egyszerűen csak az előzmények-ből tudják
:visited
A link mögött egy olyan oldal van, amit már látott a felhasználó. Ezt viszont már tényleg az ember agyából olvassák ki a böngészők
:hover
Ebbe az állapotba egy link akkor kerül, amikor a felhasználó az egér kurzort a link fölé helyezi. Persze a gombok nyomkodása nélkül. Az egér kurzor távoztával a link visszakerül vagy a :link vagy a :visited állapotba.
:active
Ez egy tiszavirág életű állapot, ugyanis csak az egér kattintás idejére jön létre.

Ha megnézed a bluemarine smink stíluslapjának(style.css) a linkekre vonatkozó részét.
Akkor ezt fogod látni:

a:link, a:visited {
  color: #027AC6;
  text-decoration: none;
}
 
a:hover {
  color: #0062A0;
  text-decoration: underline;
}
 
a:active, a.active {
  color: #5895be;
}

Rögtön az első sor, és az utána következő kapcsos zárójelek közötti rész azt mondja a böngészőnek hogy:

A nem látogatott linkek ÉS a már látogatott linkek is így nézzenek ki (tehát legyenek az alábbi módon egyformák){
  A betűk színe legyen : #027AC6;
  És a szöveg ne legyen kidekorálva semmiféle módon, még aláhúzással se;
}

Mikor te hozzá adtad ezt a stíluslaphoz
a:link.female {
  background-color: pink;
} 

Akkor az a böngésző számára azt jelenti hogy a nem látogatott linkek egy külön csoportját(female) rózsaszín háttérrel jelenítse meg.

A te problémád itt kezdődik.
Nincsen utasítva a böngésző, hogy a female csoportba tartozó és már látogatott linkekkel mit csináljon. Ezért a böngésző úgy kezeli őket mint az összes többi már látogatott linket. Ezekről a bluemarine smink már rendelkezett, lásd fentebb.
Tehát nálad egy női név csak addig piros amíg nincsen meglátogatva, utána felveszi a bluemarine smink látogatott linkekre vonatkozó stílusát – ami szürkéskék.

de lassan kikékül az egész pirosam....

Megoldások
a.)Szólsz a webhely látogatóinak, hogy gyakran ürítsék az előzményeket.

b.)Meg kell adni azt hogy hogyan nézzenek ki a male és a female csoportba tartozó még nem látott linkek.

Egyformán

a:link.female, a:visited.female {
  background-color: pink;
} 

Különbözően

a:link.female {
  background-color: pink;
} 
a:visited.female {
  background-color: red;
} 
0
0
Antal Adrienn képe

Köszönöm szépen, már megoldva!
Nőknél a nem látogatott piros, a látogatott kb rózsaszín, férfiaknál nem látogatott kék, látogatott olajkék.
Mehetek a többi problémámra és lassan-lassan kialakul minden.
Adrienn

0
0

Adrienn

Antal Adrienn képe

Sziasztok!
Drupal 5-ről 6-osra változtattam a sminket, azóta a fenti megoldás nem működik.
Mit kell változtatni Drupal 6-on, hogy működjön?
Előre is köszönöm a választ.

0
0

Adrienn

aboros képe

mi nem működik?
van valami hibaüzenet?
mi történik?
meg tudjuk nézni valahol?

ennek elvileg hatoson is ugyanúgy kell működnie.

0
0

-
clear: both;

nevergone képe

Kérlek indíts új témát, verziót változtattál, attól tartok hogy a sminkben is komolyabb változtatás kell.

0
0
ordi képe

Sziasztok

Én is társkeresőt csinálgatok, nekem cck-val van megadva hogy egy tag férfi-e vagy nő. ezt bio modullal a reglapra varázsoltam és viewsal listázom őket...
lehetséges az hogy nekem is pl. piros színnel jelenjenek meg a női felhasználóim neve illetve pl. kékkel a férfiaké az oldalon?
clubdj smiket alakítottam át...
ha kell hozzá, akkor az oldal --> http://szerelemszarnyan.hu (vagy com... :))
szóljatok rám ha nagyon hülyeségeket kérdezek... :)))

ja ami itt elhangzott azt próbálgatom, de nekem sehogy se jön össze. bár én még nagyon kiscsikó vagyok a php-ben de igyekszem átlátni de ez nekem még magas...
ha valaki tud kérem segítsen:)

köszönöm szépen!
Ördi

0
0
Antal Adrienn képe

Szia ordi!
Nem tudom, hogy hányas drupalt használsz. 5-ösnél nekem hibátlanul működött. Egyszerűen a fenti útmutatást csináld végig 5-ösnél biztosan jó.

0
0

Adrienn