PAYLAŞ

Bildiğiniz gibi Joomla!‘da bir içerik girdiğinizde, eğer bunu gösterecek menü öğesinin ayarlarında yazar isminin gösterilmesi seçilmişse, içeriğin başlığı ile içerik metni arasında yazarına yer verilir. Yazar adı bir içerik için 2 şekilde gösterilebilir. Bunlardan ilki, varsayılanda olduğu haliyle, yani yazarın sistemdeki asıl ismidir. Örneğin benim yazılarımda Aytuğ Halil AKAR gözükür. Oysa kullanıcı adım farklıdır. İkincisi ise içerikte eğer Yazar Rumuzu girilmişse bunun gösterilecek olmasıdır. Dolayısıyla bir üye girişi yaparakbirden çok yazar isminde içerik ekleyebilirsiniz.

Bildiğiniz gibi Joomla!‘da bir içerik girdiğinizde, eğer bunu gösterecek menü öğesinin ayarlarında yazar isminin gösterilmesi seçilmişse, içeriğin başlığı ile içerik metni arasında yazarına yer verilir. Yazar adı bir içerik için 2 şekilde gösterilebilir. Bunlardan ilki, varsayılanda olduğu haliyle, yani yazarın sistemdeki asıl ismidir. Örneğin benim yazılarımda Aytuğ Halil AKAR gözükür. Oysa kullanıcı adım farklıdır. İkincisi ise içerikte eğer Yazar Rumuzu girilmişse bunun gösterilecek olmasıdır. Dolayısıyla bir üye girişi yaparakbirden çok yazar isminde içerik ekleyebilirsiniz.

Forumda bugün yer alan bir soruda, aynı isimdeki yazarların bulunması sebebiyle oluşacak kargaşaya mahal vermemek için yazar adı yerinde kullanıcı adının nasıl gösterilebileceği danışılmış. Şimdi forumda da verdiğim cevap gibi buna değineceğim. Belki aynı şekilde kullanmak isteyen daha çok kimsenin bu kaynağı bulabilmesini sağlamış oluruz.

Yapacağımız işlem, yazar ismini çağıran sorgulardaki u.name tanımını u.username ile değiştirmek olacak. Ancak bu değişiklik tek yerde yapılmayacak. İlk dosya dışındaki diğer tüm dosyalar farklı bir yerdeki görünümü kontrol etmek için kullanılacak. Örneğin frontpage.php dosyası önsayfa içeriğinin görünümünde, article.php dosyası içeriğin kendi sayfasındaki görünümünde yazar isminin gösterimini değiştirecek. Buna göre dilediğinizi kullanmakta serbestsiniz. Diğer dosyalara gelirsek, archive.php dosyası arşivlenmiş içerik blogunda, category.php dosyası kategori blogu görünümünde, section.php dosyası ise bölüm blogu görünümünde istediğimiz davranışın uygulanmasını sağlayacak.

İlk dosyamız olan query.php dosyasındaki değişikliği yapmazsak diğer dosyalarda yapacağımız değişiklik bir şey ifade etmeyecek.

Hazırsanız başlayalım. Çalışacağınız her dosyanın bir yedeğini alarak daha sonra lazım olması durumunda geri dönüşünüzü kolaylaştıracak şekilde bir txt dosyasına bu dosyaların isimlerini ve çalıştıkları dizini yazmayı unutmayın.

components/com_content/helper/query.php dosyasını açın

Şurayı bulun
84
85
86
87
88
89
90
            case 'author' :
$orderby = 'a.created_by_alias, u.name';
break;
 
case 'rauthor' :
$orderby = 'a.created_by_alias DESC, u.name DESC';
break;

Aşağıdaki şekilde değiştirin

Şununla değiştirin
84
85
86
87
88
89
90
            case 'author' :
$orderby = 'a.created_by_alias, u.username';
break;
 
case 'rauthor' :
$orderby = 'a.created_by_alias DESC, u.username DESC';
break;

Kaydedin. İlk adımı tamamladık.

Şimdi sırasıyla diğer dosyaları düzenleyelim. Unutmayın, hangisi gerekliyse onu düzenlemeniz yeterli.

components/com_content/models/archive.php dosyasını açın

