Как сделать генерацию новой страницы в зависимости от введенных данных?

Главные вкладки

Аватар пользователя Kris Iris Kris Iris 6 февраля 2019 в 3:20

Здравствуйте!
Есть учебный сайт.
При заполнении данных в форме, таких как "предмет" и "уровень" и после нажатия кнопки "подобрать репетитора", юзер должен оказываться на странице ../предмет/уровень
Подскажите пожалуйста, как такое сделать?

Комментарии

Аватар пользователя ivnish ivnish 6 февраля 2019 в 7:09

Слишком размытое описание, нужно больше подробностей.

Я делал сайт по поиску репетиторов и хочу вам сказать, что без хорошего разработчика тут не обойтись. Хотя многие вещи, особенно в семерке можно сделать контрибом.

Аватар пользователя Kris Iris Kris Iris 7 февраля 2019 в 2:12

Алгоритм такой, юзер к примеру ищет репетитора по математике, выбирает предмет Математика, затем уровень, Начальный например. И начинает заполнять форму.
В которой также укажет предмет и уровень.
Страница, на которую он попадет далее, должна иметь вид:
.../tutors/Maths/beginner
Вот моя задача сделать, чтобы такой адрес генерировался:
.../tutors/[subject]/[level]

Аватар пользователя Orion76 Orion76 7 февраля 2019 в 3:33

Понятнее-)
Тогда, если, как Вы пишите, "красивость" url не имеет значения и url может иметь такой вид:
/tutors/111/222

где 111 и 222 - идентификаторы соответствующих сущностей: предмет и уровень

значит создаете правило Rules
1.Событие - после сохранения материала
2.Условие:
- материал имеет тип того материала, форму которого пользователь заполняет.

3.Действие: перейти на url составленный из токенов материала, тип которого указан в предыдущем шаге(2).

Аватар пользователя gun_dose gun_dose 6 февраля 2019 в 10:15

Страницу сделайте через Panels как страницу с двумя аргументами - айдишник предмета и айдишник уровня соответственно. Эти же аргументы передадите во вьюсы на странице.

Сам переход из формы - сделайте небольшую кастомную форму с двумя селектами и по отправке формы выполните переход наподобие

<?php
drupal_goto
('/teacher-select/' $form_state['values']['subject'] . '/' $form_state['values']['label']');
?>

Если хотите красивые урлы для таких страниц, то pathauto вам не поможет, но алиас можно сгенерировать на лету во время отправки формы. Вернее сперва проверить, существует ли он, и если нет, то создать.

Аватар пользователя Kris Iris Kris Iris 7 февраля 2019 в 2:25

Задача не столько в красивых урлах, сколько в пути, с которого юзер пришел к моей странице. То есть если о пришел с предмета математика, то в моем урл тоже должна быть математика.

Аватар пользователя gun_dose gun_dose 7 февраля 2019 в 9:40

Я вообще не могу понять, в чём у вас проблема, ведь задача совершенно тривиальная. Предлагаю такой алгоритм:
0. Забыть всю ту ерунду, что написали выше про Rules.
1. Создаёте страницу вьюс с двумя контекстными фильтрами - предмет и сложность.
2. Создаёте блок вьюс для отображения ссылок на уровни на страницах предметов. Поскольку количество уровней сложности величина небольшая и относительно постоянная, то предположим, есть три уровня сложности: простой, не очень простой и сложноватый. И у них айдишники, предположим 10, 11, 12 соответственно. Последовательность создания блока вьюс:
2.1. Блок должен выводить термины таксономии (ну или чем там у вас сделаны предметы, если нодами, то ноды типа предмет).
2.2. В блок передаём контекстный фильтр ID термина таксономии из URL.
2.3. Выводим единственное поле ID термина и скрываем его вывод.
2.4. Выводим поле "Пользовательский текст" и пишем туда что-то наподобие

<a href="/tutors/[токен-айдитшника-текущего-термина]/10">Простой</a>
<a href="/tutors/[токен-айдитшника-текущего-термина]/11">Не очень простой</a>
<a href="/tutors/[токен-айдитшника-текущего-термина]/12">Сложноватый</a>

3. Размещаем этот блок на страницах предметов.
4. Наслаждаемся результатом.