• Час читання ~3 хв
  • 30.06.2022

Стів Макдугал поставив нам чудове запитання в Twitter про наш редизайн та перезапуск Laravel News на Statamic:

>

Я хотів би прочитати, як хтось із команди @laravelnews пристосувався до @statamic і що змусило їх вибрати це як систему CMS.Було б дійсно цікаво подивитися, як їм довелося адаптуватися, і які непередбачені переваги вони могли знайти.

Відповіді на ці запитання не вміщаються в твіті, тому я хотів розглянути кожен пункт і трохи поділитися за лаштунками про те, як все це сталося.

Чому ми вибрали Statamic

Я подивився на Stamic з моменту його першого запуску. Дивлячись на мою історію покупок Statamic, я був клієнтом з версії 1, але ніколи не відчував, що настав час, щоб зробити стрибок від моєї старої системи. Все змінилося, коли вони запустили версії 3 минулого року та перемістив його до більшої установки в стилі пакета Laravel.

З версією 3 ви можете встановити її з будь-яким додатком Laravel, що означало, що я міг би зберегти багато наявного вторинного коду, який запускає Laravel News. Це такі речі, як розділ посилань, автоматизований щоденний інформаційний бюлетень, керування обліковими записами тощо. Знання, що я можу зберегти все це та отримати нову панель керування для написання та публікації дописів, було великою перемогою.

Ще одна перевага полягає в тому, що Statamic дозволяє змішувати та поєднувати з базою даних і плоскими файлами. У нас уже були користувачі в таблиці, але у нас виникла дивна невідповідність з нашою старою системою, коли у нас були автори статей у двох системах, наша таблиця користувачів і сайт WordPress. Я вручну синхронізував їх, щоб автори збігалися, і це було досить складно дозволити гостеві публікації.

Окрім цього, я завжди хотів, щоб сайт максимально використовував спільноту Laravel, і підтримка творців, які є нашими, а також моїми однолітками, була привабливою.

Як ми адаптувалися до Statamic

Statamic був для мене процесом навчання, і мені ще багато чого потрібно навчитися. Адаптація була досить легкою з точки зору щоденної публікації.

Усі статті на сайті містяться в одній колекції Statamic з приблизно 14 різними наборами полів для кожної публікації.

Statamic fieldsets

Все це в основному відповідає тому, що ми використовували в WordPress для старого сайту, тому аспект публікації не сильно змінився.

Що змінилося, так це те, як усе зберігається. Statamic дає вам можливість використовувати плоскі файли або базу даних, а для нашого поточного випуску ми використовуємо плоскі файли уцінки. Це понад 2500 лише для статей, і хоча база даних, ймовірно, є більш продуктивною в нашому масштабі, Statamic має кілька вбудованих параметрів кешування, що робить його спірним.

Ми використовуємо їхню систему статичного кешування, і як це працює, коли сторінка вперше завантажується, вона зберігає статичний HTML файл, тож Nginx намагається обслуговувати його, якщо він існує. Якщо ні, він створює файл і обслуговує його наступного разу. Це прискорює процес, коли ви отримуєте кешовану версію.

Звичайно, з 2500 публікаціями, десятком категорій і купою тегів кількість статичних файлів, які він створює, досить велика. Це не те, що ми плануємо часто очищати, лише коли нам потрібно внести зміни в дизайн. Однак під час публікації ми видаляємо деякі важливі сторінки, як-от домашню сторінку та сторінку батьківської категорії.

Щоб увімкнути статичне кешування в будь-який момент, коли у нас є розділ сайту, якому потрібні нові дані, ми використовуємо Alpine.js для захопити дані. Наприклад, під сторінкою інформації про кожну публікацію є розділ, що показує останні публікації.

Приклад останніх дописів

Ось внутрішній код Statamic Antlers у парі з Alpine, який зберігає його свіжим:

<ul x-data x-init="fetch('/ajax/latest').then(response => response.text()).then(html => $el.innerHTML = html)"
  class="lg:gap-16 sm:gap-8 grid grid-cols-12 col-span-10 col-start-2 gap-6">
  {{ collection:articles limit="3" :id:not="id" }}
  {{ partial:articles/card class="text-white" }}
  {{ /collection:articles }}
</ul>

За замовчуванням елементи списку попередньо заповнюються найновішими, коли файл спочатку кешується, але якомога швидше він замінюється "справжнім" останнім. Таким чином, він має дані на випадок невдачі запиту.

Нарешті, на маршруті ajax/latest він витягує з вторинного кешу Redis. Таким чином, він все ще кешується, але не назавжди кешується, як сторінка публікації.

Інший пакет, який ми використовуємо, — це Alpine Turbo Links.Це ще одна причина, чому сайт так швидко переміщається між сторінками, і з його встановленим Turbolinks автоматично отримує сторінку, змінює її <body> та об’єднує її <head>, все без вартості повного завантаження сторінки.

Чи є непередбачені переваги?

Думаю, що ще рано, але я помітив, що мені подобається панель керування Statamic.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Про автора CrazyBoy49z
WORK EXPERIENCE
Контакти
Ukraine, Lutsk
+380979856297