Şurayı bulun
115
116
117
118
119
120
121
122
123
124
125
126
127
$query = 'SELECT a.id, a.title, a.alias, a.title_alias, a.introtext, a.sectionid, a.state, a.catid, a.created, a.created_by, a.created_by_alias, a.modified, a.modified_by,'.
' a.checked_out, a.checked_out_time, a.publish_up, a.publish_down, a.attribs, a.hits, a.images, a.urls, a.ordering, a.metakey, a.metadesc, a.access, cc.title AS category, s.title AS section,' .
' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(\':\', a.id, a.alias) ELSE a.id END as slug,'.
' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug,'.
' CHAR_LENGTH( a.`fulltext` ) AS readmore, u.name AS author, u.usertype, g.name AS groups'.$voting['select'] .
' FROM #__content AS a' .
' INNER JOIN #__categories AS cc ON cc.id = a.catid' .
' LEFT JOIN #__sections AS s ON s.id = a.sectionid' .
' LEFT JOIN #__users AS u ON u.id = a.created_by' .
' LEFT JOIN #__groups AS g ON a.access = g.id'.
$voting['join'].
$where.
$orderby;

Aşağıdaki şekilde değiştirin:

Şununla değiştirin
115
116
117
118
119
120
121
122
123
124
125
126
127
$query = 'SELECT a.id, a.title, a.alias, a.title_alias, a.introtext, a.sectionid, a.state, a.catid, a.created, a.created_by, a.created_by_alias, a.modified, a.modified_by,'.
' a.checked_out, a.checked_out_time, a.publish_up, a.publish_down, a.attribs, a.hits, a.images, a.urls, a.ordering, a.metakey, a.metadesc, a.access, cc.title AS category, s.title AS section,' .
' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(\':\', a.id, a.alias) ELSE a.id END as slug,'.
' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug,'.
' CHAR_LENGTH( a.`fulltext` ) AS readmore, u.username AS author, u.usertype, g.name AS groups'.$voting['select'] .
' FROM #__content AS a' .
' INNER JOIN #__categories AS cc ON cc.id = a.catid' .
' LEFT JOIN #__sections AS s ON s.id = a.sectionid' .
' LEFT JOIN #__users AS u ON u.id = a.created_by' .
' LEFT JOIN #__groups AS g ON a.access = g.id'.
$voting['join'].
$where.
$orderby;

Ardından aynı dosyada şurayı

Şu satırlar bulup
201
202
203
	case 'author' :
$where .= ' AND ( ( LOWER( u.name ) LIKE '.$filter.' ) OR ( LOWER( a.created_by_alias ) LIKE '.$filter.' ) )';
break;

Aşağıdaki şekilde değiştirin

Şu şekilde değiştirin
201
202
203
	case 'author' :
$where .= ' AND ( ( LOWER( u.username ) LIKE '.$filter.' ) OR ( LOWER( a.created_by_alias ) LIKE '.$filter.' ) )';
break;

 

components/com_content/models/article.php dosyasını açın

Şu sorguyu bulun
531
532
533
534
535
536
537
538
539
540
541
$query = 'SELECT a.*, u.name AS author, u.usertype, cc.title AS category, s.title AS section,' .
' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug,'.
' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug,'.
' g.name AS groups, s.published AS sec_pub, cc.published AS cat_pub, s.access AS sec_access, cc.access AS cat_access '.$voting['select'].
' FROM #__content AS a' .
' LEFT JOIN #__categories AS cc ON cc.id = a.catid' .
' LEFT JOIN #__sections AS s ON s.id = cc.section AND s.scope = "content"' .
' LEFT JOIN #__users AS u ON u.id = a.created_by' .
' LEFT JOIN #__groups AS g ON a.access = g.id'.
$voting['join'].
$where;

Aşağıdaki şekilde değiştirin

İlk satırındaki değişiklikle şu hale gelmeli
531
532
533
534
535
536
537
538
539
540
541
$query = 'SELECT a.*, u.username AS author, u.usertype, cc.title AS category, s.title AS section,' .
' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug,'.
' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug,'.
' g.name AS groups, s.published AS sec_pub, cc.published AS cat_pub, s.access AS sec_access, cc.access AS cat_access '.$voting['select'].
' FROM #__content AS a' .
' LEFT JOIN #__categories AS cc ON cc.id = a.catid' .
' LEFT JOIN #__sections AS s ON s.id = cc.section AND s.scope = "content"' .
' LEFT JOIN #__users AS u ON u.id = a.created_by' .
' LEFT JOIN #__groups AS g ON a.access = g.id'.
$voting['join'].
$where;

 

components/com_content/models/category.php dosyasını açın

