DANFA

Сжатие CSS кода в phpBB

CMS
Для phpBB 3.2.x потребовалось сжать CSS код подключаемых файлов от расширений, мне надо было создать сжатую копию каждого файла.css от всех расширений. Ни чего умнее я пока не придумал, как в файле: "phpbb/template/assets_bag.php", полностью переписать функцию "get_stylesheets_content" таким образом:
	public function get_stylesheets_content()
	{
		$output = '';
		foreach ($this->stylesheets as $stylesheet)
		{
			$press_file = str_replace('.css', '_press.css', $stylesheet->get_url());
			$file = explode('?', $press_file);

			if (!file_exists($file[0]))
			{
				$url_css = explode('?', $stylesheet->get_url());
				if (strpos($url_css[0], '..') !== false)
				{
					$url_css[0] = str_replace('../', '', $url_css[0]);
					$file[0] = str_replace('../', '', $file[0]);
				}

				$code_css = file_get_contents($url_css[0]);

				$code_css = str_replace(array("\n", "\t", '    '), '', $code_css);
				$code_css = preg_replace('|/\*.*?\*/|', '', $code_css);
				$code_css = preg_replace('|([,:;){}]) |', '$1', $code_css);
				$code_css = preg_replace('| ([{])|', '$1', $code_css);

				$fp = fopen($file[0], 'w');
				fwrite($fp, $code_css);
				fclose($fp);
			}

			$output .= '<link href="' . $press_file . '" rel="stylesheet" type="text/css" media="screen" />' . "\n";
		}

		return $output;
	}

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

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

Будьте внимательны, функция сыровата.

Возможно, будет интересно:
- Компрессор CSS кода (Сжатие файлов на PHP)
- Сжатие JS кода в phpBB