Munka alkönyvtárból vissza a főkönyvtárba

airzsolt képe

Egész jól haladok az új drupal oldalammal, aminek munkaváltozatát az adott domain egy alkönyvtárába telepítettem (akarmi.hu/drupal). Ha teljesen kész lesz, szeretném az egészet áthelyezni a főkönyvtárba, azaz az akarmi.hu alá. Ahogy egy adatbázis backupból látom, az eltárolt html kódokban a linkekbe "be van égetve" a "/drupal" alkönyvtár. Szerintetek mi a legegyszerűbb módja, hogy az áthelyezés után minden link jó helyre mutasson. Elsőre arra gondoltam, hogy csinálok egy adatbázis exportot, aztán a szöveges sql fájlban egy keresés-helyettesítéssel kiszedem a "/drupal" előtagot mindenből. Van ennél egyszerűbb mód is, illetve egyeltálán jó ez az elképzelés? Persze van egy a saját pc-men futó, hasonló felépítésű, lokális teszt rendszerem is, azon végülis ki tudok próbálni bármit..., csak azért kérdezek, hogy hátha létezik egy bevált megoldás erre a problémára.

airzsolt képe

Ezt már végigolvastam: http://drupal.org/node/20853
van benne szó .htaccess ( #RewriteBase /drupal) megoldásról, ami elvileg lehet, hogy jó, csak az én rendszeremnek van egy olyan specialítása (jelenleg), hogy pl. az új drupal írások a régi (akarmi.hu/akarmi1/akarmi2/oldalx.html) oldalakról sima másolás-beillesztéssel kerültek át, ami azt a kényelmet biztosította, hogy pl. a képeket nem kellett átcipelni a drupal alá, hanem a régi oldalon maradtak, az a drupal oldalak ezekre linkelnek (nagyon sok képről van szó, egyelőre nem nagyon szeretnék ennek átcipelésével is megküzdeni..)

0
0
Illyés Edit képe

Milyen HTML kódok? Melyik modul égeti be? Rendesen viselkedő modulok az útvonalakat /system/... formában adják meg, pl. /system/files/images/kep.jpg — éppen azért, hogy hordozható legyen.

0
0
airzsolt képe

Megnéztem a drupal adatbázis tábláinak exportjában, hol találok nem relatív hivatkozást ("/drupal" szöveg). Ezekben a táblákban:
- locales_source (rengeteg)
- node_revisions (ez gondolom a node-ok forrása: itt gyakorlatilag az összes tinymce-vel beillesztett link)
- watchdog (ez gondolom a napló, azaz ez nem érdekes)

Szóval az első, ami problematikus, illetve a tinymce. Az elsőnél sajnos nem tudom, hogy ki a hunyó, a tinymce-nél a találtam a tinymce.module-ban egy ilyet:

function tinymce_config($profile) {
...
  $init['relative_urls']      = 'false';

Lehet, hogy itt van elásva az eb, viszont a tinymce beállításainál nem találtam olyan lehetőséget, hogy ezt felül lehetne bírálni. Ahol hivatkoznak erre a változóra, ott kb. ilyenek vannak:
TinyMCE_Engine.prototype.convertURL = function(url, node, on_save) {
...
	// Handle relative URLs
	if (on_save && tinyMCE.getParam('relative_urls')) {
		var curl = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], url);
		if (curl.charAt(0) == '/')
			curl = tinyMCE.settings['document_base_prefix'] + curl;
 
		var urlParts = tinyMCE.parseURL(curl);
		var tmpUrlParts = tinyMCE.parseURL(tinyMCE.settings['document_base_url']);
 
		// Force relative
		if (urlParts['host'] == tmpUrlParts['host'] && (urlParts['port'] == tmpUrlParts['port']))
			return tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings['document_base_url'], curl);
	}

Szóval nyomozok még tovább, de ha valaki kapásból tudja, hogy hol kéne belenyúlnom ebbe, hogy minden relatív legyen, légyszi szóljon.. :)
+++

