Всего 125 679 комментариев

Татьяна
06 августа 2021, 00:36
0
ага, именно там где вы думаете.

к сожалению я поняла уже что есть проблемы с вызовом именно тут. но так и не смогла прокрасться к верному решению.

&tpl=`@INLINE: [[+pagetitle]] купить в Минске
[[+pagetitle]]
[[+tv.dopifaProduct]]

{{+tv.presence}}
{if $tv.presence | match: '1'} да {/if}
{if $tv.presence == «1»} Да {/if}



`

в общем, сия конструкция отрабатывает только первая, показывает единицу. остальные — глухо. хоть и смотрела документацию, все равно не понимаю что я делаю не так.
уже дошло до того что тупо начала перебирать варианты написания, я думала может кавычки какие неправильно написала, или еще что, бывает же что поставишь что-нибудь не то.

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

в общем, проблема расцвела буйным цветом) прям обидно, никогда не подумала бы что тут окажется засада.
Евгений Webinmd
05 августа 2021, 21:31
0
очень надеюсь что это в отдельном чанке, а не в INLINE
Andrey
05 августа 2021, 17:55
+2
Госпаде! Спасибо Вам святой Вы человек! Пусть мана небесная сыплется бесконечно! Это реально ускоряет работу сайта, прям глаза открыли :DDD

П.С.
А еще закинул чуть чуть рублс для стимуляции подвигов, а это без сомнений подвиг!
Andrey
05 августа 2021, 17:42
0
Плохо понятно. Конструкция верная и должна отрабатывать. Но где здесь pdoPage? Вы это прямо в самом сниппете, внутри, хотите использовать?
Татьяна
05 августа 2021, 15:58
0
пробовала писать и так и этак, либо вообще не отрабатывает, либо отрабатывает как простая переменная, т.е. пишет просто по порядку Есть Нет, как будто условия вообще нет
Татьяна
05 августа 2021, 15:56
0
тв, список, одиночный выбор. заполнение Есть==1||Нет==0
Наумов Алексей
05 августа 2021, 15:51
0
{{+tv.presence}}
это вообще что?..
Татьяна
05 августа 2021, 15:45
0
{{+tv.presence}} такая выводит.

а простая запись {if $presence == «1»} В наличии {/if} — не отрабатывает
Наумов Алексей
05 августа 2021, 15:37
0
{$presence}
Выводит единицу «1»?

Для парсера Fenom будет корректно тогда выражение
{if $presence == "1"}
{else}
{/if}
Іван Клімчук
05 августа 2021, 13:48
0
редис работает как единый сервис в amazon, а уже отдельные серверы с приложением к нему подключаются. Т.е. там одна общая база для всех.
Александр Мельник
05 августа 2021, 11:31
0
я имел ввиду, что выбор инструмента для решения задачи исходит из самой задачи. Возможно для таких систем как ваша, где запрос пользователя случайным образом отправляется на разные сервера, то выбор redis является правильным и удобным инструментом. Хотя не совсем понимаю, как это устроено. Редис работает одновременно на всех серверах и везде данные синхронизированы?
Сергей Шлоков
05 августа 2021, 06:50
+2
И придётся придумывать всё то, что уже есть в сессии. Вообще, в чём проблема-то? В сессии эти данные занимают байты. Ну пусть для всех пользователей это будет килобайты. Ну если уж у тебя большой сайт, то десятки МБ. И то при условии, что все ломятся на страницу с формой. А у большинства это какая-нибудь страница с обратной связью.

Проблемы надо решать по мере их поступления. Вот Алексей споткнулся об гигабайтную таблицу и предложил решение. Но опять же, оно нужно не всем, а только тем, у кого аналогичная проблема. Остальным можно не париться.

Ну а отдельная таблица — это явный оверхед. Тогда уж лучше передавать в форму зашифрованные данные из параметров сниппета в скрытый инпут. В этом случае оверхеда будет гораздо меньше.
Василий Наумкин
05 августа 2021, 04:18
+1
Да, если брать за уникальный id хэш от параметров сниппета и получать его потом из запроса юзера — рабочий вариант. Даже, пожалуй, хороший.

Но тут сразу второй вопорос — каждое дополнение будет устанавливать собственную такую таблицу? Или они все должны использовать какую-то общую? Если общую — как дополнениям об этом договориться, требовать какую-то зависимость, типа нового дополнения AjaxSettingsDB?

И если у вызова сниппета будет какой-то уникальный параметр, типа id юзера, то количество записей в такой БД будет ровно тем же, что и у таблицы сессий. Еще встаёт вопрос еще об очистке этой таблицы — сколько дней хранить в ней настройки?

Но, повторюсь, этот вариант мне нравится и в былые времена я мог бы переписать свои дополнения на хранение настроек в одной общей таблице. Кто сейчас это будет делать — вопрос.
Aleksandr Huz
04 августа 2021, 23:16
0
Привет, Василий!

Где хранить данные для запуска сниппета через коннектор?
А если хранить данные в отдельной таблице? А через ajax передать только id нужной нам формы. И сниппет уже не нужен будет.
Іван Клімчук
04 августа 2021, 21:51
+2
Вопрос не в дорос или нет, просто увидел в посте заблуждение, которое стало личным убеждением, и постарался его развеять.
Сергей Шлоков
04 августа 2021, 21:12
+1
В сессиях обычно хранится уникальная информация пользователя.
Вот у меня только один вопрос — у Вас большой опыт программирования? Вы можете гарантировать, что в форме не будет уникальной информации, как написал Василий? Ой, это второй вопрос.

Т.е. если для 98% пользователей решение отлично подходит, но для 2-х% нет, то его нужно выбросить в пропасть. Ибо это оскорбляет эти 2%. Это не они должны адаптировать решение, а остальные 98%.

Можно было просто создавать записи в БД для группы пользователей, использование сессии здесь не нужно.
А ещё можно в догонку спросить? Сколько дополнений Вы создали?

П.С. Я спрашиваю абсолютно по-дружески. )
Александр Мельник
04 августа 2021, 19:55
0
Уверен вы правы. Просто я еще не дорос до проектов, у которых есть балансировщики нагрузки и сопутствующие им проблемы.
Иван
04 августа 2021, 19:01
0
Кстати, использование механизма кэширования (в файлах) это тоже хорошее решение. Ключ к кэшу может создать сам пользователь (разработчик конкретного сайта), а по умолчанию использовать группу пользователя.
Иван
04 августа 2021, 18:44
0
В сессиях обычно хранится уникальная информация пользователя. А форма чаще всего используется не персонально для пользователя, а для групп пользователей (боты входят в анонимную группу). Можно было просто создавать записи в БД для группы пользователей, использование сессии здесь не нужно. Можно так же получать массив параметров сниппетов, но для сохранения написать свою одну функцию (+ свой коннектор). Это просто как вариант. Возможно, есть и другие. Я не критикую, а просто высказываю мнение. Никого не хотел обидеть) Возможно, если бы я писал такое дополнение, то тоже выбрал бы лёгкий путь, всё наперёд просчитать сложно, это я понимаю.
Иван
04 августа 2021, 18:28
0
Казалось бы, совершенно заслуженный камень в мой огород
Василий, я ни в коем случае не хотел кидать в ваш огород камень. Просто указал, что проблема существует и её нужно решать, а не делать костыли. Вы выбрали самый просто способ, но есть и другие. Как минимум можно не сохранять параметры в сессии для ботов, думаю можно найти библиотеку для фильтрации по юзер агенту и т.п. (или написать самому). Не хотел Вас задеть). Уважаю за проделанную работу и полезные дополнения.