Публикации

Форумы

Версия сайта для слабовидящих
 

Версия сайта для слабовидящих

Модераторы: Патрик, net1313, Predator, Perfecthus, Kapman
Автор Добавил
Offline soldier
11.11.15 - 16:22
Сообщений: 191
не переключаются стили страница перезагружается а стиль остается дефолтный.

Вот те модификации, что я внес:

header_default:
  1. echo "<link rel='stylesheet' href='".$alt_css_file."' type='text/css' media='{$css_default}' />\n";
  2. $alt_css_list = array(
  3.           0 => 'style.css',
  4.           1 => 'style_2.css',
  5.           2 => 'style_3.css',
  6. );
  7. $alt_css_val  = intval(varset($_COOKIE['style'],0));
  8.  
  9. $alt_css_file = is_readable(THEME.$alt_css_list[$alt_css_val])
  10.  
  11.         ? THEME_ABS.$alt_css_list[$alt_css_val]
  12.  
  13.         : THEME_ABS.'style.css';
  14.                 }


theme.php:
....
  1. define('STANDARDS_MODE', TRUE);
  2. define('USER_WIDTH','width:100%');
  3. define("FS_LINK_SEPARATOR"," ");
  4. $register_sc[]='FS_SITELINKS';
  5.  
  6. // [layout]
  7. $layout = '_default';
  8. $alt_css_hl  = 'highlight'; // это css класс для подсветки ссылки с текущим значением
  9. $alt_css_val = intval(varset($_COOKIE['style'],0));
  10.  
  11. $HEADER = '
  12. <a class="button'.($alt_css_value==0 ? $alt_css_hl : '').'" onclick="setCookie(\'style\', 0);"><img src="'.THEME_ABS.'images/bi2.png" alt="Обычная версия"/></a>
  13. <a class="button'.($alt_css_value==1 ? $alt_css_hl : '').'" onclick="setCookie(\'style\', 1);"><img src="'.THEME_ABS.'images/bi1.png" alt="Обычная версия"/></a>
  14. <a class="button'.($alt_css_value==2 ? $alt_css_hl : '').'" onclick="setCookie(\'style\', 2);"><img src="'.THEME_ABS.'images/bi.png" alt="Обычная версия"/></a>


ну и в файл скрипта вписал соответствующий код.
Пробовал вставлять селектор, но он вообще не срабатывает.
Вернуться наверх
Популярность сообщения: 0
 
Рекламный блок
VPS
Наверх

Offline Real
11.11.15 - 17:16
Real

Сообщений: 1236
В точности, говоришь, всё перенёс?

В твоём коде для [header_default] первая строка должна быть последней.
  1.     $alt_css_list = array(
  2.               0 => 'style.css',
  3.               1 => 'style_2.css',
  4.               2 => 'style_3.css',
  5.     );
  6.     $alt_css_val  = intval(varset($_COOKIE['style'],0));
  7.     $alt_css_file = is_readable(THEME.$alt_css_list[$alt_css_val])
  8.             ? THEME_ABS.$alt_css_list[$alt_css_val]
  9.             : THEME_ABS.'style.css';
  10.     }
  11.     echo "<link rel='stylesheet' href='".$alt_css_file."' type='text/css' media='{$css_default}' />\n";
Ты пытаешься использовать переменную $alt_css_file прежде чем она назначается.

И кстати хорошо-бы сразу проверить работает-ли кука. (в фаерфоксе правый клик -> Информация о странице -> Защита -> Посмотреть куки)

И еще, тут $alt_css_hl = 'highlight'; // это css класс для подсветки ссылки с текущим значением

Пробел в кавычках(апострофах) перед ' highlight'; был очень НЕслучайно, верни его, как было в моём коде ...пунктуальный ты наш


Всё, что существует на свете, когда-то было мечтой.
Вернуться наверх
Популярность сообщения: 1
 
Offline soldier
11.11.15 - 18:05
Сообщений: 191
исправил.

  1. }
  2. echo "<link rel='stylesheet' href='".$alt_css_file."' type='text/css' media='{$css_default}' />\n";
  3.  


Строка должна быть за фигурной скобкой или внутри ее? . Содержимое css меняется 0, 1, 2, как и прописано. Но траница перезагружается, но стиль не меняется, хотя файл я исправил и фон и шрифты и другие элементы.

Вернуться наверх
Популярность сообщения: 0
 
Offline Real
11.11.15 - 18:28
Real

Сообщений: 1236
– Цитата: 
Строка должна быть за фигурной скобкой или внутри ее? . Проверил в файрфоксе не срабатывает переключение. Страница перезагружается, но ссылается на дефолтный файл стилей.

в оригинальном header_default.php рядом с искомой строкой две фигурных скобки (сразу до и после)
и чтобы не гадать еще раз внимательно перечитывай что я написал:
// искомая строка
и
// новый код - вставляем его ровно на то-же место, где была искомая строка