Aşağıdaki sorguyu bulun
361
362
363
364
365
366
367
368
369
370
371
372
$query = 'SELECT cc.title AS category, a.id, a.title, a.alias, a.title_alias, a.introtext, a.fulltext, a.sectionid, a.state, a.catid, a.created, a.created_by, a.created_by_alias, a.modified, a.modified_by,' .
' a.checked_out, a.checked_out_time, a.publish_up, a.publish_down, a.attribs, a.hits, a.images, a.urls, a.ordering, a.metakey, a.metadesc, a.access,' .
' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug,'.
' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug,'.
' CHAR_LENGTH( a.`fulltext` ) AS readmore, u.name AS author, u.usertype, g.name AS groups, u.email as author_email'.$voting['select'] .
' FROM #__content AS a' .
' LEFT JOIN #__categories AS cc ON a.catid = cc.id' .
' LEFT JOIN #__users AS u ON u.id = a.created_by' .
' LEFT JOIN #__groups AS g ON a.access = g.id'.
$voting['join'].
$where.
$orderby;

Aşağıdaki şekilde değiştirmelisiniz

Şöyle değişmeli
361
362
363
364
365
366
367
368
369
370
371
372
$query = 'SELECT cc.title AS category, a.id, a.title, a.alias, a.title_alias, a.introtext, a.fulltext, a.sectionid, a.state, a.catid, a.created, a.created_by, a.created_by_alias, a.modified, a.modified_by,' .
' a.checked_out, a.checked_out_time, a.publish_up, a.publish_down, a.attribs, a.hits, a.images, a.urls, a.ordering, a.metakey, a.metadesc, a.access,' .
' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug,'.
' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug,'.
' CHAR_LENGTH( a.`fulltext` ) AS readmore, u.username AS author, u.usertype, g.name AS groups, u.email as author_email'.$voting['select'] .
' FROM #__content AS a' .
' LEFT JOIN #__categories AS cc ON a.catid = cc.id' .
' LEFT JOIN #__users AS u ON u.id = a.created_by' .
' LEFT JOIN #__groups AS g ON a.access = g.id'.
$voting['join'].
$where.
$orderby;

Yine aynı dosyada

Şurayı bulun
495
496
497
case 'author' :
$where .= ' AND ( ( LOWER( u.name ) LIKE '.$filter.' ) OR ( LOWER( a.created_by_alias ) LIKE '.$filter.' ) )';
break;

Aşağıdaki şekilde değiştirin

Şu hali almalı
495
496
497
case 'author' :
$where .= ' AND ( ( LOWER( u.username ) LIKE '.$filter.' ) OR ( LOWER( a.created_by_alias ) LIKE '.$filter.' ) )';
break;

 

components/com_content/models/frontpage.php dosyasını açın

Aşağıdaki sorguyu bulun
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
$query = ' SELECT a.id, a.title, a.alias, a.title_alias, a.introtext, a.fulltext, a.sectionid, a.state, a.catid, a.created, a.created_by, a.created_by_alias, a.modified, a.modified_by,' .
' a.checked_out, a.checked_out_time, a.publish_up, a.publish_down, a.images, a.attribs, a.urls, a.metakey, a.metadesc, a.access,' .
' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(\':\', a.id, a.alias) ELSE a.id END as slug,'.
' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug,'.
' CHAR_LENGTH( a.`fulltext` ) AS readmore,' .
' u.name AS author, u.usertype, g.name AS groups, u.email as author_email, cc.title AS category, s.title AS section, s.ordering AS s_ordering, cc.ordering AS cc_ordering, a.ordering AS a_ordering, f.ordering AS f_ordering'.
$voting['select'] .
' FROM #__content AS a' .
' INNER JOIN #__content_frontpage AS f ON f.content_id = a.id' .
' LEFT JOIN #__categories AS cc ON cc.id = a.catid'.
' LEFT JOIN #__sections AS s ON s.id = a.sectionid'.
' LEFT JOIN #__users AS u ON u.id = a.created_by' .
' LEFT JOIN #__groups AS g ON a.access = g.id'.
$voting['join'].
$where
.$orderby
;

Aşağıdaki şekilde değiştirin

