Adatbázis megosztása több külön drupal rendszer között

Prancz Ádám képe

Sziasztok!

Több cikket is olvastam az adatbázis megosztásáról meg multi siteokról, de a következő problémára nem leltem fel bennük a megoldást így ebben kérném a segítségetek.

Alaphelyzet:
* Van több független Drupalos oldalam külön domain név külön adatbázis, egyedi tartalom egyedi smink stb.

Feladat:
* Létre akarok hozni egy olyan egyedi tartalom típust, amit az összes Drupalos oldalam lát, de lehetőleg csak ezt az egyet.
* Ezeket a tartalmakat aztán úgy kellene szinkronban tartanom, hogy minden siteomról lehessen bővíteni őket.

(* Jó lenne, ha a felhasználókat is szinkronizálni tudnám illetve ha meg tudnám őket osztani az oldalaim között, de itt a user profil eléggé különböző és erre ott az OpenID meg a Facebookos dolog, így ez annyira nem lényeg.)

Láttok erre valami kézenfekvő megoldást?

Mondok egy konkrét példát:
Van több oldal ahol van egy link tartalom típus ami egy linktárat épít. Kapcsolódik hozzá akár több taxonomy is egyedi ccks mezők meg hasonlók.
Azt akarom, hogy kinevezhessem az egyik Drupal oldalam adatbázisát Mester adatbázisnak ahová gyűjti az összes linket meg képet az oldalról stb. és a többi drupalos telepítés ezt használhassa ugyan azzal a kategórizálással amivel a mester oldal.

Van valami ötletetek rá?

Drupal verzió: 
Fórum: 
eMeLA képe

Ez tipp, feltéve ha az adatbázisok egy szerveren vannak:

Egy saját modulban átváltod a mester oldal adatbázisára az aktuális adatbázist, kinyered onnan amit meg szeretnél jaleníteni, majd visszaváltod a default adatbázist. Persze ebben az esetben leginkább saját PHP kódra tudsz alapozni az adatbázis lekérdezésnél és megjelenítésnél.

0
0

...mit tudok: http://web.termuves.hu

Prancz Ádám képe

Szia!

Köszi a tippet, kicsit furcsa, hogy erre nincs egyszerű out of the box megoldás mert nem annyira elrugaszkodott az ötlet szerintem akkor egyelőre jégre tesszük a dolgot!

Köszi mégegyszer!

0
0
eMeLA képe

Nem biztos, hogy nincs...

0
0

...mit tudok: http://web.termuves.hu

aboros képe

azert nehez konkretan valaszolni a kerdesedre, mert egy olyan funkciorol van szo ami adott esetben az egesz site kialakitasat meghatarozhatja.

minden esetre ilyen "osztott tartalom" helyzetekre talaltak ki peldaul a domain access modulcsomagot. nem tudom az egyes siteok mennyire hasonlitanak egymasra vagy mennyire ternek el, ezen sok mulik.

tegyuk fel, hogy van 3 teljesen egyforma oldalad. (egyforma = ugyan azok a tartalom tipusok vannak, ugyan azok a nezetek. ugyan azok a felhasznalok..) mondjuk mindenhol van page meg story tartalom tipus. ezeket ugy allitod be domain accessben, hogy mindig csak oda tegye kozze a drupal, ahonnan bekuldtek. es van egy link tartalom tipusod is, ezt meg ugy allitod be, hogy minden sitera tegye kozze a drupal. kesz. nagy vonalakban. :)
ebben a helyzetben nincs kulon adatbazis, minden website ugyan azt a dbt hasznalja. ha az egyes siteok nagy mertekben elternek egymastol "feature setjüket" tekintve, akkor ez maceras lehet es eroforras pazarlo. ha nem, akkor viszont igen kiraly.
nezd, egy hevenyeszett pelda:
ez: http://mespom.eu/profiles/faculty/aleh_cherp
meg ez: http://www.ceu.hu/profiles/faculty/aleh_cherp
meg ez: http://envsci.ceu.hu/profiles/faculty/aleh_cherp
mindharom tokeletesen ugyan az a node. nem harom node, ami egyforma, hanem mindharom ugyan abban az adatbazisban ugyan az a node, a 69 -es. mindharom site ugyan azt a drupal adatbazist hasznalja. barmelyik sitera belepsz es szerkeszted ezt a nodeot, ertelem szeruen a tobbi siteon is megvaltozik. azonnal.
sot, ezen a linken http://publications.ceu.hu/biblio/author/982 a jobb sidebarban levo blokk is ugyan abbol a nodebol mutat reszleteket, mint amit teljes egeszeben latsz a fenti harom linken.

