[NumberAbbreviation] - модификатор для сокращения больших чисел (1.2K)
Уже несколько раз поднимался вопрос по сокращению больших чисел до удобного формата как в социальных сетях.Я сначала не совсем понимал принцип формирования подобного формата чисел. Но благодаря пользователю Neonich решение было найдено.
Итак, есть решение — почему бы не сделать его для всех?
Как следствие этого появился пакет NumberAbbreviation, который добавляет новый модификатор numabbr.
По правде говоря использовать подобное сокращение можно лишь на больших числах, а значит на больших сервисах или соцсетях, где подсчёт идёт тысячами, но думаю своё применение он найдёт.Что под капотом?
Дополнение использует плагин, который добавляет феном-модификатор в момент инициализации Fenom и одноимённый сниппет-модификатор, который используется если не установлен pdoTools или если используется обычный синтаксис MODX.
Преимущество использования феном-модификатора очевидно — это скорость и отсутствие дополнительных запросов для вызова сниппета.
Примеры использования
{$views|numabbr} — вызываем через fenom-модификатор
[[+views:numabbr]] — вызываем через синтаксис MODX (используется сниппет-модификатор)
Другие примеры
{111|numabbr} — выведет 111{1000|numabbr} — выведет 1K
{1229|numabbr} — выведет 1.2K
{1500|numabbr} — выведет 1.5K
{154000|numabbr} — выведет 154K
{1000000|numabbr} — выведет 1M
{1500000|numabbr} — выведет 1.5M
Установить пакет вы можете подключившись к репозиторию modstore.pro либо скачав сам транспортный пакет с страницы дополнения.
• ДЕМОНСТРАЦИЯ И ДОКУМЕНТАЦИЯ =>
• БЕСПЛАТНО В MODSTORE.PRO =>
UPD:
— (22.12.2017) — новый логотип дополнения, старый: file.modx.pro/files/e/f/1/ef13fa1285ae08a963024d964cbc225b.png
Комментарии: 37
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
На свои дополнения ставь хоть миллион, я не буду против.
У этого дополнения другая целевая аудитория. Програмисты != клиенты.
Надеюсь ясно объяснил, как-то так.
Новый год на носу, будьте добрее.
Модешь прямо сейчас отключить свой плагин и у Fenom всё равно всё будет работать.
Понятно что у Fenom и через сниппет будет работать, но если вызывается именно fenom-модификатор, то работать будет быстрее, ты сам обратил на это внимание:
Но если у тебя 2 раза прописан один код в сниппете и плагине, то лучше бы оставить его в одном месте. А если и там, и там вызывается один метод из общего класса — то спасибо, что позаботился о пользователях Fenom!
У меня сейчас дубляж кода, типа если не сработает у пользователя плагин, то сниппет его страхует повторяя тот же код.
Спасибо за идею затолкнуть это в общий класс — так и сделаю!
На чистом MODX:
Ну и на Fenom:
Тут даже и говорить ничего не надо, с феном-модификатором страница грузится моментально.
Fenom FOREVER... )))
но в одном случае плагин для встраивания модификатора включен, а в другом — нет, и тогда будет запускаться сниппет, но тоже через Fenom.
Таким образом будет видна разница между сниппетом и встраиванием напрямую.
С плагином для феном-модификатора:
Без плагина (на основе сниппета-модификатора):
Настолько разницы я не ожидал, круто.
Да ещё видимо это данные только одного прогона на чистом кэше. Такой тест малоинформативен. Прогони 10 раз и дай средний результат.
П.С. Ради интереса проверил на том же модхосте. Страница со сниппетом грузится за 0.04 сек. с пустым кэшем. Второй запрос за 0.02 сек. Видимо твой сниппет так грузит сайт.
С плагином для феном-модификатора: 0.07425782
Без плагина (на основе сниппета-модификатора): 3.01222153
Код в сниппете и в плагине идентичный. Проверял на тестовом тарифе модхоста.
А какие цифры чистой страницы без модификатора и плагина?
Скрипт один в один как в оригинале. Тестовый тариф модхост, PHP 7.0
№1. Если нужен этот (или любой другой) модификатор, то лучше всегда использовать феном-модификаторы, а не сниппеты.
№2. Если есть модификаторы на сниппетах, переписать их все на феном.
№3. Если есть возможность, не использовать ни то ни другое. Вообще не стоит разрабатывать сайты, тогда никаких проблем не будет.
А я выскажу свой вывод, который ты можешь легко проигнорировать. Если пустая страница грузится за 0.05 сек, а со сниппетом за 3 сек, то проблема или в тесте или в сниппете.
Используем самый простой сниппет-модификатор, который просто возвращает $input:
Среднее значение с сниппетом: 2.59597648
Такой же упрощённый плагин для феном: 0.0543768
Не забывай, что тест проходит 10000 итераций.
Вывод: модификаторы — необходимое зло, но из двух зол лучше выбрать меньшее...
Сниппет — 2.0118967666667
Плагин — 0.0478010
Честно говоря, я не понимаю, что показывает твой тест. Никто не будет вызывать на странице 10 тыс. раз этот сниппет-фильтр. Обычно пользуются пагинацией и выводят 10 записей. Поэтому твой тест показывает непонятно что. Василий хоть тестирует работу хостинга, а что ты загадка. А если 10 млн. прогонов сделать, то вообще глаза округлятся.
П.С. Это я к тому, что твоим сниппетом можно пользоваться и с феномом и без. Всё будет хорошо. )
Поэтому я и вшил в пакет оба варианта, кто не пользуется одним, воспользуется другим. А кому важна скорость работы — тот уже и так использует феном везде.
Посмеялся от души, спасибо за юмор! :D
А можешь сделать тест для более реального случая — 10 циклов?
loadClass и getService не срабатывают — ломают Fenom на странице. В логах сервера появляется что-то типа этого:
В модификаторе-сниппете с этим проблем нету.