[Помощь] Стили overridestyle

paqwerty

Постоялец
Регистрация
22 Апр 2009
Сообщения
53
Реакции
2
Всем привет!

Есть проблема: я редактирую шаблон сайта, вставил произволный html-код в шаблон, далее в админке редактирование темы я указываю для него предустановленные стили и сохраняю шаблон. Далее я уже в дримвивере прописываю этот overridestyle стиль как мне надо, сохраняю, проверяю - все нормально работает и показывает как надо. После этого я добавил еще один блок произвольного кода через админку, нажимаю сохранить шаблон и мне скидывает вручную прописанные мной предопределенные стили для прошлого блока.

Как мне сделать чтобы этого не происходило, т.е. чтобы прописанные вручную предопределенные стили сохранялись?

Добавлено через 59 минут
Может плохо объяснил суть проблему, попробую по другому: Когдя я нажимаю кпопку "Сохранить шаблон" в визуальном редакторе, то все стили в файле overridestyles.css, которые я сам набирал в дримвивере исчезают.

Как сделать, чтобы они сохранялись?
 
Вроде как решил, но появилась идея довести до ума.
Проблема заключалась в перезаписи файла overridestyles.css на новые стили каждый раз при нажатии в визуальном редакторе кнопку "сохранить шаблон".
Я нашел файл
Код:
site.ru\published\SC\html\scripts\classesclass.cptoverridestyles.php
с кодом, который собственно и делает запись в этот файл. В этом файле надо закоментировать следующие куски кода:
PHP:
$this->_save_styles_css(loadWData('__OVERRIDESTYLES_CACHE__'));
PHP:
$this->_save_styles_css($all_styles, $file_cache);
PHP:
	function _save_styles_css($styles, $file = null){
		$css_styles_file = is_null($file)?$this->themeEntry->getPath().'/overridestyles.css':$file;
		$fp = fopen($css_styles_file, 'w');
		if(is_array($styles))foreach ($styles as $style_id=>$style){
			if(!is_array($style))continue;
			$class_id = 'cptovst_'.preg_replace('/[^a-zA-Z0-9]/u','_',$style_id);
			foreach ($style as $property=>$val){
				$val = preg_replace('/[^a-zA-Z0-9]/u','',$val);
				if(!$val)continue;
				$string = '';
				switch ($property){
				case 'backgroundColor':
					$string = '.'.$class_id.'{background-color: #'.$val.'!important;}';
					break;
				case 'borderColor':
					$string = '.'.$class_id.'{border-color: #'.$val.'!important; border-style:solid;}';
					break;
				case 'borderWidth':
					$string = '.'.$class_id.'{border-width: '.$val.'px!important;}';
					break;
				case 'fontColor':
					$string = '.'.$class_id.' *,.'.$class_id.'{color: #'.$val.'!important;}';
					break;
				case 'textAlign':
					$string = '.'.$class_id.' *,.'.$class_id.'{text-align: '.$val.'!important;}';
					break;
				case 'linkColor':
					$string = '.'.$class_id.' * a,.'.$class_id.' a{color: #'.$val.'!important;}';
					break;
				case 'padding':
					$val = intval($val);
					$string = '.'.$class_id.'{padding: '.$val.'px!important;}';
					break;
				}
				if($string)fwrite($fp, $string."\n");
			}
			fwrite($fp, "\n\n");
		}
		fclose($fp);
	}
Теперь когда вы в визуале решите "предопределить стиль" для чего либо, то вашему блоку присвоиться только ссылка на класс, но вставки саомого стиля не будет.

Еще меня напрягли непонятные названия предопределенных стилей, это я тоже исправил так:
в файле
Код:
C:\WebServers\home\os.ru\www\published\SC\html\scripts\core_functions\func.component.php
находим след. код:
PHP:
<input name="'.cpt_getNameInForm('overridestyle', 'style_id').'" value="'.$style_id.'" type="hidden" />
и убираем от туда
PHP:
type="hidden"

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

Еще соответственно из этого же файла надо удалить поля ввода стилей, т.к. они уже не актуальны.

Жалко только, что времени не хватило сделать вместо этоих полей одно, куда можно будет вводить непосредственно сам код стиля, чтобы дримвивер лишний раз не открывать. На след. неделе попробую доделать.
 
Назад
Сверху