ha pl prof. cherp lecsereli a profilkepet, akkor eleg egy helyen szerkesztenie ezt a nodeot, uj kepet tolt fel es bumm, maris frissul mindenhol. (illetve nevtelen latogatoknak van kis csuszas amig urul a varnish cache)

ha valamiert nem jo a domain access, akkor feeds modullal mennek neki, de ez igy elsore trukkosebbnek tunik. minden siteon letre kene hozni a link tartalom tipust. a bekuldott linkekrol egy rss csatornat kesziteni es a "link osszegyujto" site feeds modullal olvassa a tobbi oldalra bekuldott linkeket es azokat nodeositja. aztan ebbol is egy feed ami visszaszinkronizal az egyes siteokra... ...illetve attol fugg. nemtom az kovetelmeny e, hogy ha A siteon bekuldok egy linket, az B siteon is meg kell jelenjen vagy csak a "gyujto" siteon.

minden esetre az altalanosan igaz sztem, hogy ilyen funkciokat utolag beepiteni letezo rendszerekbe eleg maceras lehet, ilyesmiket altalaban jo minel elobb tudni mert sokmindent meghatarozhat, hogy ilyet kell tudnia egy rendszernek. (pl eleve domain accessel epitem akkor.. utolag eleg nehezkes lesz letezo, kulonallo drupalokat egy domain accessbe migralni)

szoval ez nem az a tipikus egy mondatban valaszolok problema. :) probald ki a domain accesst, jatsz vele, ha konkret kerdesed van szivesen probalok segiteni.

0
0

-
clear: both;

Prancz Ádám képe

Köszi a hozzászólást! Az első elképzelésed nagyjából fedi azt amit létre szeretnék hozni. Két kérdésem lenne mielőtt neki vágnék.

Ez szerinted működik akkor is, ha a két site nem teljesen azonos?
- vannak különböző tartalom típusok
- különböző nézetek
- és különböző a felhasználó bázis
Vagyis csak 1-2 konkrét tartalom típust és max a felhasználói adatlapot venném át.

Itt jön a második kérdésem.
Úgy nézne ki a dolog, hogy van egy master site ami már kész van és építenék hozzá egy másik oldalt külön domain név alá, ami innen venne bizonyos infóka, de pl az oldalak tartalma teljesen más lenne. Itt az oldalakon a page content típust értem, de pl a link content típus az ugyan az lenne felépítését tekintve mint a másik oldalaon és ezt kellene átvenni a másik oldal adatbázisából és oda visszaszinkronizálni is. Mivel nem szerencsés ha a link tartalmak 3-4 különböző domain alatti adatbázisban lennének széttöredezve.

Ennek véleményed szerint így érdemes nekivágni a domain access modullal? Mert még bizonyos fokug tud rugalmas lenni a projekt:-)

Te csináltad ezeket a példának hozott oldalakat? Nagyon ütősek!

0
0
aboros képe

ki kell próbálni, sokkal hamarabb fogod látni mire is képes a domain access, ha kipróbálod, mintha én próbálom meg elmagyarázni. :) a lényeg az, hogy nincs külön adatbázis. egy adatbázis van, egy drupal ami x domaint hajt. van lehetőséged leválasztani (prefixeltetni) táblákat, ha szükséges, pl a {path} táblát általában érdemes prefixelni, nehogy az legyen, hogy az egyik site egy pagenek beállítja mondjuk a 'kapcsolat' álnevet, akkor ugye a többiek azt már nem használhatják.

- vannak különböző tartalom típusok
ha van 6 tartalom típusod, az mind a 6 látszani fog minden domainen a node/add oldalon. vagy trükközöl, saját modullal írod felül a node/add page callbacket és akkor valami logika alapján eldöntöd, melyik tartalom típusokat kell kirakni.
az egyes nodeok megjelenítése más tészta, alapvetően annak a kezelésére van ez a modulcsomag, hogy a node/42 tartalmat közzé teszed a, b, c domainen, de x, y, z domainen nem. minden tartalom típusról megmondhatod, hogy alapértelmezés szerint csak oda legyen közzétéve, ahonnan beküldték vagy esetleg mindenhova. persze ezt a megfelelő jogosultság birtokában egyenként változtathatod minden nodeban. nekünk pl pont olyan helyzet van, hogy kellett, ezért készítettünk egy kiegészítő modult is, domain_nodetype a neve, ha használod, minden tartalom típus beállításainál megmondhatod, hogy alapértelmezés szerint mely domainekre legyen közzétéve. mondjuk a news tartalom típus, az mindig menjen oda ahonnan posztolták PLUSZ menjen a fő sitera is PLUSZ menjen egy news.domain.com sitera is.

- különböző nézetek
senkit nem fog zavarni (egy darabig:) hogy van x nézeted, amit a 42 domainedből csak egy használ.