Неработать может по нескольким причинам:
- браузер закешировал файл e107.js (Ctrl+F5 страницу)
- не работает установка куки - посмотри в браузере куки сайта, изменяется-ли кука 'style' как должна
- не работает распознавание куки - возможны косяки с копи-пастом кода с этого форума

- да, и не забываем про всякие приблуды к браузерам типа AdBlock, Ghostery, NoScrypt и т.п., которые режут рекламу, JS, куки и т.д.


Всё, что существует на свете, когда-то было мечтой.
Вернуться наверх
Популярность сообщения: 0
 
Offline soldier
11.11.15 - 18:31
Сообщений: 191
Куки меняются, в смысле разобрался смотрел не в ту строчку, лиса пишет после нажатия css содержимое 0,1,2. То есть так понимаю она переключается. Но вид страницы не меняется, хотя файл я исправил (фон, шрифты, разметку).
Вернуться наверх
Популярность сообщения: 0
 
Offline Real
11.11.15 - 22:39
Real

Сообщений: 1236
– Цитата: 
То есть так понимаю она переключается. Но вид страницы не меняется, хотя файл я исправил (фон, шрифты, разметку)
Проверил свой код у себя - всё работает.
Нашёл один свой косяк по невнимательности: в п.3 надо заменить название переменной с $alt_css_value на $alt_css_val
Но это влияет только на подсветку кнопки с текущим значением.

Проверь, чтобы файлы, которые указаны в массиве $alt_css_list, точно находились в папке с текущим активным шаблоном сайта.
Если указанного файла в папке шаблона нет, используется дефолтный style.css - эта проверка в моём коде прописана.
Например: site.tld/theme/MY_THEME/ style_2.css - чтобы он точно был в папке активного шаблона


Всё, что существует на свете, когда-то было мечтой.
Вернуться наверх
Популярность сообщения: 0
 
Offline soldier
12.11.15 - 09:11
Сообщений: 191
Файлы стилей лежат в корне темы вместе с дефолтным. Удалил на время дефолтный, подхватился один из оставшихся стилей.
  1. }
  2.                        
  3. $alt_css_list = array(
  4.           0 => 'style.css',
  5.           1 => 'style_2.css',
  6.           2 => 'style_3.css',
  7. );
  8. $alt_css_val  = intval(varset($_COOKIE['style'],0));
  9. $alt_css_file = is_readable(THEME.$alt_css_list[$alt_css_val])
  10. ? THEME_ABS.$alt_css_list[$alt_css_val]
  11.  : THEME_ABS.'style.css';
  12. echo "<link rel='stylesheet' href='".$alt_css_file."' type='text/css' media='{$css_default}' />\n";
  13. }


если здесь опять я не ошибся.
Вернуться наверх
Популярность сообщения: 0
 
Offline Real
12.11.15 - 11:09
Real

Сообщений: 1236
– Цитата: 
если здесь опять я не ошибся.
Вроде без ошибок.
Проверь еще HTML код страниц (Ctrl+U в браузере). Должна быть ссылка с новым файлом, при куке неравной нулю.

Согласно твоего кода:
cookie `style` = 1
ссылка <link rel='stylesheet' href='/themes/MY_THEME/ style_2.css' type='text/css' media='all' />


Всё, что существует на свете, когда-то было мечтой.
Вернуться наверх
Популярность сообщения: 0
 
Offline soldier
12.11.15 - 11:22
Сообщений: 191
Вот незадача. Переключаюсь на другой стиль, смотрю код страницы
  1. <link rel='stylesheet' href='/themes/simple/style.css' type='text/css' media='all' />


а куки при этом ссылается на содержимое 2, то есть вроде переключилась, а на самом деле нет.
Вернуться наверх
Популярность сообщения: 0
 
Offline Real
12.11.15 - 11:58
Real

Сообщений: 1236
– Цитата: 
Вот незадача. Переключаюсь на другой стиль, смотрю код страницы
...
а куки при этом ссылается на содержимое 2, то есть вроде переключилась, а на самом деле нет.
Ладно, давай попробуем без проверки наличия файла.

Этот код
  1. $alt_css_file = is_readable(THEME.$alt_css_list[$alt_css_val])
  2.  ? THEME_ABS.$alt_css_list[$alt_css_val]
  3.  : THEME_ABS.'style.css';
замени на этот
  1. $alt_css_file = THEME_ABS.$alt_css_list[$alt_css_val];
И так-же проверь HTML через Ctrl+U какой файл он выдаёт + проверяй значение куки.



Всё, что существует на свете, когда-то было мечтой.
Вернуться наверх
Популярность сообщения: 0
 
Версия сайта для слабовидящих

Перейти:  Вернуться наверх