Помогите выстроить логику работы плагина/сниппета.

Приветствую

Не знаю с какой стороны правильно подступиться к решению задачи. В текстовой файле есть 100 строк («ID» * «текст» [* «ссылка»] (ссылка — факультативная запись строки)). Надо чтобы один раз были взяты десять случайных строк из файла, куда-то сохранены и отображались на сайте, но с некоторыми ограничениями (опишу далее).

Смутные представления о логике:
1. Записываем данные в файл в формате «ID * строка [* ссылка]», сохраняем в файлах сайта.
2. Пишем плагин (onDocFormSave), генерирующий 10 случайных числе от 0 до 100.
3. Плагин при сохранении страницы помещает 10 чисел в TV-поле.
4. Пишем сниппет, ищущий ID чисел в файле и генерирующий из них строки по нужному шаблону.
5. Всё, вроде.

Но имеется недопонимание:
1. Каждый раз при сохранении ресурса будут генерироваться новые числа и меняться значения, чего не хотелось бы. Решается, как мне кажется, проверкой наличия сгенерированных записей в TV-поле (если записи есть, то ничего не делаем, если отсутствуют записи — генерируем и помещаем числа в поле).
2. Если меняем количество генерируемых чисел в плагине с 10 на меньшее или большее количество, тогда, неужели, чтобы изменить количество выводимых записей на страницах придется пересохранять все ресурсы для изменения количества выводимых записей?
3. Если, к примеру, обнаружил ошибку в каком-нибудь слове текстового файла и исправляю ее, то нужно ли чистить кеш всех ресурсов, чтобы изменения вступили в силу или же есть другие варианты?
4. Если количество записей в файле увеличить или уменьшить, то:
4.1. (уменьшаем количество записей) Что делать с уже сгенерированными числами в полях — переобходить все ресурсы, удалять поля, заново генерировать?
4.2. (увеличиваем количество записей) То же самое? — переобходить все ресурсы, удалять поля, заново генерировать?
4.3. Но тогда существующие записи будут заменены другими.

Господа, прошу вашего совета по логике работы и вопросам.
weranda
10 апреля 2018, 14:16
modx.pro
657
0

Комментарии: 0

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0