CodeIgniter - передает переменные в CSS - PullRequest
1 голос
/ 17 февраля 2011

Я переписываю сайт на Code Igniter, и мне нужно загрузить внешний TTF.БД MySQL указывает путь к этим TTF.Могу ли я как-то передать эти переменные в CSS и сделать цикл foreach для «загрузки» этих шрифтов.

Я пытался

$this->load->vars($data);

Ответы [ 6 ]

6 голосов
/ 17 февраля 2011

Во-первых, разберитесь с обслуживанием динамического CSS. Мой сайт имеет контроллер под названием «ресурс», который позволяет мне обслуживать CSS, JS и т. Д. (Возможно, изображения в будущем). Он загружает представления на основе сегментов, переданных ему в URL.

Итак, когда запрашивается http://mysite.com/resource/css/main.css:

  • Мой Resource контроллер (.../controllers/resource) обрабатывает любые особенности обработки данных (как в общем случае с контроллером MVC). Затем он загружает:
  • Общее представление: ".../views/resources/css.php", передавая ему имя нужного файла CSS. Это представление распечатывает заголовок с указанием Content-Type (важно!) И любых других общих вещей. Затем он переходит к загрузке:
  • Указан фактический файл CSS, здесь ".../views/resources/css/main.css.php".

Это немного излишне, но обеспечивает большую гибкость, как будто вы говорите так, как вам нужно.

Контроллер:

...
$segments = $this->uri->segment_array();
array_shift($segments);   // remove the first two
array_shift($segments);
$content['stylesheet'] = $segments[0] . ".php";  //e.g. main.css.php
$content['data'] = array();                      //Font data, etc
$this->load->view('resources/css.php', $content);
..

Общие ресурсы / css.php Это загружает фактическую таблицу стилей .css.php

<?php header("Content-Type: text/css"); // This is key! ?>  
/* MySite CSS File (c) 2011 bla bla */
<?php
     $this->load->view("resources/css/$stylesheet", $data);
     echo "\n";
?>

Специальные ресурсы / css / main.css.php

<?php echo "/* I can use PHP in my CSS! */\n"; ?>
body { background-color: <?=$data['bg_color']?>; }
p { font-family: <?=$data['p_font_fam'];?>; }
2 голосов
/ 17 февраля 2011

Возможно, вам необходимо понять, как вы извлекаете данные из базы данных и как вы их отображаете: http://codeigniter.com/user_guide/database/index.html удачи

EDIT: что вам нужно, вероятно, что-то вроде этого: после того, как вы получили ссылки из базы данных и скажем, что вы назвали их $ ttf_links

 <?php 
          foreach($ttf_links as $link){
        echo "<link rel='stylesheet' type='text/css' href={$link['row_name']} media='screen' />"
    }
    ?>

и затем назовите шрифты, которые вам нужны в вашем CSS

1 голос
/ 17 февраля 2011

Насколько я знаю, передача переменных в CSS не работает.

Я прочитал кое-что о шаблонах CSS с PHP, но больше не могу найти ссылку Будет обновлять этот ответ, как только я нашел ссылку. Но вы могли бы и сами посмотреть.

Обновление

Нашел !: http://www.barelyfitz.com/projects/csscolor/

0 голосов
/ 08 октября 2014

Вот ответ, я это реализовал и отлично работает

https://ellislab.com/forums/viewthread/220105/#1014374

0 голосов
/ 17 февраля 2011

Обходным решением будет использование CSS на самой странице для загрузки шрифтов.

0 голосов
/ 17 февраля 2011

Самый простой способ, как я вижу, это сделать с помощью CSS на уровне файлов и обычным способом изменить значения.

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