link path

zoliky képe

A forum-list.tpl.php fajlba szeretnek beszurni egy kepet a html IMG tagal. Sajnos a src utvonalat a kovetkezo kepen kell megadnom:

src="/mydrupalsite/themes/mydrupaltheme/images/expanded.gif"

Nem lehetne ezt roviditeni ? Probaltam igy:

images/expanded.gif

sajnos nem mukodik!
azert kene a rovidites, mert lehet, hogy meg fog valtozni a forum konyvtar neve, vagy a smink konyvtar neve, nem szeretnek minden IMG tagot atirni.

Fórum: 
Webappz képe

Ha változik a sminked, akkor:
path_to_theme függvény visszaadja az éppen használt sminked útvonalát, de akkor egy újabb sminkben neked kell gondoskodnod, hogy az adott állomány a megfelelő helyen legyen.

0
0

Páldi Zoltán

zoliky képe

Es kesobb ha megvaltoztatom a .gif fajl nevet Javascriptel, regex-et kene hasznalni? Mert gondolom a path a drupaltol fog valtozni.

Es javascriptben nem mondhatom meg neki, figyelj ott a path_to_theme() fuggveny es keresd ki nekem az utat.

0
0
tolmi képe

Egyszerűen tegyél a JS-be egy változót, melynek értéke az aktuális path_to_theme visszatérési értéke és azt használd fel a továbbiakban a JS kódban.

Tipikus ilyen megoldás a $base_url globális változó JS-beli változóként szerepeltetése a Drupal core által, hiszen e nélkül nem is tudnánk normális AJAX-os modult írni. Szóval ez egy teljesen elfogadott trükk.

0
0

--
Tolmács Márk
Drupal bandita

zoliky képe

sajnos nekem el kene magyarazni mint a hujeknek. Az API doksibol nem ertek sokat, ezert nagyon halas lennek ha irtok egy peldat. Nem ertem tulajdonkepen mit hova kell rakni. En PHP kodot meg nem lattam Javascript kozott.

0
0
Webappz képe

Nézd meg a fórum modulnak milyen sminkelhető függvényei vannak, pl.:

majd az adott smink könyvtárában található (ha nincs, akkor létre kell hozni) egy template.php nevű állomány. Abba belemásolod a kiválasztott theme_forum_valami nevű függvényt, majd átírod a nevét phptemplate_forum_valami-re, majd itt elkezded módosítani a függvény működését. Itt a drupal_to_js-sel átadhatsz változót, tömböt, stb. Ha használni akarsz js-t, akkor itt meghívod a drupal_add_js-sel (a js kódot meghírhatod egy külön fájlba és azt hívod be), majd a js kódban JSON-nal lekérheted az átadott változót.

Talán segít: jQuery & Drupal

0
0

Páldi Zoltán

Webappz képe

Ahogy már tolmi írta, add át a js-nek: drupal_to_js.
Van még egy két okos függvény :)
Szerintem az api.drupal.org-on nézz szét, mert ott minden hasznos függvény dokumentálva van.

0
0

Páldi Zoltán

zoliky képe

Ezt a fuggvenyt speciel a drupalhoz csinaltak, hogy jQuery-vel mukodjon?
a drupal_to_js fugvenyt a JS kodban hivom meg php tagok kozt?

0
0
tolmi képe

a drupal_to_js az JSON kommunikációhoz van kitalálva és itt nem is sokat érsz vele. Szimplán csak a modul kódjában ahol aktuális:

...
drupal_add_js('var theme_url = "'.path_to_theme().'";', 'inline');

vagy ha sminkben akarod elhelyezni, akkor:

<script type="text/javascript">
    var theme_url = "<?php print path_to_theme() ?>";
</script>

...és máris van egy ilyen változód.

0
0

--
Tolmács Márk
Drupal bandita

pp képe

drupal_add_js(array('theme_url' => path_to_theme()), 'settings');

Eztán ezt a Drupal.settings.theme_url változóban eléred.

pp

0
0
tolmi képe

Jogos ;)

0
0

--
Tolmács Márk
Drupal bandita

zoliky képe

erdemes ezt igy csinalni? nem konyebb ha eltarolom egy javascript valtozoban az utvonalat (path) es kesob megvaltoztatom. peldaul jQuery attr("src", path + "masikgif.gif");

0
0
tolmi képe

A Drupal.settings.path is egy "változó", pontosabban egy objektum attribuútuma, de tudsz hozzá értéket rendelni futásidőben is (nem konstans).

Így a válasz az hogy érdemes.

0
0

--
Tolmács Márk
Drupal bandita

zoliky képe

pp, a kovetkezo sort:

drupal_add_js(array('theme_url' => path_to_theme()), 'settings');

hova irom be? A forum-list.tpl.php fajlba ? Azutan Javaszkriptben meghivom a kovetkezo objektumal (Drupal.settings.theme_url) ?

0
0
pp képe

én ide tenném, ha sminkelésről van szó, egyébként meg a modulba a megfelelő helyre, ha modulfejlesztésről van szó.

pp

0
0
zoliky képe

nem modult fejlesztek. Egy nagyon egyszeru dolgot szeretnek. Eloszor is beszurtam egy kepet a forum-list.tpl.php fajlba es annak az utvonalat felhasznalni JS-ben.

Talaltam egy ilyen megoldast is:

var path = $('img').attr('src');   // az img tag erteke, pl: /themes/mytheme/images/kep.gif
var fileName = path.slice(path.lastIndexOf('/')+1); 

gondolom ezert nem erdemes komplikalni a dolgot, velemeny szerint elege nehezkesek a fenti peldak es nem latom ertelmuket :) Bar lehet en gondolkodok rosszul.

Azert jo, mert ha valaki felhasznalna a kodomat es masik konyvtarba van a sminkje nala is mukodni fog. Meg tudtam volna oldani konyebben, peldaul beszurom direkt a smink fele vezeto utat drupal sminkbe es javascriptbe is, de szerintem ez nem olyan jo.

0
0
tolmi képe

A pp és általam pedzegetett megoldás a tisztességes és korrekt megvalósítás, a tied egy csúnya hekk (bocsi, ez van). Szerencsédre a JS char típus bytehosszfüggetlen....

0
0

--
Tolmács Márk
Drupal bandita

zoliky képe

Azert csunya, mert egy DOM node-bol kiolvasom az erteket? legkozelebb fejlesztek kulon egy drupal modult, hogy lekerdezem a getElementByID-t.

0
0
Pasqualle képe

nem kell megsertodni. az a csunya benne, hogy kesz megoldas helyett, sajat uton probalod megoldani, gyenge eszkozokkel.
olyan a megoldas mintha gyertyaval vilagitanal mikozben karnyujtasnyira toled a villanykapcsolo. romantikus, de vilagossagot nem teremt :)

0
0
tolmi képe

De legalább egy nő sem mondhatja a szoftverfejlesztők 90%-ára hogy nem romantikus alkat (ld. gyertyafény == hekkelt megoldások) :D

0
0

--
Tolmács Márk
Drupal bandita