У меня действительно большой веб-сайт, на котором многие из подстраниц имеют уникальные стили CSS, написанные внутри.
Каждая страница структурирована таким образом, что она использует разные .phtml
частей для создания одной HTML-страницы — стиль, используемый в определенной части, вызывается из .phtml
файл, и приводит к странице, как это:
<!DOCTYPE html>
<html>
<head>
...
</head>
<body>
<div>
...
</div>
<div class="someStyle">
...
</div>
<style type="text/css">
.someStyle{
color:red;
}
.someOtherStyle{
background: blue;
}
</style>
<div class="someOtherStyle">
...
</div></body>
</html>
Есть ли достойный способ добавить это <style>
тег, даже в виде строки, к <head>
тег страницы хотя написано внутри страницы? (как функция может быть?)
Следующая документация Zend:
https://framework.zend.com/manual/2.3/en/modules/zend.view.helpers.head-style.html
кажется, что есть решение для ссылки .css
файлы, а не короткие <style>
теги.
<head>
тег. <style>
пометить как есть.Требуемый результат: https://jsfiddle.net/k0c8cssj/
(Я не мог вставить это сюда, что-то не работает с тегами кода.)
Редактировать: Хорошо, вот оно:
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
.someStyle{ color:red; }
.someOtherStyle{ background: blue;}
</style>
</head>
<body>
<div>
...
</div>
<div class="someStyle">
...
</div>
~ in the .phtml view file - the CSS function/string/command is there
<div class="someOtherStyle">
...
</div></body>
</html>
Используя что-то вроде этого:
$styles = '.testingClass{color:red;}';
$this->view->headStyle()->appendStyle($styles);
работает только из контроллера, а не из вида.
Вы все еще можете использовать headStyle viewhelper в ваших партиалах:
<?php $this->headStyle()->captureStart() ?>
.someStyle{
color:red;
}
.someOtherStyle{
background: blue;
}
<?php $this->headStyle()->captureEnd() ?>
https://docs.zendframework.com/zend-view/helpers/head-style/#capturing-style-declarations
И добавить <?= $this->headStyle() ?>
к метке головы вашего макета.
Я рекомендую использовать файлы .css для уменьшить дублирующийся код, Вы можете добавить или добавить свои файлы .css в партиалы:
// place at a particular offset:
$this->headStyle()->offsetSetStyle(100, $this->basePath('css/style.css'));
// place at end:
$this->headStyle()->appendStyle('//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css');
// place at beginning:
$this->headStyle()->prependStyle($this->basePath('css/style.css'));
Также из документов.
Других решений пока нет …