Sorgu şu hali almalı
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
$query = ' SELECT a.id, a.title, a.alias, a.title_alias, a.introtext, a.fulltext, a.sectionid, a.state, a.catid, a.created, a.created_by, a.created_by_alias, a.modified, a.modified_by,' .
' a.checked_out, a.checked_out_time, a.publish_up, a.publish_down, a.images, a.attribs, a.urls, a.metakey, a.metadesc, a.access,' .
' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(\':\', a.id, a.alias) ELSE a.id END as slug,'.
' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug,'.
' CHAR_LENGTH( a.`fulltext` ) AS readmore,' .
' u.username AS author, u.usertype, g.name AS groups, u.email as author_email, cc.title AS category, s.title AS section, s.ordering AS s_ordering, cc.ordering AS cc_ordering, a.ordering AS a_ordering, f.ordering AS f_ordering'.
$voting['select'] .
' FROM #__content AS a' .
' INNER JOIN #__content_frontpage AS f ON f.content_id = a.id' .
' LEFT JOIN #__categories AS cc ON cc.id = a.catid'.
' LEFT JOIN #__sections AS s ON s.id = a.sectionid'.
' LEFT JOIN #__users AS u ON u.id = a.created_by' .
' LEFT JOIN #__groups AS g ON a.access = g.id'.
$voting['join'].
$where
.$orderby
;

 

components/com_content/models/section.php dosyasını açın

Şu sorguyu bulun
414
415
416
417
418
419
420
421
422
423
424
425
426
$query = 'SELECT a.id, a.title, a.alias, a.title_alias, a.introtext, a.fulltext, a.sectionid, a.state, a.catid, a.created, a.created_by, a.created_by_alias, a.modified, a.modified_by,' .
' a.checked_out, a.checked_out_time, a.publish_up, a.publish_down, a.attribs, a.hits, a.images, a.urls, a.ordering, a.metakey, a.metadesc, a.access,' .
' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(\':\', a.id, a.alias) ELSE a.id END as slug,'.
' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug,'.
' CHAR_LENGTH( a.`fulltext` ) AS readmore, u.name AS author, u.usertype, cc.title AS category, g.name AS groups, u.email as author_email'.$voting['select'] .
' FROM #__content AS a' .
' INNER JOIN #__categories AS cc ON cc.id = a.catid' .
' LEFT JOIN #__sections AS s ON s.id = a.sectionid' .
' LEFT JOIN #__users AS u ON u.id = a.created_by' .
' LEFT JOIN #__groups AS g ON a.access = g.id'.
$voting['join'].
$where.
$orderby;

Şu şekilde değiştirin

Sorgu şu hale gelmeli
414
415
416
417
418
419
420
421
422
423
424
425
426
$query = 'SELECT a.id, a.title, a.alias, a.title_alias, a.introtext, a.fulltext, a.sectionid, a.state, a.catid, a.created, a.created_by, a.created_by_alias, a.modified, a.modified_by,' .
' a.checked_out, a.checked_out_time, a.publish_up, a.publish_down, a.attribs, a.hits, a.images, a.urls, a.ordering, a.metakey, a.metadesc, a.access,' .
' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(\':\', a.id, a.alias) ELSE a.id END as slug,'.
' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug,'.
' CHAR_LENGTH( a.`fulltext` ) AS readmore, u.username AS author, u.usertype, cc.title AS category, g.name AS groups, u.email as author_email'.$voting['select'] .
' FROM #__content AS a' .
' INNER JOIN #__categories AS cc ON cc.id = a.catid' .
' LEFT JOIN #__sections AS s ON s.id = a.sectionid' .
' LEFT JOIN #__users AS u ON u.id = a.created_by' .
' LEFT JOIN #__groups AS g ON a.access = g.id'.
$voting['join'].
$where.
$orderby;

Aynı dosyada aşağıdaki yeri bulup

Bulunacak satırlar
545
546
547
case 'author' :
$where .= ' AND ( ( LOWER( u.name ) LIKE '.$filter.' ) OR ( LOWER( a.created_by_alias ) LIKE '.$filter.' ) )';
break;

Aşağıdaki şekilde değiştirin

Değiştirilmiş hali şöyle olacak
545
546
547
case 'author' :
$where .= ' AND ( ( LOWER( u.username ) LIKE '.$filter.' ) OR ( LOWER( a.created_by_alias ) LIKE '.$filter.' ) )';
break;

 

Dosyalarınızı kaydedin.

Sıklıkla tercih edilen AlphaContent ya da benzer bir bileşeni kullanıyorsanız ilaveten düzenlemeler yapmanız gerekecek. AlphaContent bileşeni için models/list.php dosyasında 3 yerde geçen her bir u.name yerine u.username yazarak kaydetmeniz yeterli olacaktır.

Kabul ediyorum; basit bir değişiklik için uzun bir işlem yapmanız gerekiyor gibi görünüyor. Ancak yazar isimlerinin genellikle sitenin tamamında değil belli yerlerde gösterildiğini düşünürsek bir çoğunuz için bu düzenlemelerin hepsini yapmak gerekmeyecek.

Güle güle kullanın.