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

Тема в разделе "WebAsyst", создана пользователем paqwerty, 19 авг 2011.

Модераторы: mdss
  1. paqwerty

    paqwerty Постоялец

    Регистр.:
    22 апр 2009
    Сообщения:
    53
    Симпатии:
    2
    Всем привет!

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

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

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

    Как сделать, чтобы они сохранялись?
     
  2. paqwerty

    paqwerty Постоялец

    Регистр.:
    22 апр 2009
    Сообщения:
    53
    Симпатии:
    2
    Вроде как решил, но появилась идея довести до ума.
    Проблема заключалась в перезаписи файла 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"
    Теперь при предопределении стиля нам будет предложено назвать стил как нам хочется, что гораздо удобнее в дальнейшем...

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

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