Оператор делителя во внешней таблице стилей с помощью PHP - PullRequest
0 голосов
/ 08 апреля 2010

TL; DR: я использую PHP во внешней таблице стилей, но он не распознает '/' как оператор делителя PHP, это портит мой CSS. Любая помощь приветствуется

Я работаю над простым веб-сайтом, который динамически загружает пункты меню из таблицы страниц в базе данных. с помощью рекурсивного алгоритма я получаю все страницы и дочерние страницы в нужном месте.

В этой функции я подсчитываю количество пунктов главного меню.

Я делаю это, потому что мне нужно сделать каждые <li> в главном меню <ul> такой ширины, чтобы она охватывала всю ширину строки меню. Я хочу, чтобы это делалось динамически, чтобы в случае добавления большего количества страниц в качестве пункта главного меню ничего не менялось, только вставка в базу данных.

Теперь мой вопрос: я правильно прочитал здесь , что можно настроить Apache так, чтобы он считывал CSS как файлы PHP. Работает как шарм, ничего страшного. Теперь у меня есть

<link rel="Stylesheet" type="text/css" href="<?php echo base_url().'css/css-reset.css'.'?item_count='.$menu_count; ?>" />

в моем заголовке (как вы видите, я передаю количество пунктов меню в качестве переменной post). Это тоже работает. Мой CSS:

<?php Header ("Content-type: text/css");?>
<?php
$wrapper_width = 900;
$menu_item_count = (int)$_REQUEST['item_count'];
$menu_item_width = $wrapper_width / $menu_item_count;
?>

/*lots more boring CSS */

div#wrapper
{
text-align:left;
width:<?php echo $wrapper_width.'px'; ?>;
}

div#menu a
{
display:block;
height:1.7em;
width:<?php echo $menu_item_width.'px'; ?>;
}

И вот тут возникает странная вещь. Если я установлю $menu_item_count как целое число (например: $menu_item_count=150), оно будет работать как надо. Но как только я использую оператор делителя между двумя переменными, CSS начинает портиться. другие операторы работают.

На мой взгляд, оператор делителя является особенным для CSS (из-за комментариев?), И он не читается как оператор делителя PHP, а как символ CSS.

Я пытался поместить это в функцию, функция работает, но оператор делителя снова испортил ее.

Итак, мои вопросы: кто-нибудь когда-нибудь работал с PHP во внешних таблицах стилей? Если да, можете ли вы помочь мне разобраться с этой проблемой?

Ответы [ 3 ]

1 голос
/ 08 апреля 2010

Проверьте вывод вашего скрипта php / css.Вы можете сделать это, введя адрес вашего скрипта в браузере, и если вы правильно настроили apache, результаты ваших php-вычислений должны быть там.Я предполагаю, что оператор деления может вернуть некоторое десятичное число, которое не совместимо с CSS.Попробуйте это:

$menu_item_width = (int)$wrapper_width / $menu_item_count;
0 голосов
/ 08 апреля 2010

Вот что пошло не так: я добавил строку запроса в неправильный файл CSS.Ничего плохого в операторе деления или в чем-то другом, просто мой глупый ум не работает слишком хорошо, слишком долго глядя на мой монитор.

0 голосов
/ 08 апреля 2010

Символ деления работает внутри PHP и не должен доставлять вам никаких хлопот.Могу ли я рекомендовать использовать HEREDOC вместо того, чтобы открывать и закрывать PHP таким образом.Это может упростить управление.

<?php 
header ("Content-type: text/css");
$wrapper_width = 900;
$menu_item_count = (int)$_REQUEST['item_count'];
$menu_item_width = $wrapper_width / $menu_item_count;

echo <<<EOL
/*lots more boring css */

div#wrapper {
  text-align: left;
  width: $wrapper_width px;
}
EOL;
?>

Чтобы решить вашу проблему, вы можете опубликовать вывод этого файла?

...