Переменная для $FILTER1_MENU$. Определение состояния меню переменной при помощи операторов юкоз

юкоз, готовые решения по юкоз, готовые скрипты, скрипты для ucoz

Переменная для $FILTER1_MENU$

» » Сообщение:

Здравствуйте!

С 22-12-2015 на 23-12-2015 перестала работать переменная условие определяющее состояние пунктов меню фильтров.
Был сделан демо сайт для проверки, на нём переменные так же не работали.

Код: Выделить всё Развернуть
<?if(strpos($FILTER1_MENU$,'value="1" selected')>0)?>Тут значение<?endif?>

Условие добавляло текстовые значения при изменении выбора пункта меню, вот пример:

Код: Выделить всё Развернуть
<h2>Заголовок<?if(strpos($FILTER1_MENU$,'value="1" selected')>0)?> первый<?endif?><?if(strpos($FILTER1_MENU$,'value="2" selected')>0)?> второй<?endif?></h2>

Тоесть изначально заголовок имеет текст:

Код: Выделить всё Развернуть
<h2>Заголовок</h2>

при выборе 1 пункта добавляет

Код: Выделить всё Развернуть
<h2>Заголовок первый</h2>

при выборе 2 пункта добавляет

Код: Выделить всё Развернуть
<h2>Заголовок второй</h2>

