اذهب إلى المحتوى
  • 0

كيف يمكن التعامل مع ملفات xml ب php او عمل نظام قوالب بها

ناnaif ناnaif

السؤال

السلام عليكوم ورحمة الله و بركاته 

من منا لا يعرف سكربت المنتديات الشهير vBulletin فانا 

بعد الانتهاء من برمجة سكربت متجر قلت ليه ماضيف نظام القوالب مثلة

فانا اوريد ان اضيف صفحة في لوحة التحكم يوجد بها بعض القوالب 

و يمكن التعديل على الاكواد الخاصة بها بحيث ينقر المستخدم على 

تعديل source و ينتقل إلى صفحة يوجد بها حقول تحتوي على 

الاكواد مجزئة مثل الهيدر و الفوتر إلخ.. و يمكنة رفع قالب من جهازه

و يتم تخزين محتويات القالب في قاعدة بيانات My SQL مثل اسم القالب

و اكواد القالب إلخ..ا  و بمعنا اصح اوريد برمجة نظام يشبة نظام قوالب بلوجر إلى حد قريب...

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

بدايةً، تحتاج إلى إنشاء قاعدة بيانات لتخزين معلومات القوالب، وليكن كالتالي:

CREATE TABLE templates (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    header TEXT,
    footer TEXT,
    content TEXT
);

ولتتمكن من قراءة ملفات XML، تتوفر مكتبة SimpleXML المدمجة في PHP.

فتقوم بقراءة ملف XML:

function readXMLTemplate($filePath) {
    if (file_exists($filePath)) {
        $xml = simplexml_load_file($filePath);
        $template = [
            'header' => (string) $xml->header,
            'footer' => (string) $xml->footer,
            'content' => (string) $xml->content
        ];
        return $template;
    } else {
        throw new Exception("File not found: $filePath");
    }
}

وكتابة ملف XML:

function writeXMLTemplate($filePath, $template) {
    $xml = new SimpleXMLElement('<template/>');
    $xml->addChild('header', $template['header']);
    $xml->addChild('footer', $template['footer']);
    $xml->addChild('content', $template['content']);
    $xml->asXML($filePath);
}

بعد ذلك إنشاء وظائف لإضافة وتعديل القوالب في قاعدة البيانات.

إضافة قالب:

function addTemplate($name, $header, $footer, $content) {
    $conn = new mysqli('localhost', 'username', 'password', 'database');
    $stmt = $conn->prepare("INSERT INTO templates (name, header, footer, content) VALUES (?, ?, ?, ?)");
    $stmt->bind_param("ssss", $name, $header, $footer, $content);
    $stmt->execute();
    $stmt->close();
    $conn->close();
}

تعديل قالب:

function updateTemplate($id, $name, $header, $footer, $content) {
    $conn = new mysqli('localhost', 'username', 'password', 'database');
    $stmt = $conn->prepare("UPDATE templates SET name = ?, header = ?, footer = ?, content = ? WHERE id = ?");
    $stmt->bind_param("ssssi", $name, $header, $footer, $content, $id);
    $stmt->execute();
    $stmt->close();
    $conn->close();
}

وباستطاعتك إنشاء واجهة مستخدم باستخدام HTML وPHP لإدارة القوالب من قبل المسؤول عن الموقع، مثل صفحة لعرض القوالب وصفحة لتعديلها.

صفحة عرض القوالب:

<?php
$conn = new mysqli('localhost', 'username', 'password', 'database');
$result = $conn->query("SELECT * FROM templates");
?>
<!DOCTYPE html>
<html>
<head>
    <title>Manage Templates</title>
</head>
<body>
    <h1>Templates</h1>
    <ul>
        <?php while ($row = $result->fetch_assoc()): ?>
            <li>
                <a href="edit_template.php?id=<?php echo $row['id']; ?>"><?php echo $row['name']; ?></a>
            </li>
        <?php endwhile; ?>
    </ul>
</body>
</html>

صفحة تعديل القالب:

<?php
$id = $_GET['id'];
$conn = new mysqli('localhost', 'username', 'password', 'database');
$stmt = $conn->prepare("SELECT * FROM templates WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
$result = $stmt->get_result();
$template = $result->fetch_assoc();
?>
<!DOCTYPE html>
<html>
<head>
    <title>Edit Template</title>
</head>
<body>
    <h1>Edit Template</h1>
    <form action="update_template.php" method="post">
        <input type="hidden" name="id" value="<?php echo $template['id']; ?>">
        <label>Name:</label> <input type="text" name="name" value="<?php echo $template['name']; ?>"><br>
        <label>Header:</label><br><textarea name="header"><?php echo $template['header']; ?></textarea><br>
        <label>Footer:</label><br><textarea name="footer

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...