Как создать пользовательскую тему с помощью Laravel и где хранить данные темы?


Я создаю полноценный веб-сайт с использованием Laravel, и эта проблема стоит передо мной, я хочу предоставить пользователю полный контроль над внешним видом сайта и возможность изменять макет сайта без моей помощи.

Но когда я думаю о том, как это сделать с помощью базы данных, рядом с цветами и разделами будет добавлено несколько таблиц с десятками столбцов, которые будут добавляться в базу данных каждый раз, когда пользователь будет что-то менять в стиле макета.

Есть ли какие-либо другой способ сохранить параметры темы в XML-файле или в чем-либо другом, кроме базы данных?

** Примечание: когда я проверил базу данных Wordpress, я не нашел там ничего, связанного с темами, так где же Wordpress хранит параметры темы?

Author: AhmedYasserSalama, 2017-03-05

1 answers

Для вашего XML-подобного хранилища вы можете использовать конфигурацию Laravel. Допустим, у вас есть файл config/templates.php. Внутри у вас может быть много таких вещей, как.

return [
    'default_template' => 'layouts.templates.default',
    'posts' => 'layouts.templates.post',
    'footer' => 'layouts.includes.footer',

    'options' => [
        'full_with' => false,
        'has_footer' => true,
        'background_color' => '#fff',
        'more_keys' => 'key_value'
    ]
];

Затем в любом месте вашего приложения вы можете получить шаблон по умолчанию, например

$view = config('templates.default_template'); //will get
return view($view, compact('params'));

Чтобы обновить ключ, например has_footer, вы делаете

config(['templates.options.has_footer' => false]); //will update

Это должно помочь вам начать, я думаю

Простой Пример

Допустим, пользователь меняет цвет по умолчанию, вводит и отправляет форму. Ты делаешь

public function updateTheme(Request $request) {
    if ( $request->has('background_colour') && $request->background_colour != '' ) {
        config(['templates.options.background_colour' => $request->background_colour]);       
    }
}
 1
Author: EddyTheDove, 2017-03-05 09:37:57