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.