- különböző a felhasználó bázis
mivel egy adatbázis van, ha valaki regisztrál x domainen, azzal a userrel be fog tudni lépni az összes többi domainen is. ennek kiküszöbölésére meg lehet próbálni saját modult írni, vagy elkezdeni prefixeltetni a user táblákat. vagy fel lehet fogni extra szolgáltatásként is, ha a projekt olyan.

itt az egyetem ezzel a modulcsomaggal ~110 siteot hajtunk per pillanat egyetlen drupallal, egyetlen adatbázissal. jó móka, csak az ilyen "különböző nézetek" dologgal kell vigyázni, most van ~70 view, ~300 blokk, több mint 100 menü, ~40 smink, isten se tudja hány panel, rule, miegymás, néha nem egy leányálom adminisztrálni. :)

0
0

-
clear: both;

Prancz Ádám képe

Ez nagyon király nekiugrom!
És köszi mégegyszer a segítséget!
Már jönnek is az újabbnál újabb projekt ötletek! :-)

0
0
Prancz Ádám képe

Közben találtam egy kis leírást ami szintén segítséget nyújt és elkezdtem kísérletezni.

Azt amit szeretnék elérni az a következő lenne:
- több különböző domain név használata
- különböző viewsek (ez nem probléma ezt már látom)
- különböző tartalom típusok használata a különböző domain nevek alatt (ez is kb kijön a leírásodból, hogy ezzel sem lesz probléma!)
- a felhasználó tábla legyen teljesen közös (ehhez találtam egy leírást, ami jónak tűnik: http://www.bleen.net/blog/domain-access-sso )
- egyedi sminkek minden oldalra (ezzel nem lesz probléma, mert csak létre hozom az egyedi smink könyvtárakat a /sites/mydomain1/themes alá ha jól értem illetve ide létrehozok egy settings.php-t is)
- egyedi menük (ezt még nem látom teljesen de gondolom ezzel sem lesz komolyabb gond.
- hostolás (na itt lehetnek problémák, remélem a hosting cég partner lesz benne, mert anyagilag nincs egyelőre kedvem saját servert beállítani erre, majd ha nagyon beindulnak a dolgok!)

Kis csavar a dologban:
- Már van egy olyan oldalam, amit szeretnék master oldalnak kinevezni. Ebben van egy elég nagy felhasználói adatbázis is meg csomó tartalom. A többi domain nevemet ennek részfunkcióihoz rendelném hozzá.
- A master oldal működését nem nagyon lehetne megszakítani, illetve az aloldalakat majd úgy kell kialakítanom, hogy felszinkronizálódjanak a tartalmak a master oldal alá is és jó lenne, ha ott nem okoznának semmi problémát, pl felülírás meg hasonlók

Itt jönne be az első érdemi kérdésem:
Nagyon jó, hogy felhívtad a path táblára a figyelmem! Ezt külön köszönöm, mert elsőre biztos nem jutott volna eszembe, hogy ebből gondom lehet később!

A master oldalamon kell módosítani valamit azon kívül, hogy gondolom ott is be kell kapcsolani az SSO, meg a domain access modulokat, módosítani a settings.php-t nincs valami egyébb buktató amivel gond lehet? Vagyis röviden egy működő oldal alá is egyszerűen beszervezhető több domain név (pl micrositeok és hasonlók?) Vagy erősen ajánlott az elejétől így csinálni?
- Célszerű-e itt (a master siteon) prefixelni valamit, vagy ezt elég csak a többi domain nevem elindításánál megtenni az adatbázis nem közös részeinél?

Kicsit zavaros még a dolog, de már legalább érzem, hogy ez az az út amin végig kell mennem valahogy:-) és köszönöm mégegyszer az eddigi segítséget!

0
0
aboros képe

nincs külön adatbázis, nem tudom már hogy írjam le szebben na. nincs sites/domain1/settings.php meg sites/domain2/settings.php ...

egy drupal van, egy sites/default/settings.php

tulajdonképpen a létező "mester oldaladra" kéne "csak" feltelepítened a domain accesst. hamar látnád, hogy mi van. admin felületről hozhatsz létre egy új domaint bármikor, rendelhetsz hozzá sminket a létező sminkek közül, állíthatsz be neki egyedi primary menut, footert, mindent mi szem-szájnak ingere.

próbáljad már ki könyörgöm az élő istenre, mert így csak elkopik az ujjam, de úgy látom jobban megértetni már nem tudom. száz oldalas kb a readme.txt meg az install.txt, minden le van írva benne. a modul oldalán is szép magyarázatvan, hogy pontosan mit csinál és mikor jó ez és miért.

most már ne filozofáljunk tovább ezen, próbáld ki ha gondolod és kérdezzél konkértat.

0
0

-
clear: both;

Prancz Ádám képe

Ezerrel tanulmányozom!

Végig is olvastam a leírásokat is!

0
0
Balogh Zoltán képe

mivel egy adatbázis van, ha valaki regisztrál x domainen, azzal a userrel be fog tudni lépni az összes többi domainen is. ennek kiküszöbölésére meg lehet próbálni saját modult írni...

Már ezt is megtették helyettünk, legalábbis így első olvasatra e zellen véd.

0
0
aboros képe

csak azert nem szoltam, mert nekem szemely szerint logikai problemaim vannak a dologgal. ha ugyanis en regelek A domainen, ugyan azzal a mailcimmel B domainre mar nem fog engedni regelni es belepni se tudok vele? nice :) szerintem ongol ez. persze el tudok kepzelni olyan specialis eseteket amikor hasznos, de ezek aranya szerintem teljesen elenyeszo.

