PDA

Orijinalini görmek için tıklayınız : birden fazla joomla site user taplo birlestirme ?



mesoftbilisim
07-05-2014, 14:25
Merhaba Arkadaşlar;

Benim aynı hosting hesabında farklı klasörlerde bir kac tane joomla 2.5.20 sürüm sitem var hepsinin veritabanı tek aynı veritabanında farklı öneki taplolarına sahip.Benim istedigim aynı üyelikle hepsinde işlem yapabilmek yani user taplolarının esitlenmesi.Bunu nasıl yapabilirim?.

JFUSİON bileşenini denedim ama başaramadım bir yolu varmıdır ?

Şimdiden ilginize teşekkür ederim.

horoz nuri
07-05-2014, 18:14
Merhaba,
İstediğin şeyi hiç bir eklenti kullanmadan yaptım. Anlatacağım şekilde, her adımı dikkatli olarak yaparsan olur. Çünkü bizzat denedim. (Her iki site de Joomla! 2.5.20 versiyondu.)

Önce her ihtimale karşı sitelerin yedeğini alalım, ne olur ne olmaz. Sakata gelmeyelim. :) Herhangi bir terslik olursa geri dönme imkanı olsun.

Not 1: Aşağıda yapacağımız işlemlerden sonra herhangi bir sitedeki kullanıcı işlemleri tüm sitelerdeki kullanıcıları etkiler. Çünkü tüm sitelerin kullanıcıları aynıdır. Bunu hiç bir zaman unutmayalım.

Not 2: Bu yöntemi uygulayabilmek için tüm Joomla sitelerin veritabanları aynı sunucuda olması gerekir. (Anlattığınıza göre sizin sitelerinizin durumu uygun)

Önce 2 sitenin kullanıcılarını birleştirelim. Daha sonra üçüncü, dördüncü,... vs siteleri benzer şekilde yapabiliriz.

Şimdi site1 ve site2 kullanıcılarını birleştireceğimiz siteler olsun. Bu sitelerden biri ana site olacak, diğeri yavru site olsun. :)
Gerçek kullanıcı tabloları ana site veritabanı üzerinde tutulacak, yavru sitenin kullanıcı tablolarını sileceğiz ve sanal tablo (gerçekte öyle tablolar yok) kullanacağız. Yani aşağıdaki işlemleri yapınca sonuç olarak sadece ana sitenin kullanıcıları kalır ve kullanılır, diğerler sitelerin kullanıcıları silinir. Diğer siteler ana sitenin kullanıcı tablolarını kullanacak. Böylece tüm sitelerin kullanıcıları aynı olacak.

Bu kadar tıraş yeter. Haydi başlayalım...

1. Adım: configuration.php dosyasını editlemek

site1 -> ana site
site2 -> yavru site

olsun. Şimdi site1'in configuration.php dosyasını bir editörle açalım. Burada;

public $secret yazan satırı bulun. Mesela şöyle bir şeydir:

http://i.imgur.com/JolmWBy.png

Sizin configuration.php'da kodlar farklı görülebilir. Bu normaldir. site1'deki kodu kopyalayıp site2'in configuration.php dosyasındaki aynı yere yapıştırın ve kaydedin. Böylece her iki sitenin public $secret satırı aynı olmuş oldu.

2. Adım: site2'nin kullanıcı tablolarını kaldırmak

Mesela;

site1'in tablo ön eki abc_
site2'nin tablo ön eki xyz_

olsun. Burada tablo ön eki; abc_ ve xyz_ örnek olarak verilmiştir. Siz kendi sitelerinizin tablo ön ekleri ne ise ona göre yapacaksınız. phpMyAdmin'e girin ve site2'nin kullanıcı tabloları kaldırın. Kaldıracağımız tablolar şunlardır:

xyz_session
xyz_usergroups
xyz_users
xyz_user_notes
xyz_user_profiles
xyz_user_usergroup_map
xyz_viewlevels

Bu tabloları işaretleyin (7 tane tablo) ve "KALDIR" seçerek silin. (phpMyAdmin İngilizce ise "DROP" seçin)
site2'nin kullanıcı tablolarını sildik. Şimdi bakacak olsak site2'nin çalışmadığını veritabanı hatası verdiğini görürüz. Ama acele etmeyin. Daha işimiz bitmedi.

3. Adım: phpMyAdmin >> İçe Aktar

site2'nin kullanıcı tablolarını silmiştik ya şimdi onların yerine sanal tablo oluşturalım. site1'in tablolarını kendi malıymış gibi kullansın :)

Şu kodları kendinize göre editleyin (Mesela Notepad++ kullanabilirsiniz). Yani xyz_ , abc_ , site1 yazan yerleri kendinize göre düzenleyin. Buradaki site1 yazan yer ana sitenin veritabanı adıdır.



CREATE VIEW xyz_session AS SELECT * FROM site1.abc_session;
CREATE VIEW xyz_usergroups AS SELECT * FROM site1.abc_usergroups;
CREATE VIEW xyz_users AS SELECT * FROM site1.abc_users;
CREATE VIEW xyz_user_notes AS SELECT * FROM site1.abc_user_notes;
CREATE VIEW xyz_user_profiles AS SELECT * FROM site1.abc_user_profiles;
CREATE VIEW xyz_user_usergroup_map AS SELECT * FROM site1.abc_user_usergroup_map;
CREATE VIEW xyz_viewlevels AS SELECT * FROM site1.abc_viewlevels;


Bu kodları editledikten sonra tablo.sql olarak kaydedin. Şimdi phpMyAdmin'de site2'nin veritabanına girin. "İçe Aktar" diyerek tablo.sql dosyasını içe aktarın.


4. Adım: Tebrikler!!! İşte Bu Kadar!!!

Artık ana sitenin kullanıcı adı ve şifreleriyle yavru siteye de girebilirsiniz. Peki yavru sitenin kullanıcıları ne oldu? Onlar silindi ve artık kullanılmayacak. Ama bundan sonra yavru siteyi kullanarak da kullanıcı oluştursanız aynı kullanıcı adı ve şifreyle ana siteye de girebilirsiniz. Böylece tüm kullanıcılar birleşmiş oldu.

Not: Bu işlemleri yaparken, daha önce siteye kullanıcı girişi yapmışsanız; Joomla session kullandığı için eski giriş işlemi kafasını karıştırdığından dolayı en son işlemden sonra hata verebilir. Browserin ön belleğini temizleyin (CTRL+SHIFT+DEL) veya kapatıp tekrar açın. Düzelecektir.

site2'nin kullanıcı işlemlerini hallettiğimize göre artık benzer şekilde site3, site4, site5,... ne kadar site varsa hepsine uygulayabiliriz.

Buradaki işlemler tarafımdan bizzat denenmiştir. Ayrıntılı olarak da izah ettim. Yapamıyorsanız bir daha gözüme gözükmeyin!!! :kizgin:
Şaka şaka takıldığınız yer olursa veya sormak istediğiniz bir şey olursa elimden geldiğince yardımcı olurum. :D