<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Artı Teknoloji - Teknolojiye Artı - Diğer Web Tabanlı Uygulamalar]]></title>
		<link>https://www.artiteknoloji.com/</link>
		<description><![CDATA[Artı Teknoloji - Teknolojiye Artı - https://www.artiteknoloji.com]]></description>
		<pubDate>Sat, 02 May 2026 11:09:20 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[AWBS and XML-RPC Response Parsing Engineering]]></title>
			<link>https://www.artiteknoloji.com/showthread.php?tid=205</link>
			<pubDate>Fri, 21 Nov 2025 11:03:42 +0300</pubDate>
			<dc:creator><![CDATA[<a href="https://www.artiteknoloji.com/member.php?action=profile&uid=1">Wertomy®</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.artiteknoloji.com/showthread.php?tid=205</guid>
			<description><![CDATA[<div style="text-align: justify;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">In the world of web hosting automation, often overshadowed by software with modern and flashy interfaces, systems that operate with technical robustness and "old-school" code discipline always hold a distinct place. AWBS (Advanced Web Host Billing System), as one of the most established players in this ecosystem, offers the purest examples of PHP-based procedural coding and direct database manipulation. Today, we focus on a highly niche technical detail that is often overlooked but constitutes the heart of the system: the XML-RPC Response Parsing architecture in Domain Registration Operations.</span><br />
<br />
<!-- start: postbit_attachments_attachment -->
<div class="inline-flex items-center w-full px-4 py-3 space-x-4 text-sm rounded-md bg-slate-100 dark:bg-slate-800 post-attachment__item">
	<!-- start: attachment_icon -->
<img class="w-auto h-4" src="https://www.artiteknoloji.com/images/attachtypes/image.png" height="16" width="16" data-tippy-content="JPG Image" alt=".jpg" loading="lazy">
<!-- end: attachment_icon -->
	<span class="flex-1 truncate">
		<a href="attachment.php?aid=22" target="_blank" data-tippy-content="">Gemini_Generated_Image_keb0pwkeb0pwkeb0.jpg</a>
	</span>
	<span class="hidden sm:inline">(Dosya boyutu: 211.13 KB | İndirme sayısı: 0)</span>
</div>
<!-- end: postbit_attachments_attachment --><br />
<br />
Unlike modern RESTful APIs, many legacy registrars that AWBS integrates with, as well as the system's own core structure, often prefer XML or SOAP-based protocols for data communication. This creates a critical arena where an automation engineer's "Raw Data Processing" capability is tested. When a customer registers a domain or initiates a transfer via AWBS, the system sends an HTTP request (cURL) to the registrar in the background. The real engineering here lies in the process of converting the complex XML response returned by the operator into an array structure compatible with the AWBS database schema. If the "error codes" sent by the operator (e.g., 500 series connection errors or 400 series authorization errors) are not caught with correct "Exception Handling" during this parsing process, the order remains "Pending" in the system and turns into what we call a "Zombie Transaction" in the database—dead records that are neither completed nor failed.<br />
<br />
The registry_module.php structure found in the AWBS Module Development Kit (MDK) leaves a raw space for the developer to manipulate this data. The most critical point here is the Asynchronous State Checking mechanism. Especially in domain name transfers, the process can take 5 to 7 days to complete. AWBS uses a built-in task.php (Cron Job) file to manage this process. However, in a standard configuration, this cron file only checks that the process has "started." In a professional AWBS configuration, a special "Sync" function must be injected into this loop. This function should query the registrar's API every night asking, "What is the status of this domain?" and map the returned response to the domain_status column in the AWBS database. Without this cross-validation, the transaction might appear completed on the customer panel, while in the background (on the operator side), it may have been rejected due to an EPP code error.<br />
<br />
From a data security perspective, AWBS's session management and method of storing API keys require manual intervention according to modern encryption standards. API passwords kept in plain text or simple encryption in the database in the default installation need to be modified with server-side Key Management. This ensures that the modules, which are the system's gateway to the outside world, protect your registrar balance even in the event of a potential SQL Injection.<br />
<br />
Using or managing AWBS is akin to a master mechanic opening the hood of a car and manually adjusting the piston timing, rather than relying on ready-made "click-and-run" solutions. Correctly constructing the "XML Parser" logic and database synchronization loops in this system is that invisible, silent, yet vital mechanism that ensures the "Your Order is Ready" email is sent error-free and on time in a hosting operation with thousands of customers.</div>]]></description>
			<content:encoded><![CDATA[<div style="text-align: justify;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">In the world of web hosting automation, often overshadowed by software with modern and flashy interfaces, systems that operate with technical robustness and "old-school" code discipline always hold a distinct place. AWBS (Advanced Web Host Billing System), as one of the most established players in this ecosystem, offers the purest examples of PHP-based procedural coding and direct database manipulation. Today, we focus on a highly niche technical detail that is often overlooked but constitutes the heart of the system: the XML-RPC Response Parsing architecture in Domain Registration Operations.</span><br />
<br />
<!-- start: postbit_attachments_attachment -->
<div class="inline-flex items-center w-full px-4 py-3 space-x-4 text-sm rounded-md bg-slate-100 dark:bg-slate-800 post-attachment__item">
	<!-- start: attachment_icon -->
<img class="w-auto h-4" src="https://www.artiteknoloji.com/images/attachtypes/image.png" height="16" width="16" data-tippy-content="JPG Image" alt=".jpg" loading="lazy">
<!-- end: attachment_icon -->
	<span class="flex-1 truncate">
		<a href="attachment.php?aid=22" target="_blank" data-tippy-content="">Gemini_Generated_Image_keb0pwkeb0pwkeb0.jpg</a>
	</span>
	<span class="hidden sm:inline">(Dosya boyutu: 211.13 KB | İndirme sayısı: 0)</span>
</div>
<!-- end: postbit_attachments_attachment --><br />
<br />
Unlike modern RESTful APIs, many legacy registrars that AWBS integrates with, as well as the system's own core structure, often prefer XML or SOAP-based protocols for data communication. This creates a critical arena where an automation engineer's "Raw Data Processing" capability is tested. When a customer registers a domain or initiates a transfer via AWBS, the system sends an HTTP request (cURL) to the registrar in the background. The real engineering here lies in the process of converting the complex XML response returned by the operator into an array structure compatible with the AWBS database schema. If the "error codes" sent by the operator (e.g., 500 series connection errors or 400 series authorization errors) are not caught with correct "Exception Handling" during this parsing process, the order remains "Pending" in the system and turns into what we call a "Zombie Transaction" in the database—dead records that are neither completed nor failed.<br />
<br />
The registry_module.php structure found in the AWBS Module Development Kit (MDK) leaves a raw space for the developer to manipulate this data. The most critical point here is the Asynchronous State Checking mechanism. Especially in domain name transfers, the process can take 5 to 7 days to complete. AWBS uses a built-in task.php (Cron Job) file to manage this process. However, in a standard configuration, this cron file only checks that the process has "started." In a professional AWBS configuration, a special "Sync" function must be injected into this loop. This function should query the registrar's API every night asking, "What is the status of this domain?" and map the returned response to the domain_status column in the AWBS database. Without this cross-validation, the transaction might appear completed on the customer panel, while in the background (on the operator side), it may have been rejected due to an EPP code error.<br />
<br />
From a data security perspective, AWBS's session management and method of storing API keys require manual intervention according to modern encryption standards. API passwords kept in plain text or simple encryption in the database in the default installation need to be modified with server-side Key Management. This ensures that the modules, which are the system's gateway to the outside world, protect your registrar balance even in the event of a potential SQL Injection.<br />
<br />
Using or managing AWBS is akin to a master mechanic opening the hood of a car and manually adjusting the piston timing, rather than relying on ready-made "click-and-run" solutions. Correctly constructing the "XML Parser" logic and database synchronization loops in this system is that invisible, silent, yet vital mechanism that ensures the "Your Order is Ready" email is sent error-free and on time in a hosting operation with thousands of customers.</div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Legacy Otomasyonun Kalbi: AWBS ve XML-RPC Yanıt Ayrıştırma Mühendisliği]]></title>
			<link>https://www.artiteknoloji.com/showthread.php?tid=204</link>
			<pubDate>Fri, 21 Nov 2025 10:59:57 +0300</pubDate>
			<dc:creator><![CDATA[<a href="https://www.artiteknoloji.com/member.php?action=profile&uid=1">Wertomy®</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.artiteknoloji.com/showthread.php?tid=204</guid>
			<description><![CDATA[<div style="text-align: justify;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">Web hosting otomasyonu dünyasında, modern ve şaşalı arayüzlere sahip yazılımların gölgesinde kalsa da, teknik sağlamlığı ve "eski okul" (old-school) kod disipliniyle çalışan sistemlerin yeri her zaman ayrıdır. AWBS (Advanced Web Host Billing System), bu ekosistemin en köklü oyuncularından biri olarak, özellikle PHP tabanlı prosedürel kodlamanın ve doğrudan veritabanı manipülasyonunun en saf örneklerini sunar. Sistemin genellikle göz ardı edilen ancak otomasyonun kalbini oluşturan en niş teknik detayı ise, Alan Adı Kayıt Operasyonlarında XML-RPC Yanıt Ayrıştırma (Response Parsing) mimarisidir.</span><br />
<br />
<!-- start: postbit_attachments_attachment -->
<div class="inline-flex items-center w-full px-4 py-3 space-x-4 text-sm rounded-md bg-slate-100 dark:bg-slate-800 post-attachment__item">
	<!-- start: attachment_icon -->
<img class="w-auto h-4" src="https://www.artiteknoloji.com/images/attachtypes/image.png" height="16" width="16" data-tippy-content="JPG Image" alt=".jpg" loading="lazy">
<!-- end: attachment_icon -->
	<span class="flex-1 truncate">
		<a href="attachment.php?aid=21" target="_blank" data-tippy-content="">Gemini_Generated_Image_keb0pwkeb0pwkeb0.jpg</a>
	</span>
	<span class="hidden sm:inline">(Dosya boyutu: 211.13 KB | İndirme sayısı: 0)</span>
</div>
<!-- end: postbit_attachments_attachment --><br />
<br />
Modern RESTful API'lerin aksine, AWBS'in entegre olduğu birçok eski kayıt operatörü (Registrar) ve sistemin kendi çekirdek yapısı, veri iletişiminde genellikle XML veya SOAP tabanlı protokolleri tercih eder. Bu durum, bir otomasyon mühendisi için "Ham Veri İşleme" yeteneğinin sınandığı kritik bir alandır. Bir müşteri AWBS üzerinden bir alan adı tescil ettiğinde veya transfer başlattığında, sistem arka planda kayıt operatörüne bir HTTP isteği (cURL) gönderir. Buradaki asıl mühendislik, operatörden dönen karmaşık XML yanıtının, AWBS'in veritabanı şemasına uygun array (dizi) yapısına dönüştürülmesi sürecidir. Eğer bu ayrıştırma işlemi sırasında, operatörün gönderdiği "hata kodları" (örneğin; 500 serisi bağlantı hataları veya 400 serisi yetki hataları) doğru bir "Exception Handling" (İstisna Yönetimi) ile yakalanmazsa, sipariş sistemde "Askıda" (Pending) kalır ve veritabanında "Zombie Transaction" dediğimiz, ne tamamlanmış ne de başarısız olmuş ölü kayıtlara dönüşür.<br />
<br />
AWBS'in modül geliştirme kitinde (MDK) yer alan registry_module.php yapısı, geliştiriciye bu verileri manipüle etmesi için ham bir alan bırakır. Buradaki en kritik nokta, Asenkron Durum Kontrolü (Asynchronous State Checking) mekanizmasıdır. Özellikle alan adı transferlerinde, işlemin tamamlanması 5 ila 7 gün sürebilir. AWBS, bu süreci yönetmek için yerleşik bir task.php (Cron Job) dosyası kullanır. Ancak, standart bir yapılandırmada bu cron dosyası sadece işlemin "başladığını" kontrol eder. Profesyonel bir AWBS yapılandırmasında ise, bu döngünün içine özel bir "Sync" (Senkronizasyon) fonksiyonu enjekte edilmelidir. Bu fonksiyon, her gece kayıt operatörünün API'sine gidip "Bu domainin durumu nedir?" sorusunu sormalı ve dönen yanıtı AWBS veritabanındaki domain_status sütunu ile eşlemelidir. Bu çapraz doğrulama (cross-validation) yapılmadığında, müşteri panelinde transfer tamamlanmış görünürken, arka planda (operatör tarafında) işlem EPP kodu hatası yüzünden reddedilmiş olabilir.<br />
<br />
Veri güvenliği açısından bakıldığında, AWBS'in session (oturum) yönetimi ve API anahtarlarını saklama biçimi, modern şifreleme standartlarına göre manuel müdahale gerektirir. Varsayılan kurulumda veritabanında düz metin (plain text) veya basit şifreleme ile tutulan API şifrelerinin, sunucu taraflı bir anahtar yönetimi (Key Management) ile modifiye edilmesi gerekir. Bu, sistemin dış dünyaya açılan kapısı olan modüllerin, olası bir SQL Enjeksiyonu durumunda bile kayıt operatörü bakiyenizi korumasını sağlar.<br />
<br />
AWBS kullanmak veya yönetmek, hazır "tıkla-çalıştır" çözümlerden ziyade, bir motor ustasının arabanın kaputunu açıp pistonların zamanlamasını (timing) manuel olarak ayarlamasına benzer. Bu sistemdeki "XML Parser" mantığını ve veri tabanı senkronizasyon döngülerini doğru kurgulamak, binlerce müşterili bir hosting operasyonunda "Siparişiniz Hazır" e-postasının hatasız ve zamanında gitmesini sağlayan o görünmez, sessiz ama hayati mekanizmadır.</div>]]></description>
			<content:encoded><![CDATA[<div style="text-align: justify;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">Web hosting otomasyonu dünyasında, modern ve şaşalı arayüzlere sahip yazılımların gölgesinde kalsa da, teknik sağlamlığı ve "eski okul" (old-school) kod disipliniyle çalışan sistemlerin yeri her zaman ayrıdır. AWBS (Advanced Web Host Billing System), bu ekosistemin en köklü oyuncularından biri olarak, özellikle PHP tabanlı prosedürel kodlamanın ve doğrudan veritabanı manipülasyonunun en saf örneklerini sunar. Sistemin genellikle göz ardı edilen ancak otomasyonun kalbini oluşturan en niş teknik detayı ise, Alan Adı Kayıt Operasyonlarında XML-RPC Yanıt Ayrıştırma (Response Parsing) mimarisidir.</span><br />
<br />
<!-- start: postbit_attachments_attachment -->
<div class="inline-flex items-center w-full px-4 py-3 space-x-4 text-sm rounded-md bg-slate-100 dark:bg-slate-800 post-attachment__item">
	<!-- start: attachment_icon -->
<img class="w-auto h-4" src="https://www.artiteknoloji.com/images/attachtypes/image.png" height="16" width="16" data-tippy-content="JPG Image" alt=".jpg" loading="lazy">
<!-- end: attachment_icon -->
	<span class="flex-1 truncate">
		<a href="attachment.php?aid=21" target="_blank" data-tippy-content="">Gemini_Generated_Image_keb0pwkeb0pwkeb0.jpg</a>
	</span>
	<span class="hidden sm:inline">(Dosya boyutu: 211.13 KB | İndirme sayısı: 0)</span>
</div>
<!-- end: postbit_attachments_attachment --><br />
<br />
Modern RESTful API'lerin aksine, AWBS'in entegre olduğu birçok eski kayıt operatörü (Registrar) ve sistemin kendi çekirdek yapısı, veri iletişiminde genellikle XML veya SOAP tabanlı protokolleri tercih eder. Bu durum, bir otomasyon mühendisi için "Ham Veri İşleme" yeteneğinin sınandığı kritik bir alandır. Bir müşteri AWBS üzerinden bir alan adı tescil ettiğinde veya transfer başlattığında, sistem arka planda kayıt operatörüne bir HTTP isteği (cURL) gönderir. Buradaki asıl mühendislik, operatörden dönen karmaşık XML yanıtının, AWBS'in veritabanı şemasına uygun array (dizi) yapısına dönüştürülmesi sürecidir. Eğer bu ayrıştırma işlemi sırasında, operatörün gönderdiği "hata kodları" (örneğin; 500 serisi bağlantı hataları veya 400 serisi yetki hataları) doğru bir "Exception Handling" (İstisna Yönetimi) ile yakalanmazsa, sipariş sistemde "Askıda" (Pending) kalır ve veritabanında "Zombie Transaction" dediğimiz, ne tamamlanmış ne de başarısız olmuş ölü kayıtlara dönüşür.<br />
<br />
AWBS'in modül geliştirme kitinde (MDK) yer alan registry_module.php yapısı, geliştiriciye bu verileri manipüle etmesi için ham bir alan bırakır. Buradaki en kritik nokta, Asenkron Durum Kontrolü (Asynchronous State Checking) mekanizmasıdır. Özellikle alan adı transferlerinde, işlemin tamamlanması 5 ila 7 gün sürebilir. AWBS, bu süreci yönetmek için yerleşik bir task.php (Cron Job) dosyası kullanır. Ancak, standart bir yapılandırmada bu cron dosyası sadece işlemin "başladığını" kontrol eder. Profesyonel bir AWBS yapılandırmasında ise, bu döngünün içine özel bir "Sync" (Senkronizasyon) fonksiyonu enjekte edilmelidir. Bu fonksiyon, her gece kayıt operatörünün API'sine gidip "Bu domainin durumu nedir?" sorusunu sormalı ve dönen yanıtı AWBS veritabanındaki domain_status sütunu ile eşlemelidir. Bu çapraz doğrulama (cross-validation) yapılmadığında, müşteri panelinde transfer tamamlanmış görünürken, arka planda (operatör tarafında) işlem EPP kodu hatası yüzünden reddedilmiş olabilir.<br />
<br />
Veri güvenliği açısından bakıldığında, AWBS'in session (oturum) yönetimi ve API anahtarlarını saklama biçimi, modern şifreleme standartlarına göre manuel müdahale gerektirir. Varsayılan kurulumda veritabanında düz metin (plain text) veya basit şifreleme ile tutulan API şifrelerinin, sunucu taraflı bir anahtar yönetimi (Key Management) ile modifiye edilmesi gerekir. Bu, sistemin dış dünyaya açılan kapısı olan modüllerin, olası bir SQL Enjeksiyonu durumunda bile kayıt operatörü bakiyenizi korumasını sağlar.<br />
<br />
AWBS kullanmak veya yönetmek, hazır "tıkla-çalıştır" çözümlerden ziyade, bir motor ustasının arabanın kaputunu açıp pistonların zamanlamasını (timing) manuel olarak ayarlamasına benzer. Bu sistemdeki "XML Parser" mantığını ve veri tabanı senkronizasyon döngülerini doğru kurgulamak, binlerce müşterili bir hosting operasyonunda "Siparişiniz Hazır" e-postasının hatasız ve zamanında gitmesini sağlayan o görünmez, sessiz ama hayati mekanizmadır.</div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Authorization Engineering with Joomla Access Control Lists (ACL)]]></title>
			<link>https://www.artiteknoloji.com/showthread.php?tid=203</link>
			<pubDate>Fri, 21 Nov 2025 10:53:42 +0300</pubDate>
			<dc:creator><![CDATA[<a href="https://www.artiteknoloji.com/member.php?action=profile&uid=1">Wertomy®</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.artiteknoloji.com/showthread.php?tid=203</guid>
			<description><![CDATA[<div style="text-align: justify;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">As the scale of corporate web projects expands, the most critical expectation from content management systems becomes the precision regarding who can view and manage data. While a simple distinction between "Administrator" and "Visitor" might suffice for basic blog structures, complex organizations—such as universities, multinational corporations, or intranet portals—require a much more sophisticated solution. This is precisely where Joomla distinguishes itself sharply from its competitors: The Access Control List (ACL). This system is not merely a simple permission mechanism but a highly granular and hierarchical authorization architecture capable of drilling down to the very molecules of the site. Joomla ACL empowers the webmaster not only to segregate users into groups but also to define, in minute detail, which actions (create, edit, delete, publish, edit own) these groups can perform on specific components, categories, or individual articles.</span><br />
<br />
<!-- start: postbit_attachments_attachment -->
<div class="inline-flex items-center w-full px-4 py-3 space-x-4 text-sm rounded-md bg-slate-100 dark:bg-slate-800 post-attachment__item">
	<!-- start: attachment_icon -->
<img class="w-auto h-4" src="https://www.artiteknoloji.com/images/attachtypes/image.png" height="16" width="16" data-tippy-content="JPG Image" alt=".jpg" loading="lazy">
<!-- end: attachment_icon -->
	<span class="flex-1 truncate">
		<a href="attachment.php?aid=20" target="_blank" data-tippy-content="">Gemini_Generated_Image_6njh816njh816njh.jpg</a>
	</span>
	<span class="hidden sm:inline">(Dosya boyutu: 247.96 KB | İndirme sayısı: 0)</span>
</div>
<!-- end: postbit_attachments_attachment --><br />
<br />
The fundamental logic of the ACL system rests on an inheritance-based tree structure, and if this structure is not constructed correctly, the system can descend into chaos. In Joomla, permissions default to starting from the top-most group (Public) and flow downwards to child groups. While the "Public" group is typically the root point where all permissions are denied, these restrictions are loosened as one descends into subgroups (Registered, Editor, Publisher, etc.). However, the most vital element to consider in a professional configuration is the sharp distinction between the "Allowed" and "Denied" commands. The "Denied" command is such a dominant force in the hierarchy that if this option is selected in a parent group or global setting, that door remains locked regardless of how many permissions are granted to child groups. Therefore, professionals seeking to create a flexible and extensible authorization matrix generally avoid using the "Denied" option; instead, they follow the strategy of unlocking authority by strategically converting the default "Inherited" status to "Allowed."<br />
<br />
This architecture does not merely control whether users can log in to the site; it also enables the creation of a sophisticated content production workflow. For instance, in a news portal scenario, intern editors may be permitted to enter content only into the "News" category, while the authority to publish this content (Edit State) is withheld from them. Thus, the intern writes and saves the article, but the "Publish" button remains inactive on their screen. The authority to publish the article is granted to the "Editor-in-Chief" group in a higher hierarchy. This transforms Joomla from being merely a website infrastructure into a corporate business process management platform. Thanks to these permissions, which can be defined separately for each component (e.g., Contact forms, Modules) and each category, it is possible to create isolated workspaces where the Human Resources department can only edit "Career" pages, while the IT team can only intervene in technical articles without interfering with one another.<br />
<br />
Ultimately, Joomla's ACL system serves as a digital constitution for maintaining database security and operational integrity. The authorization strategy must be mapped out on paper before the project even reaches the coding phase, with user group boundaries clearly delineated. A poorly configured ACL can lead to risky scenarios where even a Super User might accidentally lock themselves out, whereas a correctly architected system creates the gears of a massive digital factory where hundreds of employees can produce content simultaneously, flawlessly, and securely.</div>]]></description>
			<content:encoded><![CDATA[<div style="text-align: justify;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">As the scale of corporate web projects expands, the most critical expectation from content management systems becomes the precision regarding who can view and manage data. While a simple distinction between "Administrator" and "Visitor" might suffice for basic blog structures, complex organizations—such as universities, multinational corporations, or intranet portals—require a much more sophisticated solution. This is precisely where Joomla distinguishes itself sharply from its competitors: The Access Control List (ACL). This system is not merely a simple permission mechanism but a highly granular and hierarchical authorization architecture capable of drilling down to the very molecules of the site. Joomla ACL empowers the webmaster not only to segregate users into groups but also to define, in minute detail, which actions (create, edit, delete, publish, edit own) these groups can perform on specific components, categories, or individual articles.</span><br />
<br />
<!-- start: postbit_attachments_attachment -->
<div class="inline-flex items-center w-full px-4 py-3 space-x-4 text-sm rounded-md bg-slate-100 dark:bg-slate-800 post-attachment__item">
	<!-- start: attachment_icon -->
<img class="w-auto h-4" src="https://www.artiteknoloji.com/images/attachtypes/image.png" height="16" width="16" data-tippy-content="JPG Image" alt=".jpg" loading="lazy">
<!-- end: attachment_icon -->
	<span class="flex-1 truncate">
		<a href="attachment.php?aid=20" target="_blank" data-tippy-content="">Gemini_Generated_Image_6njh816njh816njh.jpg</a>
	</span>
	<span class="hidden sm:inline">(Dosya boyutu: 247.96 KB | İndirme sayısı: 0)</span>
</div>
<!-- end: postbit_attachments_attachment --><br />
<br />
The fundamental logic of the ACL system rests on an inheritance-based tree structure, and if this structure is not constructed correctly, the system can descend into chaos. In Joomla, permissions default to starting from the top-most group (Public) and flow downwards to child groups. While the "Public" group is typically the root point where all permissions are denied, these restrictions are loosened as one descends into subgroups (Registered, Editor, Publisher, etc.). However, the most vital element to consider in a professional configuration is the sharp distinction between the "Allowed" and "Denied" commands. The "Denied" command is such a dominant force in the hierarchy that if this option is selected in a parent group or global setting, that door remains locked regardless of how many permissions are granted to child groups. Therefore, professionals seeking to create a flexible and extensible authorization matrix generally avoid using the "Denied" option; instead, they follow the strategy of unlocking authority by strategically converting the default "Inherited" status to "Allowed."<br />
<br />
This architecture does not merely control whether users can log in to the site; it also enables the creation of a sophisticated content production workflow. For instance, in a news portal scenario, intern editors may be permitted to enter content only into the "News" category, while the authority to publish this content (Edit State) is withheld from them. Thus, the intern writes and saves the article, but the "Publish" button remains inactive on their screen. The authority to publish the article is granted to the "Editor-in-Chief" group in a higher hierarchy. This transforms Joomla from being merely a website infrastructure into a corporate business process management platform. Thanks to these permissions, which can be defined separately for each component (e.g., Contact forms, Modules) and each category, it is possible to create isolated workspaces where the Human Resources department can only edit "Career" pages, while the IT team can only intervene in technical articles without interfering with one another.<br />
<br />
Ultimately, Joomla's ACL system serves as a digital constitution for maintaining database security and operational integrity. The authorization strategy must be mapped out on paper before the project even reaches the coding phase, with user group boundaries clearly delineated. A poorly configured ACL can lead to risky scenarios where even a Super User might accidentally lock themselves out, whereas a correctly architected system creates the gears of a massive digital factory where hundreds of employees can produce content simultaneously, flawlessly, and securely.</div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Joomla Erişim Kontrol Listesi (ACL) ile Yetkilendirme Mühendisliği]]></title>
			<link>https://www.artiteknoloji.com/showthread.php?tid=202</link>
			<pubDate>Fri, 21 Nov 2025 10:51:40 +0300</pubDate>
			<dc:creator><![CDATA[<a href="https://www.artiteknoloji.com/member.php?action=profile&uid=1">Wertomy®</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.artiteknoloji.com/showthread.php?tid=202</guid>
			<description><![CDATA[<div style="text-align: justify;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">Kurumsal web projelerinin ölçeği büyüdükçe, içerik yönetim sistemlerinden beklenen en kritik özellik, verinin kim tarafından görülebileceği ve kim tarafından yönetilebileceği konusundaki hassasiyettir. Basit blog yapılarında "Yönetici" ve "Ziyaretçi" ayrımı yeterli olabilirken, karmaşık organizasyon şemalarına sahip şirketler, üniversiteler veya intranet portalları için çok daha sofistike bir çözüm gerekir. Joomla'nın rakiplerinden en kesin çizgilerle ayrıldığı nokta tam da burasıdır: Erişim Kontrol Listesi (ACL - Access Control List). Bu sistem, basit bir izin mekanizmasından ziyade, sitenin her bir molekülüne kadar inebilen, son derece granüler ve hiyerarşik bir yetkilendirme mimarisidir. Joomla ACL, web yöneticisine, kullanıcıları sadece gruplara ayırma imkanı değil, aynı zamanda bu grupların hangi bileşen, kategori veya makale üzerinde, hangi eylemleri (oluşturma, düzenleme, silme, yayınlama, kendi verisini düzenleme) gerçekleştirebileceğini en ince ayrıntısına kadar tanımlama gücü verir.</span><br />
<br />
<!-- start: postbit_attachments_attachment -->
<div class="inline-flex items-center w-full px-4 py-3 space-x-4 text-sm rounded-md bg-slate-100 dark:bg-slate-800 post-attachment__item">
	<!-- start: attachment_icon -->
<img class="w-auto h-4" src="https://www.artiteknoloji.com/images/attachtypes/image.png" height="16" width="16" data-tippy-content="JPG Image" alt=".jpg" loading="lazy">
<!-- end: attachment_icon -->
	<span class="flex-1 truncate">
		<a href="attachment.php?aid=19" target="_blank" data-tippy-content="">Gemini_Generated_Image_6njh816njh816njh.jpg</a>
	</span>
	<span class="hidden sm:inline">(Dosya boyutu: 247.96 KB | İndirme sayısı: 0)</span>
</div>
<!-- end: postbit_attachments_attachment --><br />
<br />
ACL sisteminin temel mantığı, kalıtımsal bir ağaç yapısına dayanır ve bu yapı doğru kurgulanmadığında sistem karmaşaya sürüklenebilir. Joomla’da izinler varsayılan olarak en üst gruptan (Public) başlar ve alt gruplara doğru akar. "Public" (Genel) grubu, genellikle tüm izinlerin reddedildiği kök noktadır ve siz alt gruplara (Registered, Editor, Publisher vb.) indikçe bu kısıtlamaları gevşetirsiniz. Ancak profesyonel bir yapılandırmada dikkat edilmesi gereken en hayati unsur, "İzin Verildi" (Allowed) ve "Engellendi" (Denied) komutları arasındaki keskin farktır. "Engellendi" komutu, hiyerarşide o kadar baskın bir güçtür ki, bir üst grupta veya global ayarda bu seçeneği işaretlediğinizde, alt gruplara ne kadar izin verirseniz verin, o kapı kilitli kalır. Bu nedenle, esnek ve genişletilebilir bir yetkilendirme matrisi oluşturmak isteyen profesyoneller, genellikle "Engellendi" seçeneğini kullanmaktan kaçınır; bunun yerine varsayılan olarak gelen "Devralındı" (Inherited) statüsünü stratejik bir şekilde "İzin Verildi"ye dönüştürerek yetkiyi açma yolunu izlerler.<br />
<br />
Bu mimari sadece kullanıcıların siteye giriş yapıp yapamayacağını kontrol etmekle kalmaz, aynı zamanda bir içerik üretim iş akışı (workflow) oluşturulmasına da olanak tanır. Örneğin, bir haber portalı senaryosunda, stajyer editörlerin sadece "Haberler" kategorisine içerik girmesine izin verilirken, bu içerikleri yayına alma (Yayınlama Durumu/Edit State) yetkisi ellerinden alınabilir. Böylece stajyer yazıyı yazar ve kaydeder, ancak "Yayınla" butonu onun ekranında aktif değildir. Yazıyı yayına alma yetkisi, bir üst hiyerarşideki "Baş Editör" grubuna verilir. Bu, Joomla'yı sadece bir web sitesi altyapısı olmaktan çıkarıp, kurumsal bir iş süreci yönetim platformuna dönüştürür. Her bir bileşen (Örn: İletişim formları, Modüller) ve her bir kategori için ayrı ayrı tanımlanabilen bu izinler sayesinde, İnsan Kaynakları departmanının sadece "Kariyer" sayfalarını düzenleyebildiği, Bilgi İşlem ekibinin ise sadece teknik makalelere müdahale edebildiği, birbirine karışmayan izole çalışma alanları yaratmak mümkündür.<br />
<br />
Sonuç olarak, Joomla'nın ACL sistemi, veritabanı güvenliğini ve operasyonel bütünlüğü korumak adına dijital bir anayasa görevi görür. Yetkilendirme stratejisi, proje daha kodlama aşamasına gelmeden önce kağıt üzerinde planlanmalı ve kullanıcı gruplarının sınırları net bir şekilde çizilmelidir. Yanlış yapılandırılmış bir ACL, süper yöneticinin (Super User) bile kendi sitesine erişimini kısıtlayabileceği (lock-out) riskli senaryolar doğurabilirken; doğru kurgulanmış bir sistem, yüzlerce çalışanın aynı anda, hatasız ve güvenli bir şekilde içerik ürettiği devasa bir dijital fabrikanın tıkır tıkır işleyen dişlilerini oluşturur.</div>]]></description>
			<content:encoded><![CDATA[<div style="text-align: justify;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">Kurumsal web projelerinin ölçeği büyüdükçe, içerik yönetim sistemlerinden beklenen en kritik özellik, verinin kim tarafından görülebileceği ve kim tarafından yönetilebileceği konusundaki hassasiyettir. Basit blog yapılarında "Yönetici" ve "Ziyaretçi" ayrımı yeterli olabilirken, karmaşık organizasyon şemalarına sahip şirketler, üniversiteler veya intranet portalları için çok daha sofistike bir çözüm gerekir. Joomla'nın rakiplerinden en kesin çizgilerle ayrıldığı nokta tam da burasıdır: Erişim Kontrol Listesi (ACL - Access Control List). Bu sistem, basit bir izin mekanizmasından ziyade, sitenin her bir molekülüne kadar inebilen, son derece granüler ve hiyerarşik bir yetkilendirme mimarisidir. Joomla ACL, web yöneticisine, kullanıcıları sadece gruplara ayırma imkanı değil, aynı zamanda bu grupların hangi bileşen, kategori veya makale üzerinde, hangi eylemleri (oluşturma, düzenleme, silme, yayınlama, kendi verisini düzenleme) gerçekleştirebileceğini en ince ayrıntısına kadar tanımlama gücü verir.</span><br />
<br />
<!-- start: postbit_attachments_attachment -->
<div class="inline-flex items-center w-full px-4 py-3 space-x-4 text-sm rounded-md bg-slate-100 dark:bg-slate-800 post-attachment__item">
	<!-- start: attachment_icon -->
<img class="w-auto h-4" src="https://www.artiteknoloji.com/images/attachtypes/image.png" height="16" width="16" data-tippy-content="JPG Image" alt=".jpg" loading="lazy">
<!-- end: attachment_icon -->
	<span class="flex-1 truncate">
		<a href="attachment.php?aid=19" target="_blank" data-tippy-content="">Gemini_Generated_Image_6njh816njh816njh.jpg</a>
	</span>
	<span class="hidden sm:inline">(Dosya boyutu: 247.96 KB | İndirme sayısı: 0)</span>
</div>
<!-- end: postbit_attachments_attachment --><br />
<br />
ACL sisteminin temel mantığı, kalıtımsal bir ağaç yapısına dayanır ve bu yapı doğru kurgulanmadığında sistem karmaşaya sürüklenebilir. Joomla’da izinler varsayılan olarak en üst gruptan (Public) başlar ve alt gruplara doğru akar. "Public" (Genel) grubu, genellikle tüm izinlerin reddedildiği kök noktadır ve siz alt gruplara (Registered, Editor, Publisher vb.) indikçe bu kısıtlamaları gevşetirsiniz. Ancak profesyonel bir yapılandırmada dikkat edilmesi gereken en hayati unsur, "İzin Verildi" (Allowed) ve "Engellendi" (Denied) komutları arasındaki keskin farktır. "Engellendi" komutu, hiyerarşide o kadar baskın bir güçtür ki, bir üst grupta veya global ayarda bu seçeneği işaretlediğinizde, alt gruplara ne kadar izin verirseniz verin, o kapı kilitli kalır. Bu nedenle, esnek ve genişletilebilir bir yetkilendirme matrisi oluşturmak isteyen profesyoneller, genellikle "Engellendi" seçeneğini kullanmaktan kaçınır; bunun yerine varsayılan olarak gelen "Devralındı" (Inherited) statüsünü stratejik bir şekilde "İzin Verildi"ye dönüştürerek yetkiyi açma yolunu izlerler.<br />
<br />
Bu mimari sadece kullanıcıların siteye giriş yapıp yapamayacağını kontrol etmekle kalmaz, aynı zamanda bir içerik üretim iş akışı (workflow) oluşturulmasına da olanak tanır. Örneğin, bir haber portalı senaryosunda, stajyer editörlerin sadece "Haberler" kategorisine içerik girmesine izin verilirken, bu içerikleri yayına alma (Yayınlama Durumu/Edit State) yetkisi ellerinden alınabilir. Böylece stajyer yazıyı yazar ve kaydeder, ancak "Yayınla" butonu onun ekranında aktif değildir. Yazıyı yayına alma yetkisi, bir üst hiyerarşideki "Baş Editör" grubuna verilir. Bu, Joomla'yı sadece bir web sitesi altyapısı olmaktan çıkarıp, kurumsal bir iş süreci yönetim platformuna dönüştürür. Her bir bileşen (Örn: İletişim formları, Modüller) ve her bir kategori için ayrı ayrı tanımlanabilen bu izinler sayesinde, İnsan Kaynakları departmanının sadece "Kariyer" sayfalarını düzenleyebildiği, Bilgi İşlem ekibinin ise sadece teknik makalelere müdahale edebildiği, birbirine karışmayan izole çalışma alanları yaratmak mümkündür.<br />
<br />
Sonuç olarak, Joomla'nın ACL sistemi, veritabanı güvenliğini ve operasyonel bütünlüğü korumak adına dijital bir anayasa görevi görür. Yetkilendirme stratejisi, proje daha kodlama aşamasına gelmeden önce kağıt üzerinde planlanmalı ve kullanıcı gruplarının sınırları net bir şekilde çizilmelidir. Yanlış yapılandırılmış bir ACL, süper yöneticinin (Super User) bile kendi sitesine erişimini kısıtlayabileceği (lock-out) riskli senaryolar doğurabilirken; doğru kurgulanmış bir sistem, yüzlerce çalışanın aynı anda, hatasız ve güvenli bir şekilde içerik ürettiği devasa bir dijital fabrikanın tıkır tıkır işleyen dişlilerini oluşturur.</div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Joomla'nın Gizli Gücü: MVC Mimarisi ve Şablon Geçersiz Kılma(Template Overrides)]]></title>
			<link>https://www.artiteknoloji.com/showthread.php?tid=201</link>
			<pubDate>Fri, 21 Nov 2025 10:31:05 +0300</pubDate>
			<dc:creator><![CDATA[<a href="https://www.artiteknoloji.com/member.php?action=profile&uid=1">Wertomy®</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.artiteknoloji.com/showthread.php?tid=201</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">Joomla'yı ilk kez kurduğunuzda, karşınızda standart bir yapı, belirli bir düzen içinde sunulan makaleler ve modüller bulursunuz. Birçok yeni başlayan kullanıcı veya deneyimsiz geliştirici, bu standart görünümü müşterinin taleplerine göre değiştirmek istediğinde ölümcül bir hata yapar: Doğrudan Joomla'nın çekirdek dosyalarını (core files) düzenlemeye başlar. Örneğin, bir makalenin başlığının yerini değiştirmek için /components/com_content/... yolundaki PHP dosyalarını açıp kodları değiştirmek, o an için sorunu çözmüş gibi görünse de, aslında saatli bir bomba yerleştirmektir. Çünkü Joomla'ya bir güvenlik veya özellik güncellemesi geldiğinde, sistem bu çekirdek dosyaları yenileriyle değiştirecek ve yapılan tüm özel değişiklikler saniyeler içinde silinip gidecektir. İşte bu noktada, Joomla'nın profesyonel mimarisi devreye girer ve bize "Template Overrides" (Şablon Geçersiz Kılma) adı verilen muazzam bir esneklik mekanizması sunar. Bu mekanizmayı anlamak, standart bir Joomla kullanıcısı ile gerçek bir Joomla geliştiricisi arasındaki temel farkı oluşturur.</span><br />
<br />
<!-- start: postbit_attachments_attachment -->
<div class="inline-flex items-center w-full px-4 py-3 space-x-4 text-sm rounded-md bg-slate-100 dark:bg-slate-800 post-attachment__item">
	<!-- start: attachment_icon -->
<img class="w-auto h-4" src="https://www.artiteknoloji.com/images/attachtypes/image.png" height="16" width="16" data-tippy-content="JPG Image" alt=".jpg" loading="lazy">
<!-- end: attachment_icon -->
	<span class="flex-1 truncate">
		<a href="attachment.php?aid=18" target="_blank" data-tippy-content="">Gemini_Generated_Image_6njh816njh816njh.jpg</a>
	</span>
	<span class="hidden sm:inline">(Dosya boyutu: 247.96 KB | İndirme sayısı: 0)</span>
</div>
<!-- end: postbit_attachments_attachment --><br />
<br />
Bu esnekliğin temelinde, Joomla'nın üzerine inşa edildiği güçlü MVC (Model-View-Controller) tasarım deseni yatar. MVC, modern yazılım geliştirmede bir standarttır ve uygulamanın iş mantığını, veri katmanını ve sunum katmanını birbirinden kesin çizgilerle ayırır. Joomla dünyasında Model, veritabanı ile konuşan, verileri çeken ve işleyen kısımdır; "en son 5 makaleyi getir" emrini o yerine getirir. Controller, trafiği yöneten polistir; kullanıcının hangi linke tıkladığını analiz eder ve hangi modelin çalışması gerektiğine karar verir. View (Görünüm) ise, modelden gelen ham veriyi (örneğin, makale başlığı, metni, yazar adı) alır ve bunu HTML olarak ekrana nasıl basacağını belirler. Joomla'nın güzelliği, bu "View" katmanını, yani sunum dosyasını, çekirdek yapıdan tamamen koparıp kendi kullandığınız temanın içine güvenli bir şekilde kopyalamanıza izin vermesidir. Sistem bir sayfayı oluştururken önce sizin temanızın içindeki özel dosyaya bakar; eğer orada bir özelleştirme bulursa onu kullanır, bulamazsa çekirdek dosyaya döner.<br />
<br />
Pratikte "Template Override" işlemi, Joomla'nın dosya hiyerarşisini anlamayı gerektirir ama mantığı son derece basittir. Diyelim ki standart makale görünümünde yazar adının, makale başlığının üzerinde görünmesini istiyorsunuz. Bunun için çekirdek dosya olan /components/com_content/views/article/tmpl/default.php dosyasını düzenlemek yerine, bu dosyayı kopyalayıp aktif kullandığınız temanın içine, /templates/SİZİN_TEMANIZ/html/com_content/article/default.php yoluna yapıştırırsınız. Artık bu yeni konumdaki dosya üzerinde istediğiniz HTML veya PHP değişikliğini özgürce yapabilirsiniz. Joomla, bir makaleyi göstermesi gerektiğinde, akıllı bir şekilde önce sizin temanızdaki /html klasörüne bakacak ve sizin düzenlediğiniz dosyayı "öncelikli" (override) olarak kabul edecektir. Bu yöntem sayesinde, Joomla çekirdeğini istediğiniz kadar güncelleyin, yaptığınız tasarımsal değişiklikler asla kaybolmaz, çünkü onlar güvenli bir alanda, temanızın koruması altında yaşamaya devam eder. Bu, sadece bir bileşenin görünümünü değil, modüllerin hatta basit bir "devamını oku" butonunun HTML çıktısını bile tamamen yeniden yazmanıza olanak tanıyan sınırsız bir özgürlük alanıdır.]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">Joomla'yı ilk kez kurduğunuzda, karşınızda standart bir yapı, belirli bir düzen içinde sunulan makaleler ve modüller bulursunuz. Birçok yeni başlayan kullanıcı veya deneyimsiz geliştirici, bu standart görünümü müşterinin taleplerine göre değiştirmek istediğinde ölümcül bir hata yapar: Doğrudan Joomla'nın çekirdek dosyalarını (core files) düzenlemeye başlar. Örneğin, bir makalenin başlığının yerini değiştirmek için /components/com_content/... yolundaki PHP dosyalarını açıp kodları değiştirmek, o an için sorunu çözmüş gibi görünse de, aslında saatli bir bomba yerleştirmektir. Çünkü Joomla'ya bir güvenlik veya özellik güncellemesi geldiğinde, sistem bu çekirdek dosyaları yenileriyle değiştirecek ve yapılan tüm özel değişiklikler saniyeler içinde silinip gidecektir. İşte bu noktada, Joomla'nın profesyonel mimarisi devreye girer ve bize "Template Overrides" (Şablon Geçersiz Kılma) adı verilen muazzam bir esneklik mekanizması sunar. Bu mekanizmayı anlamak, standart bir Joomla kullanıcısı ile gerçek bir Joomla geliştiricisi arasındaki temel farkı oluşturur.</span><br />
<br />
<!-- start: postbit_attachments_attachment -->
<div class="inline-flex items-center w-full px-4 py-3 space-x-4 text-sm rounded-md bg-slate-100 dark:bg-slate-800 post-attachment__item">
	<!-- start: attachment_icon -->
<img class="w-auto h-4" src="https://www.artiteknoloji.com/images/attachtypes/image.png" height="16" width="16" data-tippy-content="JPG Image" alt=".jpg" loading="lazy">
<!-- end: attachment_icon -->
	<span class="flex-1 truncate">
		<a href="attachment.php?aid=18" target="_blank" data-tippy-content="">Gemini_Generated_Image_6njh816njh816njh.jpg</a>
	</span>
	<span class="hidden sm:inline">(Dosya boyutu: 247.96 KB | İndirme sayısı: 0)</span>
</div>
<!-- end: postbit_attachments_attachment --><br />
<br />
Bu esnekliğin temelinde, Joomla'nın üzerine inşa edildiği güçlü MVC (Model-View-Controller) tasarım deseni yatar. MVC, modern yazılım geliştirmede bir standarttır ve uygulamanın iş mantığını, veri katmanını ve sunum katmanını birbirinden kesin çizgilerle ayırır. Joomla dünyasında Model, veritabanı ile konuşan, verileri çeken ve işleyen kısımdır; "en son 5 makaleyi getir" emrini o yerine getirir. Controller, trafiği yöneten polistir; kullanıcının hangi linke tıkladığını analiz eder ve hangi modelin çalışması gerektiğine karar verir. View (Görünüm) ise, modelden gelen ham veriyi (örneğin, makale başlığı, metni, yazar adı) alır ve bunu HTML olarak ekrana nasıl basacağını belirler. Joomla'nın güzelliği, bu "View" katmanını, yani sunum dosyasını, çekirdek yapıdan tamamen koparıp kendi kullandığınız temanın içine güvenli bir şekilde kopyalamanıza izin vermesidir. Sistem bir sayfayı oluştururken önce sizin temanızın içindeki özel dosyaya bakar; eğer orada bir özelleştirme bulursa onu kullanır, bulamazsa çekirdek dosyaya döner.<br />
<br />
Pratikte "Template Override" işlemi, Joomla'nın dosya hiyerarşisini anlamayı gerektirir ama mantığı son derece basittir. Diyelim ki standart makale görünümünde yazar adının, makale başlığının üzerinde görünmesini istiyorsunuz. Bunun için çekirdek dosya olan /components/com_content/views/article/tmpl/default.php dosyasını düzenlemek yerine, bu dosyayı kopyalayıp aktif kullandığınız temanın içine, /templates/SİZİN_TEMANIZ/html/com_content/article/default.php yoluna yapıştırırsınız. Artık bu yeni konumdaki dosya üzerinde istediğiniz HTML veya PHP değişikliğini özgürce yapabilirsiniz. Joomla, bir makaleyi göstermesi gerektiğinde, akıllı bir şekilde önce sizin temanızdaki /html klasörüne bakacak ve sizin düzenlediğiniz dosyayı "öncelikli" (override) olarak kabul edecektir. Bu yöntem sayesinde, Joomla çekirdeğini istediğiniz kadar güncelleyin, yaptığınız tasarımsal değişiklikler asla kaybolmaz, çünkü onlar güvenli bir alanda, temanızın koruması altında yaşamaya devam eder. Bu, sadece bir bileşenin görünümünü değil, modüllerin hatta basit bir "devamını oku" butonunun HTML çıktısını bile tamamen yeniden yazmanıza olanak tanıyan sınırsız bir özgürlük alanıdır.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Joomla Güvenlik Mimarisi: Dijital Kale İnşa Etmek ve Sıkılaştırma  Stratejisi]]></title>
			<link>https://www.artiteknoloji.com/showthread.php?tid=200</link>
			<pubDate>Fri, 21 Nov 2025 10:22:54 +0300</pubDate>
			<dc:creator><![CDATA[<a href="https://www.artiteknoloji.com/member.php?action=profile&uid=1">Wertomy®</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.artiteknoloji.com/showthread.php?tid=200</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">Joomla'nın varsayılan yönetim paneli yolu (/administrator), saldırganların ilk denediği kapıdır. Bu kapıyı sadece gizlemek değil, üzerine kilitler eklemek gerekir. Standart bir kullanıcı adı ve şifre kombinasyonu, modern "brute-force" (kaba kuvvet) saldırıları karşısında artık yeterli bir koruma sağlamamaktadır.</span><br />
<br />
<!-- start: postbit_attachments_attachment -->
<div class="inline-flex items-center w-full px-4 py-3 space-x-4 text-sm rounded-md bg-slate-100 dark:bg-slate-800 post-attachment__item">
	<!-- start: attachment_icon -->
<img class="w-auto h-4" src="https://www.artiteknoloji.com/images/attachtypes/image.png" height="16" width="16" data-tippy-content="JPG Image" alt=".jpg" loading="lazy">
<!-- end: attachment_icon -->
	<span class="flex-1 truncate">
		<a href="attachment.php?aid=17" target="_blank" data-tippy-content="">Gemini_Generated_Image_6njh816njh816njh.jpg</a>
	</span>
	<span class="hidden sm:inline">(Dosya boyutu: 247.96 KB | İndirme sayısı: 0)</span>
</div>
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Çift Faktörlü Kimlik Doğrulama (2FA):</span> Joomla çekirdeğinde yerleşik olarak gelen İki Adımlı Doğrulama (Two-Factor Authentication), güvenliğin olmazsa olmazıdır. Bu özellik aktif edildiğinde, bir saldırgan yönetici şifrenizi ele geçirse bile, fiziksel cihazınızdaki (Google Authenticator veya YubiKey gibi) anlık kod olmadan panele erişemez. Bu, yetkisiz erişim riskini matematiksel olarak sıfıra yaklaştırır.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">URL Maskeleme ve IP Kısıtlaması:</span> Yönetim paneli URL'sini değiştirmek (örneğin; /yonetim-giris yapmak) "güvenlik yoluyla gizlilik" (security through obscurity) sağlasa da, tek başına yeterli değildir. Daha profesyonel bir yaklaşım, .htaccess dosyası üzerinden /administrator dizinine sadece belirli statik IP adreslerinden erişim izni vermektir. Böylece dünyanın geri kalanı panel giriş sayfanızı göremez bile.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Dosya ve Dizin İzinlerinin Mikroskobik Yönetimi</span><br />
<br />
Sunucu tarafında yapılan en büyük hatalardan biri, yazma izinlerinin gereğinden fazla gevşek bırakılmasıdır. Joomla'nın dosya sistemi, "En Az Ayrıcalık İlkesi"ne (Principle of Least Privilege) göre yapılandırılmalıdır.<br />
<br />
İdeal senaryoda dizinler için 755, dosyalar için 644 izinleri standarttır. Ancak asıl kritik nokta configuration.php dosyasıdır. Veritabanı bağlantı bilgilerini ve global ayarları barındıran bu dosya, kurulum veya düzenleme bittikten sonra mutlaka 444 (salt okunur) moduna alınmalıdır. Bu işlem, bir saldırganın sisteme sızması durumunda bile sitenizin ana konfigürasyonunu değiştirmesini veya veritabanı şifrelerinizi okumasını teknik olarak zorlaştırır.<br />
<br />
Ayrıca, yükleme klasörleri dışındaki hiçbir dizine PHP çalıştırma izni verilmemelidir. Saldırganlar genellikle /images veya /tmp klasörlerine zararlı PHP dosyaları yükleyerek arka kapı (backdoor) oluşturmaya çalışırlar. Sunucu yapılandırmasında bu dizinlerde script çalıştırılmasını engellemek, bu vektörü tamamen kapatır.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Veritabanı İzolasyonu ve Önek (Prefix) Stratejisi</span><br />
<br />
SQL Enjeksiyonu (SQL Injection), web uygulamalarındaki en yaygın ve yıkıcı saldırı türlerinden biridir. Joomla kurulumu sırasında varsayılan olarak gelen veritabanı tablosu öneki (genellikle jos_ veya rastgele atanan bir dize) saldırganlar tarafından tahmin edilebilir.<br />
<br />
Güvenlik sıkılaştırmasının bir parçası olarak, veritabanı tablo öneklerinin tamamen rastgele ve karmaşık karakter dizileriyle (örneğin; xyz74_) değiştirilmesi gerekir. Bu işlem, otomatik saldırı botlarının standart tablo isimleri üzerinden (örneğin; jos_users) yönetici tablosuna sorgu göndermesini engeller. Eğer mevcut bir siteniz varsa, Joomla yönetim panelindeki veya güvenlik eklentilerindeki araçları kullanarak bu öneki canlı sistemde güvenle değiştirebilirsiniz.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Eklenti Hijyeni ve Tedarik Zinciri Güvenliği</span><br />
<br />
Joomla'nın gücü eklentilerinden gelir, ancak en büyük güvenlik açıkları da genellikle üçüncü taraf yazılımlardan kaynaklanır. "Nulled" (kırılmış/korsan) temalar veya eklentiler kullanmak, evin anahtarını hırsıza kendi elinizle teslim etmekle eşdeğerdir. Bu tür dosyaların içine genellikle gizli "backdoor" kodları veya kripto para madenciliği yapan scriptler gömülüdür.<br />
<br />
Profesyonel bir Joomla yöneticisi, kullanılmayan tüm eklentileri sadece devre dışı bırakmakla kalmaz, sistemden tamamen kaldırır. Güncellenmeyen, geliştiricisi tarafından desteği kesilmiş "terk edilmiş" eklentiler (abandonware), sisteminizde saatli bomba etkisi yaratır. Eklenti envanterinizi düzenli olarak denetlemek ve sadece güvenilir kaynaklardan (Joomla Extensions Directory gibi) indirme yapmak, tedarik zinciri saldırılarını minimize eder.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Web Uygulaması Güvenlik Duvarı (WAF) Entegrasyonu</span><br />
<br />
Sunucu tabanlı güvenlik önlemlerine ek olarak, uygulama seviyesinde çalışan bir Web Application Firewall (WAF) kullanmak, trafiği analiz etmek için kritik öneme sahiptir. Admin Tools veya RSFirewall gibi profesyonel Joomla güvenlik bileşenleri, gelen istekleri anlık olarak izler.<br />
<br />
Bu araçlar, URL üzerinden yapılan SQL enjeksiyon denemelerini, XSS (Cross-Site Scripting) saldırılarını ve kötü niyetli kullanıcı ajanlarını (User Agents) tespit ederek IP adresini otomatik olarak bloke eder. Ayrıca, sistemdeki kritik dosyaların (çekirdek dosyalar) değiştirilip değiştirilmediğini kontrol eden "Dosya Bütünlüğü İzleme" (File Integrity Monitoring) sistemleri sayesinde, olası bir sızma durumunda anında haberdar olmanızı sağlar.]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">Joomla'nın varsayılan yönetim paneli yolu (/administrator), saldırganların ilk denediği kapıdır. Bu kapıyı sadece gizlemek değil, üzerine kilitler eklemek gerekir. Standart bir kullanıcı adı ve şifre kombinasyonu, modern "brute-force" (kaba kuvvet) saldırıları karşısında artık yeterli bir koruma sağlamamaktadır.</span><br />
<br />
<!-- start: postbit_attachments_attachment -->
<div class="inline-flex items-center w-full px-4 py-3 space-x-4 text-sm rounded-md bg-slate-100 dark:bg-slate-800 post-attachment__item">
	<!-- start: attachment_icon -->
<img class="w-auto h-4" src="https://www.artiteknoloji.com/images/attachtypes/image.png" height="16" width="16" data-tippy-content="JPG Image" alt=".jpg" loading="lazy">
<!-- end: attachment_icon -->
	<span class="flex-1 truncate">
		<a href="attachment.php?aid=17" target="_blank" data-tippy-content="">Gemini_Generated_Image_6njh816njh816njh.jpg</a>
	</span>
	<span class="hidden sm:inline">(Dosya boyutu: 247.96 KB | İndirme sayısı: 0)</span>
</div>
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Çift Faktörlü Kimlik Doğrulama (2FA):</span> Joomla çekirdeğinde yerleşik olarak gelen İki Adımlı Doğrulama (Two-Factor Authentication), güvenliğin olmazsa olmazıdır. Bu özellik aktif edildiğinde, bir saldırgan yönetici şifrenizi ele geçirse bile, fiziksel cihazınızdaki (Google Authenticator veya YubiKey gibi) anlık kod olmadan panele erişemez. Bu, yetkisiz erişim riskini matematiksel olarak sıfıra yaklaştırır.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">URL Maskeleme ve IP Kısıtlaması:</span> Yönetim paneli URL'sini değiştirmek (örneğin; /yonetim-giris yapmak) "güvenlik yoluyla gizlilik" (security through obscurity) sağlasa da, tek başına yeterli değildir. Daha profesyonel bir yaklaşım, .htaccess dosyası üzerinden /administrator dizinine sadece belirli statik IP adreslerinden erişim izni vermektir. Böylece dünyanın geri kalanı panel giriş sayfanızı göremez bile.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Dosya ve Dizin İzinlerinin Mikroskobik Yönetimi</span><br />
<br />
Sunucu tarafında yapılan en büyük hatalardan biri, yazma izinlerinin gereğinden fazla gevşek bırakılmasıdır. Joomla'nın dosya sistemi, "En Az Ayrıcalık İlkesi"ne (Principle of Least Privilege) göre yapılandırılmalıdır.<br />
<br />
İdeal senaryoda dizinler için 755, dosyalar için 644 izinleri standarttır. Ancak asıl kritik nokta configuration.php dosyasıdır. Veritabanı bağlantı bilgilerini ve global ayarları barındıran bu dosya, kurulum veya düzenleme bittikten sonra mutlaka 444 (salt okunur) moduna alınmalıdır. Bu işlem, bir saldırganın sisteme sızması durumunda bile sitenizin ana konfigürasyonunu değiştirmesini veya veritabanı şifrelerinizi okumasını teknik olarak zorlaştırır.<br />
<br />
Ayrıca, yükleme klasörleri dışındaki hiçbir dizine PHP çalıştırma izni verilmemelidir. Saldırganlar genellikle /images veya /tmp klasörlerine zararlı PHP dosyaları yükleyerek arka kapı (backdoor) oluşturmaya çalışırlar. Sunucu yapılandırmasında bu dizinlerde script çalıştırılmasını engellemek, bu vektörü tamamen kapatır.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Veritabanı İzolasyonu ve Önek (Prefix) Stratejisi</span><br />
<br />
SQL Enjeksiyonu (SQL Injection), web uygulamalarındaki en yaygın ve yıkıcı saldırı türlerinden biridir. Joomla kurulumu sırasında varsayılan olarak gelen veritabanı tablosu öneki (genellikle jos_ veya rastgele atanan bir dize) saldırganlar tarafından tahmin edilebilir.<br />
<br />
Güvenlik sıkılaştırmasının bir parçası olarak, veritabanı tablo öneklerinin tamamen rastgele ve karmaşık karakter dizileriyle (örneğin; xyz74_) değiştirilmesi gerekir. Bu işlem, otomatik saldırı botlarının standart tablo isimleri üzerinden (örneğin; jos_users) yönetici tablosuna sorgu göndermesini engeller. Eğer mevcut bir siteniz varsa, Joomla yönetim panelindeki veya güvenlik eklentilerindeki araçları kullanarak bu öneki canlı sistemde güvenle değiştirebilirsiniz.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Eklenti Hijyeni ve Tedarik Zinciri Güvenliği</span><br />
<br />
Joomla'nın gücü eklentilerinden gelir, ancak en büyük güvenlik açıkları da genellikle üçüncü taraf yazılımlardan kaynaklanır. "Nulled" (kırılmış/korsan) temalar veya eklentiler kullanmak, evin anahtarını hırsıza kendi elinizle teslim etmekle eşdeğerdir. Bu tür dosyaların içine genellikle gizli "backdoor" kodları veya kripto para madenciliği yapan scriptler gömülüdür.<br />
<br />
Profesyonel bir Joomla yöneticisi, kullanılmayan tüm eklentileri sadece devre dışı bırakmakla kalmaz, sistemden tamamen kaldırır. Güncellenmeyen, geliştiricisi tarafından desteği kesilmiş "terk edilmiş" eklentiler (abandonware), sisteminizde saatli bomba etkisi yaratır. Eklenti envanterinizi düzenli olarak denetlemek ve sadece güvenilir kaynaklardan (Joomla Extensions Directory gibi) indirme yapmak, tedarik zinciri saldırılarını minimize eder.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Web Uygulaması Güvenlik Duvarı (WAF) Entegrasyonu</span><br />
<br />
Sunucu tabanlı güvenlik önlemlerine ek olarak, uygulama seviyesinde çalışan bir Web Application Firewall (WAF) kullanmak, trafiği analiz etmek için kritik öneme sahiptir. Admin Tools veya RSFirewall gibi profesyonel Joomla güvenlik bileşenleri, gelen istekleri anlık olarak izler.<br />
<br />
Bu araçlar, URL üzerinden yapılan SQL enjeksiyon denemelerini, XSS (Cross-Site Scripting) saldırılarını ve kötü niyetli kullanıcı ajanlarını (User Agents) tespit ederek IP adresini otomatik olarak bloke eder. Ayrıca, sistemdeki kritik dosyaların (çekirdek dosyalar) değiştirilip değiştirilmediğini kontrol eden "Dosya Bütünlüğü İzleme" (File Integrity Monitoring) sistemleri sayesinde, olası bir sızma durumunda anında haberdar olmanızı sağlar.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Joomla Performans Sanatı: Önbellekleme (Caching) Mekanizması]]></title>
			<link>https://www.artiteknoloji.com/showthread.php?tid=199</link>
			<pubDate>Fri, 21 Nov 2025 10:18:35 +0300</pubDate>
			<dc:creator><![CDATA[<a href="https://www.artiteknoloji.com/member.php?action=profile&uid=1">Wertomy®</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.artiteknoloji.com/showthread.php?tid=199</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">Joomla, doğası gereği dinamik bir sistemdir. Bir ziyaretçi sitenize girdiğinde, sistem veritabanından içerikleri çeker, şablon dosyalarını işler, modülleri yerleştirir ve son olarak HTML çıktısını oluşturur. Bu süreç, her ziyaretçi için tekrarlanır ve sunucu kaynaklarını tüketir.</span><br />
<br />
<!-- start: postbit_attachments_attachment -->
<div class="inline-flex items-center w-full px-4 py-3 space-x-4 text-sm rounded-md bg-slate-100 dark:bg-slate-800 post-attachment__item">
	<!-- start: attachment_icon -->
<img class="w-auto h-4" src="https://www.artiteknoloji.com/images/attachtypes/image.png" height="16" width="16" data-tippy-content="JPG Image" alt=".jpg" loading="lazy">
<!-- end: attachment_icon -->
	<span class="flex-1 truncate">
		<a href="attachment.php?aid=16" target="_blank" data-tippy-content="">Gemini_Generated_Image_6njh816njh816njh.jpg</a>
	</span>
	<span class="hidden sm:inline">(Dosya boyutu: 247.96 KB | İndirme sayısı: 0)</span>
</div>
<!-- end: postbit_attachments_attachment --><br />
<br />
Önbellekleme, bu işlemi "hatırlama" sanatıdır. Oluşturulan sayfaların veya sayfa parçalarının bir kopyası alınır ve sonraki ziyaretçiye, veritabanını yormadan doğrudan bu kopya sunulur. Sonuç, daha hızlı açılış süreleri ve iyileştirilmiş SEO skorları.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Joomla Genel Yapılandırma: Önbellek Ayarları</span><br />
<br />
Joomla yönetim panelinde Sistem &gt; Genel Yapılandırma &gt; Sistem sekmesi altında bulunan önbellek ayarları, performans stratejisinin ilk katmanıdır. Burada karşımıza iki temel seçenek çıkar:<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Tutucu Önbellekleme (Conservative Caching)</span><br />
Standart ve en güvenli seçenektir. Geliştiricilerin modül veya bileşen bazında belirlediği önbellek kurallarını dikkate alır.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Kullanım Alanı:</span> Sık güncellenen, üyelik girişi yapılan veya dinamik modüllerin (örneğin; rastgele ürün gösterimi) yoğun olduğu siteler için idealdir.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Avantajı:</span> Modüllerin güncelliğini korurken performansı artırır.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">İlerici Önbellekleme (Progressive Caching)</span><br />
Bu mod, sayfanın oluşturulmuş modül görünümlerini bir bütün olarak önbelleğe alır ve her ziyaretçi için benzersiz bir önbellek dosyası oluşturabilir.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Kullanım Alanı:</span> İçeriği nadiren değişen ve genellikle statik bilgi sunan kurumsal web siteleri.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Dikkat:</span> Üye girişi yapılan sitelerde veya çok yüksek trafikli dinamik sitelerde önbellek dosya boyutunun aşırı büyümesine (bloating) neden olabilir.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Sistem - Sayfa Önbelleği (Page Cache) Eklentisi</span><br />
<br />
Genel yapılandırmadaki ayarlar modül ve bileşen görünümlerini (View) önbelleğe alırken, "Sistem - Sayfa Önbelleği" eklentisi oyunun kurallarını değiştirir. Bu eklenti, sayfanın tamamını (HTML çıktısını) anlık bir görüntü (snapshot) olarak kaydeder.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Çalışma Prensibi:</span> Bir sayfa ilk kez ziyaret edildiğinde oluşturulur ve kaydedilir. Sonraki ziyaretçilere, Joomla çekirdeği ve veritabanı neredeyse hiç çalıştırılmadan doğrudan bu HTML dosyası sunulur.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Performans Etkisi:</span> En yüksek hız artışını bu eklenti sağlar. Sunucu yanıt süresini (TTFB) ciddi oranda düşürür.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Kritik Uyarı:</span> Bu eklenti, "Sepetim", "Hoşgeldin [Kullanıcı Adı]" gibi dinamik ve kişiye özel içerikleri de statik hale getirebilir. Bu nedenle, e-ticaret sitelerinde veya yoğun kullanıcı etkileşimi olan platformlarda dikkatli kullanılmalı veya belirli sayfalarda hariç tutulmalıdır.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Tarayıcı Önbellekleme (Browser Caching) ve Gzip</span><br />
<br />
Sunucu taraflı önbellekleme kadar, ziyaretçinin tarayıcısını yönetmek de önemlidir. .htaccess dosyası üzerinden veya Joomla'nın Gzip Sayfa Sıkıştırma özelliği açılarak veriler sıkıştırılmış paketler halinde gönderilir.<br />
<br />
Tarayıcı önbellekleme, CSS, JS ve görsel dosyalarının ziyaretçinin bilgisayarına kaydedilmesini sağlar. Böylece kullanıcı sitenizde ikinci bir sayfayı ziyaret ettiğinde, logoları veya stil dosyalarını tekrar indirmek zorunda kalmaz.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Stratejik Yapılandırma Önerileri</span><br />
Maksimum performans için "her şeyi açmak" doğru bir strateji değildir. Sitenizin tipine göre şu yol haritasını izlemek verimliliği artırır:<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Kurumsal/Statik Siteler:</span> İlerici Önbellekleme + Sistem Sayfa Önbelleği Eklentisi (Açık) + 15-30 dakika önbellek süresi.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Blog/Haber Siteleri:</span> Tutucu Önbellekleme + Sistem Sayfa Önbelleği (Dikkatli kullanım) + 15 dakika önbellek süresi.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">E-Ticaret/Topluluk Siteleri:</span> Tutucu Önbellekleme (Açık) + Sistem Sayfa Önbelleği (Kapalı veya yapılandırılmış) + Platforma özel (Redis/Memcached) sunucu tabanlı önbellekleme çözümleri.<br />
<br />
Joomla'da önbellekleme, sadece bir ayar kutucuğunu işaretlemekten ibaret değildir; sitenin yaşam döngüsünü ve kullanıcı deneyimini yönetme sanatıdır.]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">Joomla, doğası gereği dinamik bir sistemdir. Bir ziyaretçi sitenize girdiğinde, sistem veritabanından içerikleri çeker, şablon dosyalarını işler, modülleri yerleştirir ve son olarak HTML çıktısını oluşturur. Bu süreç, her ziyaretçi için tekrarlanır ve sunucu kaynaklarını tüketir.</span><br />
<br />
<!-- start: postbit_attachments_attachment -->
<div class="inline-flex items-center w-full px-4 py-3 space-x-4 text-sm rounded-md bg-slate-100 dark:bg-slate-800 post-attachment__item">
	<!-- start: attachment_icon -->
<img class="w-auto h-4" src="https://www.artiteknoloji.com/images/attachtypes/image.png" height="16" width="16" data-tippy-content="JPG Image" alt=".jpg" loading="lazy">
<!-- end: attachment_icon -->
	<span class="flex-1 truncate">
		<a href="attachment.php?aid=16" target="_blank" data-tippy-content="">Gemini_Generated_Image_6njh816njh816njh.jpg</a>
	</span>
	<span class="hidden sm:inline">(Dosya boyutu: 247.96 KB | İndirme sayısı: 0)</span>
</div>
<!-- end: postbit_attachments_attachment --><br />
<br />
Önbellekleme, bu işlemi "hatırlama" sanatıdır. Oluşturulan sayfaların veya sayfa parçalarının bir kopyası alınır ve sonraki ziyaretçiye, veritabanını yormadan doğrudan bu kopya sunulur. Sonuç, daha hızlı açılış süreleri ve iyileştirilmiş SEO skorları.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Joomla Genel Yapılandırma: Önbellek Ayarları</span><br />
<br />
Joomla yönetim panelinde Sistem &gt; Genel Yapılandırma &gt; Sistem sekmesi altında bulunan önbellek ayarları, performans stratejisinin ilk katmanıdır. Burada karşımıza iki temel seçenek çıkar:<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Tutucu Önbellekleme (Conservative Caching)</span><br />
Standart ve en güvenli seçenektir. Geliştiricilerin modül veya bileşen bazında belirlediği önbellek kurallarını dikkate alır.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Kullanım Alanı:</span> Sık güncellenen, üyelik girişi yapılan veya dinamik modüllerin (örneğin; rastgele ürün gösterimi) yoğun olduğu siteler için idealdir.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Avantajı:</span> Modüllerin güncelliğini korurken performansı artırır.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">İlerici Önbellekleme (Progressive Caching)</span><br />
Bu mod, sayfanın oluşturulmuş modül görünümlerini bir bütün olarak önbelleğe alır ve her ziyaretçi için benzersiz bir önbellek dosyası oluşturabilir.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Kullanım Alanı:</span> İçeriği nadiren değişen ve genellikle statik bilgi sunan kurumsal web siteleri.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Dikkat:</span> Üye girişi yapılan sitelerde veya çok yüksek trafikli dinamik sitelerde önbellek dosya boyutunun aşırı büyümesine (bloating) neden olabilir.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Sistem - Sayfa Önbelleği (Page Cache) Eklentisi</span><br />
<br />
Genel yapılandırmadaki ayarlar modül ve bileşen görünümlerini (View) önbelleğe alırken, "Sistem - Sayfa Önbelleği" eklentisi oyunun kurallarını değiştirir. Bu eklenti, sayfanın tamamını (HTML çıktısını) anlık bir görüntü (snapshot) olarak kaydeder.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Çalışma Prensibi:</span> Bir sayfa ilk kez ziyaret edildiğinde oluşturulur ve kaydedilir. Sonraki ziyaretçilere, Joomla çekirdeği ve veritabanı neredeyse hiç çalıştırılmadan doğrudan bu HTML dosyası sunulur.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Performans Etkisi:</span> En yüksek hız artışını bu eklenti sağlar. Sunucu yanıt süresini (TTFB) ciddi oranda düşürür.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Kritik Uyarı:</span> Bu eklenti, "Sepetim", "Hoşgeldin [Kullanıcı Adı]" gibi dinamik ve kişiye özel içerikleri de statik hale getirebilir. Bu nedenle, e-ticaret sitelerinde veya yoğun kullanıcı etkileşimi olan platformlarda dikkatli kullanılmalı veya belirli sayfalarda hariç tutulmalıdır.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Tarayıcı Önbellekleme (Browser Caching) ve Gzip</span><br />
<br />
Sunucu taraflı önbellekleme kadar, ziyaretçinin tarayıcısını yönetmek de önemlidir. .htaccess dosyası üzerinden veya Joomla'nın Gzip Sayfa Sıkıştırma özelliği açılarak veriler sıkıştırılmış paketler halinde gönderilir.<br />
<br />
Tarayıcı önbellekleme, CSS, JS ve görsel dosyalarının ziyaretçinin bilgisayarına kaydedilmesini sağlar. Böylece kullanıcı sitenizde ikinci bir sayfayı ziyaret ettiğinde, logoları veya stil dosyalarını tekrar indirmek zorunda kalmaz.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Stratejik Yapılandırma Önerileri</span><br />
Maksimum performans için "her şeyi açmak" doğru bir strateji değildir. Sitenizin tipine göre şu yol haritasını izlemek verimliliği artırır:<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Kurumsal/Statik Siteler:</span> İlerici Önbellekleme + Sistem Sayfa Önbelleği Eklentisi (Açık) + 15-30 dakika önbellek süresi.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Blog/Haber Siteleri:</span> Tutucu Önbellekleme + Sistem Sayfa Önbelleği (Dikkatli kullanım) + 15 dakika önbellek süresi.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">E-Ticaret/Topluluk Siteleri:</span> Tutucu Önbellekleme (Açık) + Sistem Sayfa Önbelleği (Kapalı veya yapılandırılmış) + Platforma özel (Redis/Memcached) sunucu tabanlı önbellekleme çözümleri.<br />
<br />
Joomla'da önbellekleme, sadece bir ayar kutucuğunu işaretlemekten ibaret değildir; sitenin yaşam döngüsünü ve kullanıcı deneyimini yönetme sanatıdır.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Joomla Şablon Override Mekanizması: Çekirdek Dosyalara Dokunmadan Özelleştirme]]></title>
			<link>https://www.artiteknoloji.com/showthread.php?tid=198</link>
			<pubDate>Fri, 21 Nov 2025 10:04:36 +0300</pubDate>
			<dc:creator><![CDATA[<a href="https://www.artiteknoloji.com/member.php?action=profile&uid=1">Wertomy®</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.artiteknoloji.com/showthread.php?tid=198</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">Joomla ekosisteminde profesyonel geliştiricileri amatörlerden ayıran en belirgin çizgi, sistemin çekirdek (core) dosyalarına müdahale etmeden arayüz manipülasyonu yapabilme yeteneğidir. Birçok geliştirici, bir bileşenin veya modülün görünümünü değiştirmek için doğrudan /components/ veya /modules/ klasörlerindeki PHP dosyalarını düzenleme hatasına düşer. Bu yaklaşım, ilk Joomla güncellemesinde tüm özelleştirmelerin silinmesiyle sonuçlanır.</span><br />
<br />
<!-- start: postbit_attachments_attachment -->
<div class="inline-flex items-center w-full px-4 py-3 space-x-4 text-sm rounded-md bg-slate-100 dark:bg-slate-800 post-attachment__item">
	<!-- start: attachment_icon -->
<img class="w-auto h-4" src="https://www.artiteknoloji.com/images/attachtypes/image.png" height="16" width="16" data-tippy-content="JPG Image" alt=".jpg" loading="lazy">
<!-- end: attachment_icon -->
	<span class="flex-1 truncate">
		<a href="attachment.php?aid=15" target="_blank" data-tippy-content="">Gemini_Generated_Image_6njh816njh816njh.jpg</a>
	</span>
	<span class="hidden sm:inline">(Dosya boyutu: 247.96 KB | İndirme sayısı: 0)</span>
</div>
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Override Nedir ve Neden Hayatidir?</span><br />
<br />
Override işlemi, Joomla'nın çekirdek çıktı dosyalarının (View), kullanılan şablon klasörü içerisine kopyalanarak sistemin öncelikli olarak bu dosyaları okumasını sağlama işlemidir.<br />
<br />
Sistem bir sayfayı oluştururken şu mantığı izler:<br />
<br />
Önce /templates/aktif-sablon/html/com_content/article/ yolunu kontrol eder.<br />
<br />
Eğer burada bir dosya bulamazsa, varsayılan /components/com_content/views/article/tmpl/ yolunu kullanır.<br />
<br />
Bu sayede, çekirdek güncellemeleri yapılsa bile, şablon klasöründeki özelleştirilmiş dosyalarınız korunur.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Adım Adım Override Oluşturma Süreci</span><br />
<br />
Bu süreci, en sık ihtiyaç duyulan senaryolardan biri olan "Makale Görünümü (Single Article)" özelleştirmesi üzerinden ele alalım.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Yöntem:</span> Joomla Paneli Üzerinden (Hızlı Yöntem)<br />
Joomla, kod editörü kullanmadan dosya yapısını oluşturmanıza olanak tanır:<br />
<br />
Sistem &gt; Şablonlar &gt; Site Şablonları (System &gt; Templates &gt; Site Templates) yolunu izleyin.<br />
<br />
Kullandığınız şablonun ismine (örneğin: Cassiopeia Details and Files) tıklayın.<br />
<br />
Override Oluştur (Create Overrides) sekmesine geçin.<br />
<br />
Listeden com_content &gt; article seçeneğine tıklayın.<br />
<br />
Sistem otomatik olarak gerekli PHP dosyasını /templates/sablonunuz/html/com_content/article/default.php yoluna kopyalayacaktır.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Kod Düzenleme ve Özelleştirme</span><br />
<br />
Dosya oluşturulduktan sonra "Editor" sekmesine dönerek html &gt; com_content &gt; article &gt; default.php dosyasını açın. Artık burada yapacağınız her değişiklik, sitenizdeki tüm tekil makale görünümlerini etkileyecektir.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Örnek Senaryo:</span> Başlık ile İçerik Arasına Özel Alan (Custom Field) Ekleme<br />
<br />
Standart yapıda başlık ve içerik ardışık gelir. Araya, örneğin bir "Yazar Biyografisi" veya "İlgili Tarih" özel alanı eklemek isterseniz, PHP kod bloğunda başlık (echo &#36;this-&gt;escape(&#36;this-&gt;item-&gt;title); ) (Aradaki boşluğu silin) ile içerik (echo &#36;this-&gt;item-&gt;text; )  (Aradaki boşluğu silin) arasına müdahale etmelisiniz.<br />
<br />
<div class="py-4 mb-6 -mx-6 text-sm border-l-2 border-indigo-400 bg-slate-100 dark:bg-slate-800 md:rounded-l-md md:ml-0 md:-mr-6 md:border-l-0 md:border-r-2" style="padding-left: calc(1.5rem - 2px); padding-right: calc(1.5rem - 2px)"><div class="sr-only">PHP Kod:</div><div dir="ltr"><div dir="ltr"><code><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">if&nbsp;(</span><span style="color: #0000BB">&#36;params</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get</span><span style="color: #007700">(</span><span style="color: #DD0000">'show_title'</span><span style="color: #007700">))&nbsp;:&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&nbsp;class="art-title"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">escape</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">item</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">title</span><span style="color: #007700">);&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/h1&gt;<br /><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">endif;&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span><br />&lt;div&nbsp;class="custom-override-info"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;span&nbsp;class="icon-user"&gt;&lt;/span&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;Bu&nbsp;makale&nbsp;uzman&nbsp;ekibimiz&nbsp;tarafından&nbsp;incelenmiştir.<br />&lt;/div&gt;<br /><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">item</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">?&gt;</span></code></div></div></div>
<span style="font-weight: bold;" class="mycode_b">Layout Override (Alternatif Görünümler)</span><br />
<br />
Bazen tüm makaleleri değil, sadece belirli bir kategorideki makaleleri farklı göstermek isteyebilirsiniz. Bunun için "Alternative Layout" tekniğini kullanırız.<br />
<br />
Oluşturduğunuz default.php dosyasının adını değiştirin (Örn: ozel-haber.php).<br />
<br />
Artık makale düzenleme ekranında, "Seçenekler" sekmesinde Düzen (Layout) kısmında "ozel-haber" seçeneğinin belirdiğini göreceksiniz.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Profesyonel İpucu:</span> CSS düzenlemelerinizi asla PHP dosyasının içine &lt;style&gt; etiketiyle gömmeyin. Bunun yerine user.css veya custom.css dosyasını kullanarak, override dosyasında tanımladığınız yeni CSS sınıflarını (class) hedefleyin.]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">Joomla ekosisteminde profesyonel geliştiricileri amatörlerden ayıran en belirgin çizgi, sistemin çekirdek (core) dosyalarına müdahale etmeden arayüz manipülasyonu yapabilme yeteneğidir. Birçok geliştirici, bir bileşenin veya modülün görünümünü değiştirmek için doğrudan /components/ veya /modules/ klasörlerindeki PHP dosyalarını düzenleme hatasına düşer. Bu yaklaşım, ilk Joomla güncellemesinde tüm özelleştirmelerin silinmesiyle sonuçlanır.</span><br />
<br />
<!-- start: postbit_attachments_attachment -->
<div class="inline-flex items-center w-full px-4 py-3 space-x-4 text-sm rounded-md bg-slate-100 dark:bg-slate-800 post-attachment__item">
	<!-- start: attachment_icon -->
<img class="w-auto h-4" src="https://www.artiteknoloji.com/images/attachtypes/image.png" height="16" width="16" data-tippy-content="JPG Image" alt=".jpg" loading="lazy">
<!-- end: attachment_icon -->
	<span class="flex-1 truncate">
		<a href="attachment.php?aid=15" target="_blank" data-tippy-content="">Gemini_Generated_Image_6njh816njh816njh.jpg</a>
	</span>
	<span class="hidden sm:inline">(Dosya boyutu: 247.96 KB | İndirme sayısı: 0)</span>
</div>
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Override Nedir ve Neden Hayatidir?</span><br />
<br />
Override işlemi, Joomla'nın çekirdek çıktı dosyalarının (View), kullanılan şablon klasörü içerisine kopyalanarak sistemin öncelikli olarak bu dosyaları okumasını sağlama işlemidir.<br />
<br />
Sistem bir sayfayı oluştururken şu mantığı izler:<br />
<br />
Önce /templates/aktif-sablon/html/com_content/article/ yolunu kontrol eder.<br />
<br />
Eğer burada bir dosya bulamazsa, varsayılan /components/com_content/views/article/tmpl/ yolunu kullanır.<br />
<br />
Bu sayede, çekirdek güncellemeleri yapılsa bile, şablon klasöründeki özelleştirilmiş dosyalarınız korunur.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Adım Adım Override Oluşturma Süreci</span><br />
<br />
Bu süreci, en sık ihtiyaç duyulan senaryolardan biri olan "Makale Görünümü (Single Article)" özelleştirmesi üzerinden ele alalım.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Yöntem:</span> Joomla Paneli Üzerinden (Hızlı Yöntem)<br />
Joomla, kod editörü kullanmadan dosya yapısını oluşturmanıza olanak tanır:<br />
<br />
Sistem &gt; Şablonlar &gt; Site Şablonları (System &gt; Templates &gt; Site Templates) yolunu izleyin.<br />
<br />
Kullandığınız şablonun ismine (örneğin: Cassiopeia Details and Files) tıklayın.<br />
<br />
Override Oluştur (Create Overrides) sekmesine geçin.<br />
<br />
Listeden com_content &gt; article seçeneğine tıklayın.<br />
<br />
Sistem otomatik olarak gerekli PHP dosyasını /templates/sablonunuz/html/com_content/article/default.php yoluna kopyalayacaktır.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Kod Düzenleme ve Özelleştirme</span><br />
<br />
Dosya oluşturulduktan sonra "Editor" sekmesine dönerek html &gt; com_content &gt; article &gt; default.php dosyasını açın. Artık burada yapacağınız her değişiklik, sitenizdeki tüm tekil makale görünümlerini etkileyecektir.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Örnek Senaryo:</span> Başlık ile İçerik Arasına Özel Alan (Custom Field) Ekleme<br />
<br />
Standart yapıda başlık ve içerik ardışık gelir. Araya, örneğin bir "Yazar Biyografisi" veya "İlgili Tarih" özel alanı eklemek isterseniz, PHP kod bloğunda başlık (echo &#36;this-&gt;escape(&#36;this-&gt;item-&gt;title); ) (Aradaki boşluğu silin) ile içerik (echo &#36;this-&gt;item-&gt;text; )  (Aradaki boşluğu silin) arasına müdahale etmelisiniz.<br />
<br />
<div class="py-4 mb-6 -mx-6 text-sm border-l-2 border-indigo-400 bg-slate-100 dark:bg-slate-800 md:rounded-l-md md:ml-0 md:-mr-6 md:border-l-0 md:border-r-2" style="padding-left: calc(1.5rem - 2px); padding-right: calc(1.5rem - 2px)"><div class="sr-only">PHP Kod:</div><div dir="ltr"><div dir="ltr"><code><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">if&nbsp;(</span><span style="color: #0000BB">&#36;params</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get</span><span style="color: #007700">(</span><span style="color: #DD0000">'show_title'</span><span style="color: #007700">))&nbsp;:&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&nbsp;class="art-title"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">escape</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">item</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">title</span><span style="color: #007700">);&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/h1&gt;<br /><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">endif;&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span><br />&lt;div&nbsp;class="custom-override-info"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;span&nbsp;class="icon-user"&gt;&lt;/span&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;Bu&nbsp;makale&nbsp;uzman&nbsp;ekibimiz&nbsp;tarafından&nbsp;incelenmiştir.<br />&lt;/div&gt;<br /><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">item</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">?&gt;</span></code></div></div></div>
<span style="font-weight: bold;" class="mycode_b">Layout Override (Alternatif Görünümler)</span><br />
<br />
Bazen tüm makaleleri değil, sadece belirli bir kategorideki makaleleri farklı göstermek isteyebilirsiniz. Bunun için "Alternative Layout" tekniğini kullanırız.<br />
<br />
Oluşturduğunuz default.php dosyasının adını değiştirin (Örn: ozel-haber.php).<br />
<br />
Artık makale düzenleme ekranında, "Seçenekler" sekmesinde Düzen (Layout) kısmında "ozel-haber" seçeneğinin belirdiğini göreceksiniz.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Profesyonel İpucu:</span> CSS düzenlemelerinizi asla PHP dosyasının içine &lt;style&gt; etiketiyle gömmeyin. Bunun yerine user.css veya custom.css dosyasını kullanarak, override dosyasında tanımladığınız yeni CSS sınıflarını (class) hedefleyin.]]></content:encoded>
		</item>
	</channel>
</rss>