Перейти к контенту
  • 0

CSS в отдельном файле


Dr.Freddy

Вопрос

Пользователи на форуме, посмотрев на движок, требуют вынести CSS в отдельный файл (чтобы закешировался и больше не загружался). Сам CSS, насколько я понял, хранится в базе, причем его СТОЛЬКО... O_O

 

Кто-нибудь решал подобную проблему?

Добавлено в [mergetime]1096791425[/mergetime]

Нашел следующий мод для 1.3:

 

1. Admin CP -> Skins & Templates -> Manage Board Wrappers

Найти:

 

<% CSS %>

 

Следом добавить:

 

<link rel="StyleSheet" href="main.css" type="text/css">

 

2. Закачать прилагаемый файл main.css в корневую папку форума.

 

3. DB

ALTER TABLE `ibf_members` ADD `file_css` TINYINT(1) DEFAULT NULL;

 

4. functions.php

Найти:

 

if ($ibforums->vars['board_offline'] == 1)

{

    $output_array['TITLE'] = $ibforums->lang['warn_offline']." ".$output_array['TITLE'];

}

 

Ниже добавить:

 

        if ($ibforums->member['file_css'])

        {

      $ibforums->skin['template'] = str_replace( "<% CSS %>" , "" , $ibforums->skin['template']);

        }

        else

        {

      $ibforums->skin['template'] = str_replace( "<link rel=\"StyleSheet\" href=\"main.css\" type=\"text/css\">" , "" , $ibforums->skin['template']);

        }

 

Найти:

 

m.view_pop,

 

Следом добавить:

 

m.file_css,

 

5. Usercp.php

Найти:

 

$html_sess = "<select name='HIDE_SESS' class='forminput'>";

 

Ниже добавить:

 

$file_css  = "<select name='FILE_CSS' class='forminput'>";

 

Найти:

 

$html_sess .= $hide_sess == 1          ? "<option value='1' selected>".$ibforums->lang['yes']."</option>\n<option value='0'>".$ibforums->lang['no']."</option>"

            : "<option value='1'>".$ibforums->lang['yes']."</option>\n<option value='0' selected>".$ibforums->lang['no']."</option>";

 

Ниже добавить:

 

$file_css .= $this->member['file_css'] ? "<option value='1' selected>".$ibforums->lang['css_from_file']."</option>\n<option value='0'>".$ibforums->lang['css_from_db']."</option>"

            : "<option value='1'>".$ibforums->lang['css_from_file']."</option>\n<option value='0' selected>".$ibforums->lang['css_from_db']."</option>";

 

Найти:

 

'SESS' => $html_sess."</select>",

 

Ниже добавить:

 

'CSS'  => $file_css."</select>",

 

4. usercp_functions.php

Найти:

 

  if ( ! preg_match( "/^\d+$/", $ibforums->input['HIDE_SESS'] ) )

  {

$std->Error( array( 'LEVEL' => 1, 'MSG' => 'poss_hack_attempt' ) );

  }

 

Ниже добавить:

 

  if ( ! preg_match( "/^\d+$/", $ibforums->input['FILE_CSS'] ) )

  {

$std->Error( array( 'LEVEL' => 1, 'MSG' => 'poss_hack_attempt' ) );

  }

 

Найти:

 

'view_pop'  => $ibforums->input['DO_POPUP'],

 

Ниже добавить:

 

'file_css'  => $ibforums->input['FILE_CSS'],

 

5. skin_ucp.php

Найти:

 

              <tr>

                <td class='row1' nowrap>{$ibforums->lang['hide_session_txt']}</td>

                <td class='row1' width='70%' align='left'>{$data[sESS]}</td>

              </tr>

 

Ниже добавить:

 

              <tr>

                <td class='row1' nowrap>{$ibforums->lang['file_css_txt']}</td>

                <td class='row1' width='70%' align='left'>{$data[CSS]}</td>

              </tr>

 

6. lang_ucp.php

Добавить:

 

'file_css_txt'  => "<b>Load CSS table from</b><br>Loading from file is faster, and helps save bandwidth. Use this if no errors occur",

'css_from_file' => "From file",

'css_from_db' => "From database",

 

Или:

 

'file_css_txt'  => "<b>Загружать таблицу CSS</b><br>Загружать CSS из файла быстрее, и позволяет экономить трафик.<br>Используйте этот режим при отсутствии ошибок",

'css_from_file' => "Из файла",

'css_from_db' => "Из базы данных",

В связи с этим вопрос: из какой таблицы брать собственно файл CSS? Не могу найти. Можно попробовать обновить мод.

Добавлено в [mergetime]1096791779[/mergetime]

Вопрос снимается. :D

Добавлено в [mergetime]1096792394[/mergetime]

Очередное добавление... ;) (блин, создал лог работы. прошу прощения) При простом «вынимании» CSS из файла кое-что теряется — например, исчезает фон у заголовков топиков, фон ячейки лого...

 

В общем, буду над этим работать. Если кто-то делал уже подобное — пожалуйста, поделитесь опытом.

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

winnie

идем в админку в свойства скина и там переключаем css на режим из файла
Понятно. Спасибо. Кстати, имеет смысл адаптация вышеприведенного мода (возможность выбора юзером метода загрузки CSS) на 2.0? Кажется, загрузка из базы должны проходить быстрее...
Ссылка на комментарий
Поделиться на других сайтах

  • 0

нет смысла курочить то, что работает.

css может грузится как отдельным файлом, так и добавлятся на страницу. что тут еще не понятно?!?!

я у себя вынес его в отдельный файл и нормально себя чувствую.

а вот на счет размера - тут ты прав, он не маленький, более 20к - несколько удручает...

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Z

 

нет смысла курочить то, что работает
Вообще, да. Ладно. Забудем пока про эту проблему. :D
Ссылка на комментарий
Поделиться на других сайтах

  • 0
просто если css в файле то при любых его изменениях юзеры сразу не увидят их-(изменения) - css файл кешируется браузером
Ссылка на комментарий
Поделиться на других сайтах

  • 0

winnie

просто если css в файле то при любых его изменениях юзеры сразу не увидят их-(изменения) - css файл кешируется браузером
Угу. Учту.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
А еще можно убрать лишнюю разметку и переносы строк, сделать каждый класс на одну строчку - гемора много, но размер файла сокращается как минимум в два раза.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

dedikin

а где именно?
Admin CP — Skins and Templates — Skin Manager — IBP Default Skin (по умолчанию, или нужный вам) — Edit Settings. Там параметр «Cache CSS to text files?» переключить в Yes.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

У меня написано

Unavailable, IPB cannot write into your 'style_images' folder

Warning: Changing this value will re-cache any cached stylesheet information. Please make sure that you have synchronized any cache files with the database.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Хм, я тут обнаружил, что css в портале не выносится... пробовал руками сделать ссылку на внешний файл, но что-то руки не то сделали, есть идеи как это реализовать?
Ссылка на комментарий
Поделиться на других сайтах

  • 0
идем в админку в свойства скина и там переключаем css на режим из файла

 

так и сделал. теперь у меня на каждой странице стала появляться такая ошибка:

Fatal error: Cannot instantiate non-existent class: skin_global_3 in /home/footquest/public_html/forum/sources/ipsclass.php on line 1398

 

Вернуть старое не знаю где править, так как админка не работает.

 

строка ошибки такая: $this->compiled_templates['skin_global'] = new $skin_global_name();

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.