diff --git a/build.py b/build.py
index 5e28216..1007819 100644
--- a/build.py
+++ b/build.py
@@ -1,5 +1,6 @@
import os
import markdown
+import shutil
from pathlib import Path
TEMPLATE = """
@@ -22,7 +23,11 @@ TEMPLATE = """
nav a:hover {{ text-decoration: underline; }}
.person {{ margin-bottom: 15px; padding-bottom: 15px; border-bottom: 1px dashed #ddd; }}
.person-name {{ font-weight: bold; font-size: 1.1em; color: #222; }}
+ .person-name a {{ color: #003366; text-decoration: none; }}
+ .person-name a:hover {{ text-decoration: underline; }}
.person-details {{ color: #555; font-size: 0.95em; }}
+ .back-link {{ display: inline-block; margin-bottom: 20px; color: #003366; text-decoration: none; }}
+ .back-link:hover {{ text-decoration: underline; }}
@@ -81,7 +86,7 @@ def main():
for md_file in news_files:
build_page(md_file, Path(f'public/news/{md_file.stem}.html'), md_file.stem.replace('-', ' ').title())
- # 3. Страница сотрудников (с группировкой!)
+ # 3. Страница сотрудников (с группировкой и ссылками!)
staff_by_lab = {}
unassigned = []
@@ -99,7 +104,11 @@ def main():
if position: details.append(position)
details_str = ", ".join(details)
- person_html = f''
+ # Создаем ссылку на персональную страницу
+ person_html = f''''''
if lab == 'Без подразделения' or not lab:
unassigned.append(person_html)
@@ -111,7 +120,6 @@ def main():
# Формируем HTML для страницы сотрудников
staff_html = "Наши сотрудники
"
- # Сначала лаборатории в заданном порядке (можно отсортировать)
lab_order = [
"Лаборатория математики и телекоммуникаций",
"Лаборатория теоретической и вычислительной физики",
@@ -124,7 +132,6 @@ def main():
for p in staff_by_lab[lab]:
staff_html += p
- # Остальные лаборатории (если появятся новые)
for lab, people in staff_by_lab.items():
if lab not in lab_order:
staff_html += f"{lab}
"
@@ -139,18 +146,27 @@ def main():
with open('public/staff.html', 'w', encoding='utf-8') as f:
f.write(TEMPLATE.format(title="Сотрудники", content=staff_html))
- # Создаем индивидуальные страницы для каждого сотрудника
+ # 4. Создаем индивидуальные страницы для каждого сотрудника
for md_file in Path('content/staff').glob('*.md'):
- build_page(md_file, Path(f'public/staff/{md_file.stem}.html'), meta.get('name', md_file.stem))
-
- # 4. Копирование статических файлов (картинки, CSS и т.д.)
+ with open(md_file, 'r', encoding='utf-8') as f:
+ meta, body = parse_front_matter(f.read())
+
+ name = meta.get('name', md_file.stem.replace('-', ' ').title())
+
+ # Добавляем ссылку "Назад к списку" в начало страницы
+ full_content = f'← Назад к списку сотрудников\n{body}'
+ html_content = markdown.markdown(full_content, extensions=['fenced_code', 'tables'])
+
+ with open(Path(f'public/staff/{md_file.stem}.html'), 'w', encoding='utf-8') as f:
+ f.write(TEMPLATE.format(title=name, content=html_content))
+
+ # 5. Копирование статических файлов (картинки)
if Path('static').exists():
- import shutil
shutil.rmtree('public/static', ignore_errors=True)
shutil.copytree('static', 'public/static')
- print(" Статические файлы скопированы")
+ print("✅ Статические файлы скопированы")
- print("✅ Сайт успешно собран! Сотрудники сгруппированы.")
+ print("✅ Сайт успешно собран! Сотрудники сгруппированы и кликабельны.")
if __name__ == '__main__':
- main()
+ main()
\ No newline at end of file