New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Поле «Изображение записи» #273

Open
maxsite opened this Issue Nov 23, 2018 · 2 comments

Comments

Projects
None yet
2 participants
@maxsite
Owner

maxsite commented Nov 23, 2018

Поле «Изображение записи» содержит полный url-адрес картинки. Это адрес используется для формирования миниатюры записи с помощью функции thumb_generate(). На входе должен быть адрес, который указывает на каталог uploads.

Есть одна проблема: при смене адреса сайта (включая http-протокол) приходится исхитряться, чтобы адреса соответствовали новому адресу. Оптимальным вариантом было бы заполнять это поле не полным адресом, а относительно корня сайта. Вместо «http://сайт/uploads/1.jpg» указывать «uploads/1.jpg». Тогда система сама бы проставила полный адрес.

Алгоритм достаточно простой — если нет начального вхождения «http», то просто дописывать текущий адрес сайта.

Я проверил по коду системы — такой вариант возможен, поскольку почти во всех случаях мета-поле image_for_page используется как параметр для thumb_generate(). Но есть вероятность, что на каких-то шаблонах это поле используется напрямую, то есть вне этой функции, а значит такой адрес может оказаться невалидным в итоге (особенно для сайтов в подкаталогах домена). Здесь ещё есть момент, что поле могло быть раньше заполнено любым вариантом и непонятно как его тогда интерпретировать.

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

  • Адреса в поле image_for_page можно указывать как полные, так и короткие.

  • Если адрес полный (с http), то он обрабатывается как и раньше. При этом вводится автозамена протокола так, чтобы адреса http и https считались одинаковыми. Это решит проблему при смене протокола сайта.

  • Если адрес короткий (нет вхождения http), то он автоматом дописывается до полного адреса относительно корня сайта.

  • Предусмотреть специальный bb-код [page_images] и [pi], которые автоматом заменяются на адрес каталога записи в _pages. Это сильно сократит запись адреса.

  • Кнопка в записи для заполнени этого поля будет генерировать адрес с [page_images].

  • Адреса в старых записях мы не трогаем — они отдаются как есть, то есть они обрабатываются по этим же правилам. Если нужно менять, то вручную (кроме равенства протоколов http и https).

Обсуждения данного вопроса будет до следующей версии MaxSite CMS 101. Так что времени не много. :)

@maxsite

This comment has been minimized.

Owner

maxsite commented Nov 29, 2018

В процессе реализации выяснились некоторые нюансы.

  1. BB-код [page_images] и [pi] невозможно ввести, поскольку нужен ID-записи, который недоступен в thumb_generate(). Теоретически его можно получить на странице записи, но уже проблема для других страниц. Поэтому эту идею придется отбросить.

  2. Будет «выравнивание» протоколов http и https. То есть не важно с каким задан адрес. Он будет автоматом преобразован к текущему протоколу сайта.

  3. Если в начале адреса нет вхождения «http», то к адресу автоматом дописывается адрес сайта. Это позволяет указывать короткий адрес вида «uploads/_pages/123/photo.jpg». Была идея указывать адрес относительно каталога uploads, но с ним адрес более информативный и понятный.

  4. Поскольку это может в теории привести к проблемам на некоторых сайтах то будет предусмотрена get-ключ thumb_in_url, где можно будет отключить все преобразования.

  5. Будет одноименный хук thumb_in_url, по которому можно перехватить обработку входящего адреса и навесить свой обработчик. Это для совсем сложных случаев.

  6. Кнопка «Использовать как изображение записи» будет вставлять короткий адрес относительно сайта.

@vimruler

This comment has been minimized.

vimruler commented Nov 29, 2018

  1. Кнопка «Использовать как изображение записи» будет вставлять короткий адрес относительно сайта.

Наконец-то! 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment