Управление редактированием тем с использованием PHP и jQuery - PullRequest
1 голос
/ 22 августа 2010

У меня есть тема, в которой есть множество вариантов, например: -

  • Настройка типа темы среди множества доступных
  • Настройка цвета фона и изображения для тела
  • Настройка изображений верхнего и нижнего колонтитула
  • Настройка общего шрифта Face, Size & Color
  • Настройка цвета фона текстовой области и шрифта Face & Color Font
  • Настройка параметра «Цвет фона и угол наклона» для области формы
  • Настройка цвета фона элемента формы, а также шрифта Face & Color Font
  • Настройка цвета ссылки по умолчанию, цвета при наведении и посещенного цвета, с / без оформления
  • Предоставление опций для загрузки любого количества изображений для использования в блоге пользователя
  • и многие другие ...

Может ли кто-нибудь предоставить какую-либо информацию о том, как это можно сделать наилучшим образом, используя пользовательские PHP и jQuery? Я также открыт для других способов.

EDIT: -
У меня есть 12 проработанных тем, а также собственные таблицы стилей и наборы иконок. Я также получил их, чтобы загрузить на каждый личный вкус клиента. Чего я не знаю, так это как управлять изменениями, внесенными в выбор темы клиента этим клиентом из его собственной учетной записи? Это должно вступить в силу оба раза: -

  • когда клиент вносит / загружает изменения со своей учетной записи
  • когда клиент просматривает свой аккаунт вместе с изменениями

Кстати, большое спасибо за такой быстрый ответ от двух пользователей и за то, что он дал мне знать о моем неполном вопросе.

Любая помощь очень ценится.

Ответы [ 2 ]

4 голосов
/ 22 августа 2010

Попробуйте что-то вроде этого:

<?php

    function template($file, $data = array())
    {
        ob_start();
        extract($data);
        include_once 'path/to/theme/folder/' . $file . '.php';
        return ob_get_clean();
    }


    // Assign values to the template file
    $values['theme_type'] = 'default';
    $values['bg_color'] = '#FFFFFF';
    $values['bg_image'] = 'path/to/bg/image.jpg';
    $values['font_face'] = 'Tahoma, Arial, Verdana';
    $values['font_size'] = '12px';
    $values['font_color'] = '#000000';
    // And so on...

    // Output template file
    echo template('theme_layout', $values);

?>

И файл theme_layout.php в 'path/to/theme/folder/theme_layout.php' должен выглядеть следующим образом:

<html>
<head>
    <title>Theme Name</title>
    <style type="text/css">
        body {
            background-color: <?php echo $bg_color; ?>;
            background-image: url(<?php echo $bg_image; ?>);
            font-family: <?php echo $font_face; ?>;
            font-size: <?php echo $font_size; ?>;
            font-color: <?php echo $font_color; ?>;
        }
    </style>
</head>
<body>

    Theme type is: <?php echo $theme_type; ?>

</body>
</html>

Обновление

Вы правы, что это была только концепция, вот что вам нужно сделать: добавить новую таблицу, например, в базу данных user_themes и сохранить там все значения, относящиеся к пользователю.Например, пользователь заходит на страницу администратора и видит параметры темы, такие как BG Color / Image, Font Name / Size / Color и вводит свои собственные значения там ... Форма отправляется, а значения сохраняются в базе данных.Затем во время отображения темы (где я назначил значения для файлов шаблонов) вы получаете введенные пользователем параметры темы из базы данных и назначаете в качестве значений темы.

Я действительно не понимаю, где jQuery следует использовать здесь, может бытьв форме, где пользователь отправляет свои параметры.

Надеюсь, что это полезно.

1 голос
/ 22 августа 2010

Создание различных таблиц стилей (.css). Каждая таблица стилей представляет собой тему. Измените атрибут href элемента <link>, чтобы он соответствовал пути к выбранной теме.

Если вы разрешаете загружать пользовательские CSS-файлы, обязательно очистите ввод, поскольку IE имеет возможность выполнять части CSS-файла, как если бы это был JavaScript, что приводит к возможным атакам XSS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...