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'
{name}
{details_str}
' + # Создаем ссылку на персональную страницу + person_html = f'''
+
{name}
+
{details_str}
+
''' 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