Как создать пользовательскую тему с помощью Laravel и где хранить данные темы?
Я создаю полноценный веб-сайт с использованием Laravel, и эта проблема стоит передо мной, я хочу предоставить пользователю полный контроль над внешним видом сайта и возможность изменять макет сайта без моей помощи.
Но когда я думаю о том, как это сделать с помощью базы данных, рядом с цветами и разделами будет добавлено несколько таблиц с десятками столбцов, которые будут добавляться в базу данных каждый раз, когда пользователь будет что-то менять в стиле макета.
Есть ли какие-либо другой способ сохранить параметры темы в XML-файле или в чем-либо другом, кроме базы данных?
** Примечание: когда я проверил базу данных Wordpress, я не нашел там ничего, связанного с темами, так где же Wordpress хранит параметры темы?
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]);
}
}