Динамическое обновление исходного файла CSS с помощью JS и PHP

1

Возможно ли динамическое изменение местоположения загруженного файла CSS? Например:

        <?php 
            require_once "../objects/edit.php";
            $editor = new EDITOR_FACTORY($db);
        ?>
        <script>
            var type = "<?php $editor->call('Type') ?>";
            var theme = "<?php $editor->call('Theme') ?>";
            $('head').append('<link rel="stylesheet" href="../resources/styles/editor_templates/'+type+'_'+theme+'" type="text/css" />');
        </script>

Что-то вроде этого? У меня есть CSS файл (шаблоны), и я бы хотел, чтобы опция меняла тему без обновления (измените источник файла CSS без обновления страницы).

Результат должен быть чем-то вроде

<link rel="stylesheet" type="text/css" href="../resources/styles/editor_templates/sometype_sometheme.css

Сейчас он возвращает пустые переменные "type" и "theme", они, вероятно, не могут принимать данные из функции из класса редактора (он работает на PHP, но с обновлением). Дело в том, что я пытаюсь удалить последний связанный файл CSS с помощью JS и связать новый (но другой, тот, который нужен пользователю, без обновления страницы)
Благодарим вас за советы и предложения!

  • 0
    Вместо <? Php?> Вы должны предоставить <? Php echo [var]?> Или сокращенную запись <? = ..Vars here ..?>
  • 0
    Вы не отражаете переменные между тегами, поэтому PHP не отображает их.
Показать ещё 4 комментария
Теги:

1 ответ

0

Ответ прост, вы создаете функцию и кнопки со значениями (например, эта кнопка откроет файл CSS 1, этот файл CSS 2 и т.д.):

<button class="loadCSS" value="1"> CSS file 1 </button>
<button class="loadCSS" value="2"> CSS file 2 </button>

и вот волшебство:

var type = "<?php echo $editor->call('Type') ?>";
var theme = "<?php echo $editor->call('Theme') ?>";
$('head').append('<link id="'+ type+theme +'" rel="stylesheet" href="../resources/styles/editor_templates/'+type+'_'+theme+'.css" type="text/css" />');

$(document.body).on('click', '.loadCSS', function (e) {
   e.preventDefault();
   var buttonTheme = jQuery(this).val();
   $('#'+type+theme).remove(); 
   $('#'+type+buttonTheme).remove(); 
   $('head').append('<link id="'+ type+buttonTheme +'" rel="stylesheet" href="../resources/styles/editor_templates/'+type+'_'+buttonTheme+'.css" type="text/css" />'); 
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню