datawriter.php'deki kodlarımdan ilham alarak plugins.php oluşturmanızı istiyorum.
<?php
class DataWriter
{
private $dataDir;
private $menuItems = [];
private $contentMap = [];
private $metaData = [];
public function __construct($dataDir)
{
$this->dataDir = $dataDir;
$this->initialize();
}
private function initialize()
{
$files = glob($this->dataDir . '/*.md');
foreach ($files as $filePath) {
$content = file_get_contents($filePath);
$metaData = '';
if (preg_match('/^---\s*([\s\S]*?)\s*---/m', $content, $matches)) {
$metaData = $matches[1];
$content = str_replace($matches[0], '', $content);
}
$metaLines = explode("\n", $metaData);
$meta = [];
foreach ($metaLines as $line) {
if (preg_match('/^(\w+):\s*(.*)$/', trim($line), $metaMatch)) {
$meta[$metaMatch[1]] = $metaMatch[2];
}
}
// Find the first image in the content and set it as og:image
if (preg_match('/!\[.*?\]\((.*?)\)/', $content, $imageMatch)) {
$meta['og:image'] = $imageMatch[1];
}
if (isset($meta['oneciksin']) && $meta['oneciksin'] === 'yes') {
$this->menuItems[] = [
'file' => basename($filePath),
'title' => trim(preg_match('/^#\s*(.*)$/m', $content, $titleMatch) ? $titleMatch[1] : basename($filePath)),
'id' => isset($meta['id']) ? (int)$meta['id'] : null // id etiketi
];
}
$this->contentMap[basename($filePath)] = $content;
$this->metaData[basename($filePath)] = $meta; // Meta verileri burada saklanır
}
// id değerine göre sıralama
usort($this->menuItems, function ($a, $b) {
return $a['id'] <=> $b['id'];
});
}
public function getMenuItems()
{
return $this->menuItems;
}
public function getContentMap()
{
return $this->contentMap;
}
public function isDisqusEnabled($file)
{
return isset($this->metaData[$file]['disqus']) && $this->metaData[$file]['disqus'] === 'yes';
}
public function getFileForRequest($defaultFile)
{
return isset($_GET['file']) ? basename($_GET['file']) : $defaultFile;
}
public function getHtmlForFile($file, $parsedown)
{
return isset($this->contentMap[$file]) ? $parsedown->text($this->contentMap[$file]) : '<p>Dosya bulunamadı.</p>';
}
public function getTitleByFile($file)
{
if (isset($this->contentMap[$file])) {
if (preg_match('/^#\s*(.*)$/m', $this->contentMap[$file], $titleMatch)) {
return trim($titleMatch[1]);
}
}
return '404 Not Found';
}
public function getDescriptionByFile($file)
{
return isset($this->metaData[$file]['aciklama']) ? $this->metaData[$file]['aciklama'] : 'Yukarıdaki logodan anasayfaya dönebilirsiniz.';
}
public function getOgImage($file)
{
return isset($this->metaData[$file]['og:image']) ? $this->metaData[$file]['og:image'] : null;
}
}
?>Yapılacak olay şu;* /plugins/$pluginadi.php verisinde yes verisi olacak. Sonra o veriyi biz .md dosyasındaki metayı okutarak sayfada göstermesini istiyorum.