“{{ review.text }}”
{% extends 'App::V2/base.html.twig' %}
{% set firstName %}
{% if profile.user.device == 'ANDROID' %}
{{ profile.lastname|default('')|trim|upper }}
{% else %}
{{ profile.firstname|default('')|trim|lower|capitalize}}
{% endif %}
{% endset %}
{% set lastName %}
{% if profile.user.device == 'ANDROID' %}
{{ profile.firstname|default('')|trim|lower|capitalize}}
{% else %}
{{ profile.lastname|default('')|trim|upper }}
{% endif %}
{% endset %}
{% set teacherName = (firstName ~ ' ' ~ lastName)|trim %}
{% set city = profile.city|default('') %}
{% set postalCode = profile.department|default('') %}
{% set country = profile.country|default('FR')|upper %}
{% set cleanContent = profile.content|default('')|trim %}
{% set bio = cleanContent ? (cleanContent|length > 220 ? cleanContent|slice(0, 220) ~ '...' : cleanContent) : 'Annonces de cours particuliers sur RueduProf.' %}
{% set longBio = cleanContent ?: 'Annonces de cours particuliers sur RueduProf.' %}
{% set avatar = (profile.avatar is defined and profile.avatar and profile.avatar.path is defined and profile.avatar.path)
? 'https://www.rueduprof.com/uploads/avatar/' ~ profile.avatar.path
: null
%}
{% set subjects = [] %}
{% set levels = [] %}
{% set modes = [] %}
{% set pricing = [] %}
{% set priceFrom = null %}
{% for item in profile.categories|default([]) %}
{% if item.category is defined and item.category and item.category.name is defined and item.category.name and item.category.name not in subjects %}
{% set subjects = subjects|merge([item.category.name]) %}
{% endif %}
{% if item.pricePerHour is defined and item.pricePerHour is not null %}
{% if priceFrom is null or item.pricePerHour < priceFrom %}
{% set priceFrom = item.pricePerHour %}
{% endif %}
{% endif %}
{% if item.primaire is defined and item.primaire and 'Primaire' not in levels %}
{% set levels = levels|merge(['Primaire']) %}
{% endif %}
{% if item.college is defined and item.college and 'Collège' not in levels %}
{% set levels = levels|merge(['Collège']) %}
{% endif %}
{% if item.lycee is defined and item.lycee and 'Lycée' not in levels %}
{% set levels = levels|merge(['Lycée']) %}
{% endif %}
{% if item.superieur is defined and item.superieur and 'Supérieur' not in levels %}
{% set levels = levels|merge(['Supérieur']) %}
{% endif %}
{% if item.webcam is defined and item.webcam and 'En ligne' not in modes %}
{% set modes = modes|merge(['En ligne']) %}
{% endif %}
{% if item.outPlace is defined and item.outPlace and 'À domicile' not in modes %}
{% set modes = modes|merge(['À domicile']) %}
{% endif %}
{% if item.inPlace is defined and item.inPlace and 'Chez le professeur' not in modes %}
{% set modes = modes|merge(['Chez le professeur']) %}
{% endif %}
{% set noteParts = [] %}
{% if item.webcam is defined and item.webcam %}
{% set noteParts = noteParts|merge(['En ligne']) %}
{% endif %}
{% if item.outPlace is defined and item.outPlace %}
{% set noteParts = noteParts|merge(['À domicile']) %}
{% endif %}
{% if item.inPlace is defined and item.inPlace %}
{% set noteParts = noteParts|merge(['Chez le professeur']) %}
{% endif %}
{% if item.category is defined and item.category and item.category.name is defined %}
{% set pricing = pricing|merge([{
'label': item.category.name,
'price': (item.pricePerHour is defined and item.pricePerHour is not null) ? item.pricePerHour ~ '€ / h' : 'Sur demande',
'description': item.content,
'note': noteParts|join(' · ')
}]) %}
{% endif %}
{% endfor %}
{% set headline = subjects|length
? 'Professeur de ' ~ subjects|slice(0, 3)|join(' et ') ~ (levels|length ? ' · ' ~ levels|join(', ') : '')
: 'Professeur particulier'
%}
{% set zones = [] %}
{% if city %}
{% set zones = zones|merge([postalCode ? city ~ ' (' ~ postalCode ~ ')' : city]) %}
{% endif %}
{% set teacher = teacher|default({
'first_name': firstName ?: 'Professeur',
'last_name': lastName ?: '',
'headline': headline,
'city': city ?: postalCode,
'price_from': priceFrom ?? 0,
'rating': null,
'reviews_count': 0,
'students_count': 0,
'response_time': null,
'experience_years': null,
'verified': false,
'bio': bio,
'long_bio': longBio,
'avatar': avatar,
'teaches': subjects,
'levels': levels,
'modes': modes,
'zones': zones,
'languages': country == 'FR' ? ['Français'] : [],
'badges': [],
'highlights': [],
'pricing': pricing,
'availability': [],
'reviews': [],
'faq': []
}) %}
{% set teacher_full_name = (teacher.first_name|trim ~ ' ' ~ teacher.last_name)|trim %}
{% set teacher_headline = teacher.headline|lower %}
{% set teacher_price = teacher.price_from %}
{% set seoTitle %}Cours particuliers avec {{ teacher_full_name|trim }} à {{ city }} ({{ postalCode }}){% endset %}
{% set seoUrl %}https://www.rueduprof.com/{{ profile.id ~ '/professeur-' ~ profile.department ~ '-' ~ (profile.firstname|myslugify) ~ '-' ~ (profile.lastname|first|myslugify) ~ '/' }}{% endset %}
{#
{% set seoDescription %}Découvrez le profil de {{ teacher_full_name|trim }}, {{ teacher_headline|trim }}, {% if teacher_price %}à partir de {{ teacher_price }}€.{% else %}sur RueduProf.{% endif %}{% endset %}
#}
{% block meta_title %}{{seoTitle}}{% endblock %}
{% set seoDescription %}
{%- if profile.content -%}
{%- if profile.content|length > 155 -%}
{{- profile.content|slice(0, 155)|raw -}}...
{%- else -%}
{{- profile.content|raw -}}
{%- endif -%}
{%- else -%}
Découvrez le profil de {{ teacher_full_name|trim }}, {{ teacher_headline|trim }}, {% if teacher_price %}à partir de {{ teacher_price }}€.{% else %}sur RueduProf.{% endif %}
{%- endif -%}
{% endset %}
{% block meta_description %}
{{- seoDescription -}}
{% endblock %}
{% block canonical %}{{seoUrl}}{% endblock %}
{% block open_graph %}
{% endblock %}
{% block twitter_card %}
{% endblock %}
{% block snippet_json %}
{% include 'App::schema/profile_show_user.html.twig' with {
profile: profile
} only %}
{% endblock %}
{% block body %}
{{ teacher.headline }} {{ teacher.bio }} {{ teacher.long_bio|raw|nl2br }} {{ teacher.levels|join(' · ') }} {{ teacher.modes|join(' · ') }} {{ teacher.zones|join(' · ') }} {{ teacher.languages|join(' · ') }} {{ item.note }} {{ item.description }} “{{ review.text }}”
{% for itemCategory in profile.categories %}
{% set preposition = itemCategory.category.name|first|lower in ['a', 'e', 'i', 'o', 'u'] ? "d'" : ' de ' %}
{% if location %}
{% if itemCategory.category.type and itemCategory.category.type == 'formations' %}
{% for itemCategory in profile.categories %}
{% set preposition = itemCategory.category.name|first|lower in ['a', 'e', 'i', 'o', 'u'] ? "d'" : ' de ' %}
{% if itemCategory.category.type and itemCategory.category.type == 'formations' %}
{% for key, item in premia %}
{% if item.profile.user.id != 1 or (app.user and app.user.roles[0] == 'ROLE_SUPER_ADMIN') %}
{% set profile = item.profile %}
{% set user = profile.user %}
{% set avatar = profile.avatar %}
{% set isAndroid = user.device == 'ANDROID' %}
{% set displayName = (profile.firstname and profile.lastname and not isAndroid)
? profile.firstname ~ ' ' ~ profile.lastname|first ~ '.'
: profile.lastname ~ ' ' ~ profile.firstname|first ~ '.'
%}
{% set profileUrl = path('app_profile_user_show', {
id: profile.id,
slug: 'professeur-' ~ profile.department ~ '-' ~ profile.firstname|myslugify ~ '-' ~ profile.lastname|first|myslugify
}) %}
{% set adUrl = path('app_profileCategory_show', {
profile: profile.id,
slug: 'professeur-' ~ profile.department ~ '-' ~ profile.firstname|myslugify ~ '-' ~ profile.lastname|first|myslugify,
skill: category.slug,
id: item.id
}) %}
{% include 'App::Category/_teacher_card.html.twig' with {
is_premium: true,
item: item,
category: category,
subjectPrefix: subjectPrefix,
subjectName: subjectName,
location: location,
card_variant: 'show'
} only %}
{% endif %}
{% endfor %}
{% else %}
{{ teacher.first_name }} {{ teacher.last_name|first }}.
{{ teacher.headline }}
Matières, niveaux et modalités
Tarifs par matière
Créneaux visibles rapidement
Ce que disent les élèves et les parents
Questions fréquentes