0
0

-
clear: both;

Prancz Ádám képe

Na már használom is sikerült beizzítani minden gond nélkül! A saját smink már működik amivel szívok az az elérhetőségek oldal. Pedig megosztottam a path alias táblát, szerintem holnap megoldom:-)

A belépés nekem nem gond sőt előny is, ha nem kell külön-külön reggelni!

Amik miatt aggódom:
xml-sitemap
sima sitemap
meg még van egy pár modul ami neccesnek tűnik.

Ez még egy induló projekt a másikat csak akkor bántom, ha ez már frankón működik!

Viszont részvétem neked a sok oldal karbantartásáért már most kezd zavaros lenni ez a kis mini site is úgyhogy el tudom képzelni mi lehet nálatok!!

0
0
Prancz Ádám képe

Ez nagyon nagy királyság!
Aboros! Te vagy szent ember te lenni nagy tanító!
Köszi mégegyszer!

0
0
Prancz Ádám képe

Ez alapján a post alapján megpróbálok összehozni egy könyvlapot a domain access modulról mivel nagyon nagy lehetőségeket látok benne addig is ahogy haladok előre ide feltölteném az egyes modulok beállításait mivel ezekkel azért eléggé sok a buktató.

Kezdjük a google analytics modullal, ami alapból nem megoldott sajnos, hogy kövesse a különböző domain neveinket a domain access modullal:

A megoldás:
Adjuk hozzá ezt a sort a site/all/modules/domain/domain_conf/settings_domain_conf.inc állományhoz. Ekkor elvileg frissíthető is marad a modul.

<?php
/**
* Implements hook_domainconf() to add the google analytics account number per domain.
*/
 
function googleanalytics_domainconf() {
  $form['googleanalytics'] = array(
    '#type' => 'fieldset',
    '#title' => t('Google Analytics settings'),
    '#collapsible' => TRUE,
    '#collapsed' => FALSE,
  );
 
  $form['googleanalytics']['google_analytics'] = array(
    '#type' => 'textfield',
    '#title' => t('Google Analytics account number'),
    '#default_value' => variable_get('google_analytics', 'UA-'),
    '#size' => 15,
    '#maxlength' => 20,
    '#required' => TRUE,
    '#description' => t('The account number is unique to the websites domain. Click the <strong>Edit</strong> link in your Google Analytics account next to the appropriate profile on the <strong>Analytics Settings</strong> page, then select <strong>Check Status</strong> at the top-right of the table to find the account number (UA-xxxx-x) of your site. You can obtain a user account from the <a href="@url">Google Analytics</a> website.', array('@url' => 'http://www.google.com/analytics/')),
  );
  return $form;
}
?>

Ekkor a googly analytics modul beállításainál majd meg tudjuk adni, hogy melyik domain nevünkhöz milyen követő kódot használjunk.

0
0
aboros képe

küldd be új témaként és akkor majd bekerül tippek-trükkökbe. ez a téma már megoldott, megtudtad mik a lehetséges megoldások az elején feltett kérdésedre, légyszi ne szemeteld most tele mindenfélével.

és amúgy pedig amikor bemutatsz egy megoldást egy létező problémára, illik linkelni a forrást is.... estünkben gyanítom ezt: http://drupal.org/node/547390
ami ha tovább olvasod láthatod, 6.x-2.x esetén már nem érvényes, hanem így kell:
http://drupal.org/node/547390#comment-2434574

légyszi ne csináld azt, hogy most majd minden forradalmi domain access ötleted/fogásodat ideposztolgatod. ezt a "problémát" már megoldottuk. haladjunk tovább.

0
0

-
clear: both;

Prancz Ádám képe

OK! :-) Köszi mégegyszer!

0
0