Adatbázis elérése PhPTemplate fileból

taltos képe

Sziasztok!

A kérdésem az lenne, hogy hogyan lehet elérni az adatbázisból 1 táblából egy bizonyos mező értékét? Elmondom miről van szó.

Szóval a lényeg az lenne, hogy azt akarom megcsinálni, hogy a felhasználóknak felvennék 2 kötelezően kitöltendő mezőt. Az egyik a saját név, a másik pedig a honlapjuk. Úgy akarom ezt beleágyazni egy page-story.tpl.php -ba, hogy a story szerzőjének igazi nevét iratnám ki (tehát nem a login nevét), amihez linkelném a weboldalát (tehát hogy rákattintva ne a drupal belső oldala jöjjön be).

Erre milyen lehetőségem van? Sajnos PHP-hez csak nagyon keveset értek (az alap if + print ami megy, pont a PhPTemplate miatt), de felhasználtam egy másik kódból egy helyen ezt:
<?php print format_date($node->created, 'custom', "Y, F j") ?>

Ez közvetlenül nyúl valahogy valamihez, nem? Esetleg egy függvényt kellene írni a templete.php-ba? Ebben esetleg tudna segíteni valaki? :) Ha látnám a jó kódot, talán később már saját magamnak is ki tudnám kombinálni, ha hasonló problémával kerülök össze.

Bárhogy is alakuljon, ez a PHP kód mindenképpen érdekelne, mert úgy érzem jól jönne, ha ezzel tisztába lennék. Előre is köszönöm a segítséget! :)

Fórum: 
crt képe

Szia.

Ha a profile modullal csinálod és hozzáadsz egy "honlap" nevű mezőt, akkor a tartalmát a node.tpl.php-ban kb. így tudod megjeleníteni:

global $user;
profile_load_profile($user);
print $node->profile_honlap;



Üdv: Zoli
0
0
taltos képe

Köszi a választ!

Igen, azzal csináltam, de valamiért nem jó. Most csak beszúrtam a kódba így (az id-ket és a classokat átírtam, csak azért csináltam, hogy könyebben áttekinthető legyen) :

<div id="mindegy">
  <?php if ($page != 0): ?>
    <?php if ($title): ?>
      <h1 class="mindegy"><?php print $title ?></h1>
    <?php endif; ?>
  <?php endif; ?>
 
  <?php if ($page == 0): ?>
    <h2><a href="#" title="mindegy"><?php print $title ?></a></h2>
  <?php endif; ?>
 
  <div class="content">
    <?php print $content ?>
  </div>
 
  <?php global $user; profile_load_profile($user); print $node->profile_page; ?>
 
</div>

De nem ír ki semmit. Kipróbáltam úgy is, hogy a node-ot átírtam userre (ha esetleg elgépelted volna), de úgy sem ment. Most visszaállítottam mégegyszer arra ahogy írtad, de még mindig nem jó. (Gondolom itt a pontosvesszők miatt nem szükséges az új sor, de kiróbáltam és úgy sem ment).

A global -os résznek egyébként mindegy hol van? szükséges valamelyik dokumentum tetején lennie?

ps.: Jah, ezt egyébként a node-story.tpl.php fileomba írtam.

0
0
crt képe

Amit írtál jónak tűnik. Próbáld meg a profil betöltése után a print_r($node) parancsot. Elméletileg a $node tömbben ott kellene lennie a hozzáadott mezőknek. És egy checkbox-al próbáltam ki, működött. A felvitt story-hoz tartozó felhasználónak ki van töltve a honlap mezője?

Üdv: Zoli

0
0
taltos képe

Ahogy láttam, ez szépen kiír minden elérhető adatot, ugye? Mert szépen kiírt mindent, és a

print $node->name;

kóddal utána ki is tudtam íratni a user nevet (de nem azt, ami a különleges mezőben volt az igazi névvel, hanem a login nevet, azaz hogy "szerzouser").

Ellenőriztem újra, ki vannak töltve ennél a felhasználónál a mezők.

Rákerestem még az így kiíratott szövegben a "profile_", "nev", "page", "profile_nev", "profile_page", "Szerző User" (ilyen fantáziadús nevet adtam a próbausernek) szavakra, de egyiket sem találta meg benne.

Szerintem valahogy nem sikerült hozzácsapnia ezeket a plusz mezőket akkor, nem?

0
0
crt képe

Bocsánat, elírtam. print_r($user), ebben nézd meg. Nem írtad, hogy milyen verziójú drupalt használsz, én most egy 5.1-en próbáltam ki.

Üdv: Zoli

0
0
taltos képe

Én is 5.1-et használok. :)

Ezt a kimenetet kaptam:

stdClass Object ( [uid] => 0 [hostname] => ::1 [roles] => Array ( [1] => anonymous user ) [session] => )

Gondolom itt kellett volna lennie a két profile-os mezőmnek.

Nem tudom, hogy számít-e valamit, de nálam alapból a userekenek nincs engedélyezve a story készítés, és itt most úgy csináltam, hogy egy moderátor userrel (vagy egy adminnal, mindegy) a Story tulajdonosát átállítottam erre a mezei userre. Elvileg a drupal tud erről, mert korábban nem az admin vagy moderátor user nevét írta ki a ->name -es résznél, hanem azt, akit beállítottam.

0
0
taltos képe

Ha létezik ilyen mezőhozzáadós eljárás, akkor azzal utána elvileg könnyen hivatkozható lenne az a 2 plusz mező, de én sehol sem találom a neten az ehhez kapcsolódó eírást. :(

0
0
crt képe

No, elvacakoltam vele. A megoldás a következő:

$profil->uid = $node->uid; 
profile_load_profile($profil); 
print_r($profil);



Ez működik anonymous felhasználó esetében is. Viszont ami a hibát valószínűleg okozta, hogy ha a profil field adatait közvetlenül a regisztráció alatt viszem fel, akkor nem a "profile_field" táblába kerül bele, hanem a "users" tábla "data" oszlopába. Viszont, ha szerkesztem a felhasználót és elmentem újból, akkor már a jó helyre kerül az érték. A megoldás csak az utóbbi esetben működik, mivel a "profile_filed" táblából vesszük az adatokat.
Ha ez probléma, akkor vagy utána kell nézni, hogy mi okozza ezt, vagy pedig írni kell a template.php fájlba egy függvényt, ami mezők értékét megnézi a profile táblában is és a users táblában is.
Most nincs sok időm, ha nem jutsz dűlőre vele, valamelyik nap összedobom.

Üdv: Zoli

0
0
taltos képe

Ez így pont úgy csinálja, ahogy kellett, viszont azt hiszem abból, amit írtál, nem lesz gond, mert ez a 2 mező elvileg nem lesz megadható regisztrációnál, hanem csak az adminisztrátor adhatja meg ezeket az adatokat annak a usernek, aki később majd publikál (tehát regisztrálás után).

Köszönöm szépen a segítséget!
(Jah, és hogy szakítottál rám időt! :) )

0
0
pege képe

Én ugyanezt szeretném de 6-os drupal alatt nem muködik :(
Valakinek megy 6-os alatt ?

0
0
Anonymous képe

Engem érdekelne az a megoldásod ami megnézi mindkét helyen... mert ha jól értettem így hogy ha látni akarom akkor minden egyes reg után bele kell módosítani hogy jó helyről olvassa ki?

0
0