last day (19 days later) » 

6:18 PM
1
A: Сохранение путей файлов при сборке в Pelican

andreymalПокопался в исходниках Pelican и обнаружил у класса Page две любопытные вещи override_url и override_save_as — путём их переопределения можно писать файлы куда угодно. После этого родился такой плагин (про их написание есть в документации): Файл с настройками pelicanconf.py PLUGINS = ['pagefixe...

 
Ого! И в Windows работает.
andreymal, всё равно относительные ссылки посредством {filename} можно создавать только на файлы из папки content. А можно ли делать относительные ссылки на файлы из других папок директории с сайтом, например, themes? Тут подробности этого вопроса, я который недавно задавал. Спасибо.
 
Думается, необходимость в ссылках за пределы content указывает на косяк в архитектуре и лучше от этой надобности избавиться, контенту не следует быть привязанным к конкретной теме
 
andreymal, как тогда лучше поступить? Переносить изображения, css, скрипты в content? Но тогда такая проблема: эти файлы будут дублироваться в output. Т. к. в них нет переменных, не понимаю, зачем создавать столько дубликатов, которые будут только мешать. Спасибо.
 
Зависит от цели, которую я при беглой пробежке по исходникам сайта не совсем понял. Хотя подозреваю, что тут будут к месту блоки-шаблоны подобно какой-нибудь википедии, но как их сделать в Pelican я сходу не нашёл, так что теперь наверно я уже не помощник
 
andreymal, в исходниках только тестирую возможности Pelican, чтобы перенести потом настоящий сайт. «Блоки-шаблоны подобно какой-нибудь википедии» вряд ли буду использовать :) . Однако неплохо было бы просто ссылаться в статьях, написанных в Markdown, на изображения. Причём достаточно редко, поскольку изображения, в основном, хранятся на внешнем хостинге. Но что-нибудь вроде ![Описание изображения]({{SITEURL}}/themes/mytheme/path/to/my/image.svg‌​) иметь было бы неплохо. Спасибо.
 
6:18 PM
Изображения, относящиеся к статьям, должны быть в content. Изображения, относящиеся к интерфейсу (иконка i для примечания, кнопочки копирования/вставки и т. п.) должны реализовываться через CSS или таки «блоки-шаблоны» прописанные в теме, а контент должен их использовать неявно. Но как это всё грамотно делать в Pelican, я не знаю
 
Изображения, относящиеся к статьям, должны быть в content. — И дублироваться в output?
 
Что имеется в виду под дублированием?
Подозреваю, вы имеете в виду, что картинка повторяется два раза — один раз в output и один раз в content
Но вот в чём дело — папку output добавлять в git вообще не нужно, и таким образом на bitbucket получается одна копия картинки в content, и на готовом сайте тоже одна копия картинки
И достаточно удалить output и добавить его в .gitignore, и проблема дублирования перестаёт существовать
К слову, с файлами в каталоге с темой всё то же самое
 
6:45 PM
@andreymal я видел, что в некоторых сайтах нет папки output, но не поверил, что без неё можно. // Однако как это работает, не пойму: удалил output → добавил эту папку в .gitignore → запушил изменения на BitBucket. Раньше мог открыть страницу, например, по адресу https://kristinita.bitbucket.io/output/pages/Life-hacks/andreymal.html, теперь по ней File not found. Пробовал убрать output из URL или заменить его на content → тоже «файл не найден».
 
Я вообще не знаю откуда должно браться содержимое kristinita.bitbucket.io )
Но по-хорошему суть такова:
1) Клепаем контент
2) Пишем «pelican content» и получаем папочку output с полностью готовым сайтом
3) Заливаем этот полностью готовый сайт на хостинг
4) Удаляем папочку output, потому что сайт уже залит и эта папочка нафиг не нужна
Для большинства хостингов нормально работает именно такой алгоритм, а как bitbucket.io устроен я не знаю
Собственно, output — это то, что получается при обработке и сборке content и theme, оно должно быть самодостаточным и полностью независимым от всех остальных файлов и его должно быть возможно всегда восстановить с помощью команды «pelican content»
И когда это всё соблюдается и когда хостинг нормальный, держать папочку output в гите нет никакого смысла
Так, если я правильно понял документацию битбакета, то для сайта kristinita.bitbucket.io должен быть репозиторий kristinita.bitbucket.org, внутри которого будет ТОЛЬКО содержимое папки output и НИЧЕГО больше
 
