Skip to content

OpenFest theme, built on top of Krasimir Tsonev's html+css work

License

GPL-2.0, Unknown licenses found

Licenses found

GPL-2.0
LICENSE
Unknown
license.txt
Notifications You must be signed in to change notification settings

OpenFest/initfest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7c7661f · Oct 31, 2024
Oct 30, 2024
Oct 13, 2014
Oct 11, 2024
Oct 31, 2024
Oct 14, 2014
Sep 25, 2014
Sep 30, 2020
Oct 14, 2014
Oct 30, 2024
Oct 4, 2014
Oct 4, 2014
Jul 21, 2021
Oct 4, 2014
Oct 4, 2014
Oct 16, 2023
Oct 10, 2024
Oct 30, 2024
Oct 30, 2024
Oct 31, 2024
Oct 11, 2024
Jul 21, 2021
Sep 30, 2014
Oct 10, 2024
Oct 24, 2016
Oct 10, 2024
Sep 20, 2015
Oct 16, 2023
Sep 30, 2014
Sep 30, 2015
Sep 14, 2015

Repository files navigation

Документация на сайта на openfest

Основни моменти

Сайтът представлява wordpress с тема, писана специално за целта (initfest), която може да се намери в github (https://github.com/initLab/initfest), polylang plugin-а за многоезичност и jetpack за друга функционалност.

Част от данните в сайта се взимат автоматично от външна система (clarion, достъпна на https://cfp.openfest.org, source има на https://github.com/ignisf/clarion/), която се грижи да събира програмата и да комуникира с лекторите.

Кратко overview на модела на wordpress

(който си е играл по-сериозно, може да прескочи това некадърно обяснение)

Почти всичко в wordpress е post. Всеки post има следните измерения (т.е. може да има за всяко от тях точно една стойност):

  • тип - post, page, custom page и т.н.
  • език
  • статус - published, draft, trash...
  • category - категория, в които попада

Всеки post има следните задължителни неща (не са всички, само релевантните за нас):

  • title - някакво заглавие
  • slug - идентификатор, който се ползва в url-тата (не е title)
  • author - автор
  • content - текст

И всеки post също така може да има

  • custom fields, които да ползваме в логиката с някаква цел (вж. url за sponsors).
  • thumbnail/featured image - картинка, която се показва с post-а
  • tag-ове (в момента не ги ползваме, но може да ни потрябват)

Многоезичност

Използваме polylang plugin-а, който превежда всичко, което му падне.

Интерфейсът му е лесен за ползване, в общи линии за всеки тип post/page и т.н. има език, и вътре в редакцията може да се избере да се иде на версията за другия език (вж. по-долу процедурата за нов спонсор). Има превеждане на отделни string-ове, които са били регистрирани от plugins->polylang->strings. Стринговете в момента са регистрирани във functions.php най-отдолу.

polylang създава един проблем при автоматичните скриптове, че трябва да се прави wp_query по отделно за двата езика, защото по default дава текущия или default-ния. Ако автоматично се създава post, трябва задължително да се създаде по един за двата езика и после да се свържат.

Също така, ако например дадена категория името и го няма преведено на другия език, не дава на този език да се слагат неща в тази категория, и не дава никаква грешка.

Хубаво е да се внимава с избирането на имена на slug-овете на post-овете, понеже два post-а не могат да имат същия slug, за това в момента в сайта има schedule и schedule-3 (едното е български, другото английски).

По принцип без polylang темата няма да работи, или поне не по очаквания начин. Има една-две wrapper функции, но те са само за няколко редки места, където не е load-нат plugin-а още.

Менюта

В темата има 6 менюта, всяко от които в два варианта, за двата езика.

  • Главно меню - показва се винаги, най-отгоре на сайта
  • submenu/about - показва се само на about и свързаните страници, като team, volunteers и т.н., логиката за показването му може да се види в page.php.
  • Дънно openfest - като главното меню
  • Дънно програма - свързаните с програмата неща
  • Дънно други - хотели, пиене и т.н.
  • Дънно follow - социални мрежи

Единственото по-специално е, че link-овете в главното меню за социалните мрежи и т.н. трябва да са без име и да са в специфични css класове, за да се показват както е нужно.

Главна страница

Страницата се различава от останалите по различния си template и начин на работа. Идеята и е, че показва нещо като sidebar-а, но не същото (кодът е набит директно вътре) и след това в две колони на два реда последните post-ове от категория "news". Беше с три колони, но отиваше твърде надолу, а текстът на главната страница го има в about и не е това, което ще гледат хората като идват на сайта.

Custom post-ове и полета в тях

Спонсори

Спонсорите са отделен тип post в системата. Имат език, excerpt, featured image (лого на спонсора) и две custom полета: url и partner.

  • url е link към сайта на спонсора
  • partner означава, че спонсорът реално е партньор и трябва да се покаже в друга част на sidebar-а.

Страницата за спонсорите трябва да е от template "Sponsors" (виж page-sponsors.php) за да работи.

Спонсорите и партньорите са в същия тип post поради това, че са твърде близки по значение и визуализация.

Процедура за добавяне на спонсор

  • От менюто се избира sponsors->add sponsor
  • Задава му се име и (ако има) текст на български
  • в custom fields му се добавя url със стойност http://..дето трябва
  • ако е партньор, в custom fields му се добавя partner със стойност 1
  • отива се на featured image
  • upload-ва се (горе има upload tab)
  • избира се картинката
  • дава се update
  • отива се в английската версия ( щрака се на + знака до флагчето, първата кутия в дясно)
  • слага се заглавието на английски (за повечето е същото) и текста на английски дава се update

Лектори

Лекторите са съвсем прост тип post, който има отделен template за визуализация (виж page-speakers.php). Страницата за всички лектори трябва да е от този template, за да работи.

Като наша добавка имаме 3 custom field-а, които се визуализират, ако са добавени в едно малко меню с икони:

  • github - github профил (само името)
  • twitter - twitter профил (само името на account-а)
  • public_email - публичния email адрес

todo: да се добави и url към някакъв homepage, като се появи в clarion-а.

Транспорти

За всеки тип транспорт до мястото на събитието има отделна страница, като всички се сглобяват в една и се показват в sidebar-а или където е нужно.

Комуникация с clarion

Clarion ни предоставя JSON интерфейс с всичките неща, от които се генерира програмата.

Данните се дърпат чрез smartCurl (който и кешира данните) и от тях се генерират програмата на сайта и списъкът с лекторите.

Скриптовете, които генерират програмата правят #href link-ове към страницата с лекторите, за да работят линковете. href-овете са наименувани като името на лектора.

schedule-config.php

За да се избере какво да се визуализира, се ползва schedule-config.php, който от своя страна се зарежда от page-schedule.php и page-speakers.php.

Има два елемента, които се вадят от името на сайта/страницата - дали става въпрос за лекции или workshop-и, и за коя година става въпрос. На база на тях getSchedConfig() в schedule/config.php избира кое е id-то на конференцията и кой тип са лекциите и workshop-ите.

Генериране на външния вид на таблицата

Черна магия, Slackware трябва да го опише.

functions.php

Вътре са добавени няколко работни функции, които трябва в някакъв момент да се прегледат:

  • openfest_home_page() - връща дали е главната страница, поради един проблем, създаден от polylang, заради който is_front_page() не работеше.
  • of_get_lang(), е_() - wrapper-и около polylang, ако липсва plugin-а.
  • pn_get_attachment_id_from_url - отмъкната функция, която намира id на attachment от url, трябва при зареждането на снимките на лекторите.

Създаване на сайт за ново издание на събитието

Клонира се последният сайт с помощта на NS Cloner plugin-а от главния админ панел на сайта. За slug на сайта е редно да се използва годината на предстоящото събитие, тъй като това ще бъде "ключ" за графичните елементи (виж по-долу).

Статусът на всички публикации се слага на "Чернова", за да не се виждат в сайта, но да могат при нужда да се използват за шаблони.

В Languages -> Strings translations трябва да се обнови информация като име и описание на събитието, дати и местоположение на залата.

За да излезе новият сайт на началната страница, maniax трябва да направи някаква магия в базата, тъй като redirect плъгинът е счупен.

Обновяване на визията

Всяка година се променя визията на сайта. Ако няма намеса в layout-а, е достатъчно да бъдат добавени следните картинки (със съответната година в името):

  • banner-back-2020.jpg - фон за шапката на сайта
  • banner-bg-2020.png - надпис на български в/у горния с името на събитието, дати и място
  • banner-en-2020.png - като горния надпис, но на английски
  • logo-2020.png - лого на събитието
  • navbg-2020.png - фон за менюто в най-горната част на сайта. Обикновено е градиент от бяло към основния цвят.

About

OpenFest theme, built on top of Krasimir Tsonev's html+css work

Resources

License

GPL-2.0, Unknown licenses found

Licenses found

GPL-2.0
LICENSE
Unknown
license.txt

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published