Próbaképp átírtam a "$init['relative_urls'] = 'false';" kódban az értéket true-ra, ez ahhoz az érdekes jelenséghez vezetett, hogy visszahozva egy korábban felvitt írást, és abban egy linket megnézve, relatív lett a link, és mikor elmentettem az írást újra, meg is maradt relatívnak a html kódban. Viszont sajnos az összes külső linkből (képek linkjei) is relatívot csinált, és el is rontotta egy szinnttel, így a képek nem látszottak (/akarmi/kepek/kep1.jpg-ből -> ../kepek/kep1.jpg lett, ami a browserben ilyen útvonallá lett: /drupal/akarmi/kepek/kep1.jpg és emiatt nem is jelenik meg a kép). Visszaállítva a fenti változót false-ra, behozva újra az oldalt, és elmentve, visszaállt az oldal.

At hiszem mégis marad az adatbázisban turkálás - bár nem tudom, hogy bele szabad-e nyúlni ebbe a node_revision táblába kívülről - nincs-e valamilyen ellenőrző összeg, vagy ilyesmi, amitől meggágyul majd az egész...

0
0
Illyés Edit képe

TinyMCE FAQ 1.2

 $init['convert_urls'] = "false";
0
0
Hojtsy Gábor képe

A locales_source-ban lévő webcímek csak akkor használatosak, ha exportálsz vagy importálsz valamit, lényegében nincs szerepük a webhely működése során. Bármit beírhatnál a webcímek helyére, akkor is menne minden jól.

0
0
airzsolt képe

Köszönöm, már azt hittem, hogy ezzel a segítséggel megoldható, de aztán rájöttem, hogy mégsem olyan egyszerű. Ugyanis ha pl. egy href="/drupal/node/61" linket relatívvá teszek, azaz href="node/61"-et írok helyette, és mondjuk ez a link a "/drupal/node/60" oldalon helyezkedik el, akkor a böngésző az utolsó "/" utánra fogja tenni a relatív részt, azaz a teljes cím ez lesz: "/drupal/node/node/61" - ami nyilvánvalóan hibás. Ebből viszont az következik, hogy amíg a "/drupal" alkönyvtár alatt építgetek, addig szükséges, hogy a belső címek is abszolút ide mutassanak, azaz kell eléjük a "/drupal/". Sajnos ez azt is jelenti, hogy az áttelepítéskor kénytelen leszek átnézni oldalakat és átírni az ilyen linkeket, ha van bennük. Jól gondolom?
+++
frissítés: Viszont ha csak a "61"-et írom be, mint relatív url-t, akkor jó... :) Lehet, hogy így fogom csinálni - bár mondjuk közben az is felmerült bennem, hogy ha (majd) nevesítem a node-okat (pl: "akarmi/oldal"), akkor megint ugyanott tartok.. :(

0
0
Illyés Edit képe

Helyesen: a href="/node/61"

Ilyenkor a Drupal okosan elé írja a base_href értékét.

0
0
airzsolt képe

Igen, ebből indultunk ki, és épp ez volt a migráció szempontjából a problémám. A node_revisions tábla body oszlopába, azaz az eltárolt html kódba ilyen formában kerül be a link: href="/drupal/node/61", ha ezt adom meg: "/node/61". Csináltam egy próbát: a lokális gépemre, a "localhost/drupal" könyvtárba telepített rendszer nevét átneveztem "dru"-ra, aztán egyedül a .htaccess-ben módosítottam a RewriteBase értékét, és gyönyörűen bejött a főoldal, sőt a menü v. bármelyik a drupal által standard módon generált link működött (nem meglepő, mivel az adatbázisban ezek a linkek tényleg relatívként tárolódnak) - egyetlen kivétel volt: az oldalak forrásába, a tinymce-vel beillesztett linkek, amik ugye megmaradtak eredeti formájukban, és emiatt rossz helyre is mutattak.

Szerencsére ez a teszt bebizonyította, hogy nagy valószínűséggel tényleg csak ezeket a linkeket kell majd a migrációnál módosítani, és hogy hol vannak ilyenek, az egy adatbázis exportból könnyen és gyorsan kiszűrhető (node_revisions tábla).

Azért köszönöm az ötletet, mert ez is hozzájárult, hogy élesedjen a kép.. :)

0
0