@andreymal Да, я так и делаю. После выполнения команды pelican contentв папке output появляются html файлы. «Запушиваю» изменения на хостинг и ссылаюсь именно на эти HTML-файлы.
 
Только вот запушивать надо ТОЛЬКО содержимое папки output и НИЧЕГО больше :)
И даже не саму папку output, а только содержимое и всё
А всё остальное (content, pelicanconf.py, theme и так далее) должно быть в другом каком-нибудь репозитории
 
Без них, скорее всего, как на BitBucket, как и GitHub Pages — хостинги для статических сайтов, — нельзя.
 
Вот сейчас не понял о чём речь
 
6:56 PM
@andreymal Насколько понял, на хороших платных хостингах можно выкладывать только содержимое content. В отличие от GitHub Pages и BitBucket.
 
На хороших платных хостингах нет вообще никаких ограничений
А на GitHub Pages и BitBucket как раз можно выкладывать только статический контент
 
Т. е. структура сайта должна быть такова: все изображения и прочие файлы, на которые хочу ссылаться, должны быть в content?
@andreymal GitHub Pages Jekyll на Ruby, видимо, поддерживает, но не Pelican.
 
Если более точно, то содержимое из content должно ссылаться только на content, а содержимое из theme должно ссылаться только на theme
Другими словами, к контенту должно быть возможно прикрутить любую тему, а тему должно быть возможно прикрутить к любому контенту
Они н должны быть намертво связаны друг с другом
«pelican content» соединяет это всё вместе и пихает в папочку output
И уже содержимое этой папочки output — и только оно — и нужно заливать в репозиторий под именем kristinita.bitbucket.org :)
А для всего остального можно создать второй репозиторий, или же вообще никакого репозитория не создавать, если не хочется
 
А почему так сделали, что неизменяемое содержимое content, как то те же изображения, дублируется?
 
Оно не дублируется
content и theme — это исходники сайта, output — это готовый сайт
Готовый сайт никак не должен быть связан с исходниками
Они полностью независимы друг от друга, поэтому неверно это понимать как дублирование
В идеале должно быть возможно скинуть эту папочку output на какую-нибуд флешку и смотреть на любом компьютере без интернета и без всех остальных файлов :)
В этом суть
 
7:06 PM
Вроде ясно, спасибо за ликбез! Простите за, возможно, глупые вопросы.
 
Кстати, в .gitignore также не помешает добавить

desktop.ini
__pycache__
*.pyc

Оно в репозитории тоже бесполезно
 
@andreymal А эти файлы/папки же не в output находятся, их и не будет в репозитории.
 
Ну если в репозитории будет только содержимое output, то не будет)
Но всё же если приспичит запихать всё остальное во второй репозиторий, то там стоит это прописать
Ну собственно официальный сайт пеликана является неплохим примером) github.com/getpelican/pelican-blog
Только репозитория с папочкой output там нет, потому что её содержимое просто заливается на хостинг и второй репозиторий не нужен
 
Добавите свой плагин в список? Он и другим пользователям наверняка пригодится.
 
Я подумаю
 
7:20 PM
Ещё раз благодарю. Жаль, что Pelican здесь, видимо, кроме Вас никто не пользуется. Даже метки до сих пор не было.
 
7:56 PM
@СашаЧерных я тут попробовал немного доделать репозиторий ближе к тому, как это принято делать, в основном поменял тему и конфиг
https://home.andreymal.org/files/kristinita.7z
Правда, я не всё понял в оригинале и мог что-нибудь сломать, а в файле content/Sublime Text/SashaSublime.md вообще не разобрался и пока просто удалил его :)
Но, я надеюсь, это не помешает понять суть моих изменений и поможет послужить отправной точкой для дальнейших разбирательств с пеликаном

Посмотреть в действии можно тут: https://home.andreymal.org/files/kristinita/
А ещё в теме по-хорошему вроде не должно бы быть папки node_modules, но что как должно это возможно не совсем ко мне
 

  last day (19 days later) »