Обращение в тех поддержку ПУ оказалось пустой тратой времени на ожидание ответа :(

На форуме uВопросы были предложены варианты:

Код: Выделить всё Развернуть
<?if(strpos($FILTER1_MENU$,'value="1" selected')!=-1)?> Тут значение<?endif?>

и

Код: Выделить всё Развернуть
<?if not(strpos($FILTER1_MENU$,'value="1" selected')=='-1' ) ?> Тут значение<?endif?>

К сожалению предложенные варианты переменных тоже не работают :(

value, selected, endif, заголовок, strpos, filter1, значение, тут, условие, варианты, второй, добавляет, выборе, пустой, тех, работают, обращение, uвопросы, тратой, ожидание, вхождение, проверено, sostavyat, vsego, simvolov, найдено, vhozhdeniya, poiska, сторон, учетом, скрипт, glubina, потом,

Re: Переменная для $FILTER1_MENU$

Admin » » Сообщение:

MMV,

MMV писал(а):На форуме uВопросы были предложены варианты:

Добрый)
А чем, принципиально, они отличаются от вашего?...

MMV писал(а):С 22-12-2015 на 23-12-2015 перестала работать переменная условие определяющее состояние пунктов меню фильтров.

А сама функция strpos работала? Было проверено вхождение в просто строку?

Код: Выделить всё Развернуть
<?if(strpos('Было проверено вхождение в просто строку?','вхождение')>0)?>есть вхождение<?endif?>

?

Если работает, имеет смысл копать дальше.. ну а нет.. сами понимаете.

Добавлено (13.01.2016, 13:57:59)
---------------------------------------------
Кроме того, не следует забывать, что глубина поиска вхождения составят всего 1000 символов (с обоих сторон), а с учетом того, что туда впихнули скрипт ..

глубина поиска вхождения составят всего 1000 символов

не удивительно, что вхождение не найдено..

Как вариант, обрезать лишнее, а потом уже искать что-то..
Типа:

Код: Выделить всё Развернуть
<?if(strpos(substr($FILTER1_MENU$,1140),'value="1" selected')>0)?>Тут значение<?endif?>

...

вхождение, strpos, endif, проверено, sostavyat, vsego, simvolov, найдено, vhozhdeniya, poiska, сторон, учетом, скрипт, glubina, selected, значение, потом, искать, substr, filter1

Re: Переменная для $FILTER1_MENU$

MMV » » Сообщение:

При формировании сайта были использованы 3 фильтра модуля "Игры".
Была проверена работа переменных, всё работало, единственным неудобством явилось огромное количество символов наследуемое использованием переменных на странице категорий.
Пришлось уменьшить количество категорий для использования переменных до допустимого лимита страницы = 175000.
Сделал более 300 материалов, собирался открывать сайт, но тут переменные перестали работать..
И перестали работать по видимому на всех сайтах, я описал проблему во все тех.поддержки, платные и бесплатные.
В результате переписки в ПУ, после очередного 7 дневного ожидания сегодня появилась надпись "ответ дан", а самого ответа нет :'(

Прошу прощения, мои знания оставляют желать лучшего, Ваш вопрос:

likbezz писал(а):А сама функция strpos работала? Было проверено вхождение в просто строку?

мне не совсем понятен :(

Точнее на первую часть вопроса:

likbezz писал(а):А сама функция strpos работала?

Я утвердительно отвечаю, всё работало более месяца, пока производилось добавление материалов.

А вот насчёт второй части:

likbezz писал(а):Было проверено вхождение в просто строку?

Честно признаюсь мне не понятно :(


Re: Переменная для $FILTER1_MENU$

Admin » » Сообщение:

MMV,

MMV писал(а):Честно признаюсь мне не понятно

Я уже дал вам рабочий вариант и озвучил причину.

Повторюсь:
Причина в том, что что глубина поиска вхождения составят всего 1000 символов - системное ограничение.
Юкоз добавил к фильтрам скрипт, видимо, недавно. Длина строки скрипта ≈ 1140 символов, что превышает глубину поиска.
Следствие: strpos не находит вхождение.

Решение: обрезать строку на длину скрипта.
Рабочий пример:

Код: Выделить всё Развернуть
<?if(strpos(substr($FILTER1_MENU$,1140),'value="1" selected')>0)?>Тут значение<?endif?>

---

MMV писал(а):Честно признаюсь мне не понятно

Дело в том, что на юкоз бывают какие-то сбои, когда просто не работают встроенные функции. Например strpos.
Что бы это проверить, берется статичная строка и ищется вхождение:

plain Код: Выделить всё Развернуть
<?if(strpos('Было проверено вхождение в просто строку?','вхождение')>0)?>есть вхождение<?endif?>

Где: синее - произвольная строка; красное - заведомо присутствующее в строке вхождение;
Если результат положительный - вхождение найдено, функция strpos работает. Значит проблема не в этом.

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



Re: Переменная для $FILTER1_MENU$

rons » » Сообщение:

Здравствуйте!
Столкнулся с похожей ситуацией . Нужно обрезать (strpos) все до ++++

<?substr($MESSAGE$,strpos($MESSAGE$,'++++
')+1)?>

Проблема в том что ++++ встречается приблизительно с 1500-го символа.
То есть, нужно сначала обрезать $MESSAGE$ на 1000 символов, а потом искать и обрезать все до ++++
Никак не могу разобраться как изменить этот условный оператор..


Re: Переменная для $FILTER1_MENU$

Admin » » Сообщение:

rons писал(а) › 06 апр 2016, 19:46:Здравствуйте!
Столкнулся с похожей ситуацией . Нужно обрезать (strpos) все до ++++
<?substr($MESSAGE$,strpos($MESSAGE$,'++++
')+1)?>
Проблема в том что ++++ встречается приблизительно с 1500-го символа.

Получить информацию из $BODY$ при помощи условных операторов юКоз

Код: Выделить всё Развернуть
<?substr(substr($MESSAGE$,1000),strpos(substr($MESSAGE$,1000),'++++')+1)?>

Re: Переменная для $FILTER1_MENU$

rons » » Сообщение:

Admin
Да то что нужно, спасибо.
А если искать (strrpos)
<?substr($MESSAGE$,strrpos($MESSAGE$,'++++'))?>

Не получается, где-то ошибка
<?substr(substr($MESSAGE$,-1000),strrpos(substr($MESSAGE$,-1000),'++++'))?>


Re: Переменная для $FILTER1_MENU$

Admin » » Сообщение:

rons писал(а) › 06 апр 2016, 21:58:Не получается, где-то ошибка
<?substr(substr($MESSAGE$,-1000),strrpos(substr($MESSAGE$,-1000),'++++'))?>

Условные операторы и коды системы юКоз. Справка по условным операторам и кодам системы uCoz
Полагаю, вы хотели сделать что-то другое, т.к.

Код: Выделить всё Развернуть
substr($MESSAGE$,-1000)

вернет 1000 последних символов..
Если же все верно, то просто проверьте вхождение на наличие, посмотрите что вернет:

Код: Выделить всё Развернуть
<?substr($MESSAGE$,-1000)?>

Может там и нет того, что вы ищите..