Zend: Как добавить уникальный & lt; style & gt; теги на подстраницах & lt; head & gt; тег

У меня действительно большой веб-сайт, на котором многие из подстраниц имеют уникальные стили 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);

работает только из контроллера, а не из вида.

0

Решение

Вы все еще можете использовать 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'));

Также из документов.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]