Убрать автоматическое создание url

Комментарии

Аватар пользователя ivnish ivnish 25 ноября в 9:46

Зайти в настройки вашего текстового формата (/admin/config/content/formats) и снять эту галку

Аватар пользователя morgusha morgusha 25 ноября в 9:59

НО адрес всё равно формируется автоматически типа: node/321 а нужно чтобы задавать его в ручную и без введения в ручную материал бы не создавался

Аватар пользователя ivnish ivnish 25 ноября в 10:00

morgusha wrote: автоматически типа: node/321

Это функционал ядра Drupal, это служебный адрес и он не является синонимом

Аватар пользователя morgusha morgusha 25 ноября в 10:01

а можно сделать так, чтобы пока в ручную не введёшь url он бы не создавал материал ?

Аватар пользователя ivnish ivnish 25 ноября в 10:03

Только с помощью программирования. Либо сделать заполнение этого поля обязательным, либо при сабмите формы проверять это поле на пустое/не пустое

Аватар пользователя morgusha morgusha 25 ноября в 10:05

а как сделать заполнение этого поля обязательным ? в настройках типа материала такого нет ! там просто указано , что Настройки адресов path Элементы формы модуля Path и никак его настраивать нельзя

Аватар пользователя ivnish ivnish 25 ноября в 10:05

Я же написал "только с помощью программирования". Чуть ниже дали похожий ответ

Аватар пользователя gun_dose gun_dose 25 ноября в 10:04
1

Вам проще всего будет поставить #required => TRUE на поле с вводом адреса через hook_form_alter

Аватар пользователя morgusha morgusha 25 ноября в 11:12

Хм. Пробую. Сделал так вот в template.php и не получается:

<?php
function mymodule_form_article_node_form_alter(&$form, &$form_state$form_id) {
 
$node $form_state->getFormObject()->getEntity();

  if (

$node->getType() == 'article') {
       
$form['terms_of_use'] = array(
    
'#required' => TRUE,
  );
    
  }
}
?>

Можете подсказать пожалуйста так как с api вообще не работал ! ?

Аватар пользователя morgusha morgusha 25 ноября в 11:48

действительно если просто в ручную добавляю в input edit-path-alias параметр required, то его необэодимо будет задавать в ручную. а можно как-то может легче через темизацию шаблона данной формы подобраться к данному полю ?

Аватар пользователя ivnish ivnish 25 ноября в 11:14

А вообще нужно подключить отладчик xdebug и по шагам идти по своему коду. 99% вопросов сразу же отпадает

Аватар пользователя morgusha morgusha 25 ноября в 11:28

вообще для вызова такого хука должен быть создан модуль mymodule ?
function mymodule_form_article_node_form_alter

Аватар пользователя ivnish ivnish 25 ноября в 11:31

Можно, но необязательно. Можно и в теме оформления. Главное, не забывать кэш сбрасывать, когда новые хуки добавляются в код

Аватар пользователя morgusha morgusha 25 ноября в 11:35

понял. спасибо. по поводу отладчика я не могу его установить. доступ к хостингу не дадут.
можно ли как то проверить подцепляет данный хук форму или нет ?

Аватар пользователя ivnish ivnish 25 ноября в 11:36

Работать на хостинге - плохая идея. Разверните локальную копию сайта у себя на компьютере

Аватар пользователя OldWarrior OldWarrior 25 ноября в 11:59

morgusha wrote: $form['terms_of_use'] = array(
'#required' => TRUE,
);

Ошибка №1. Не следует полностью переписывать массив определений/свойств поля. Нужно только переопределить одно свойство:

<?php
$form
['YOUR_FIELD']['#required'] = TRUE;
?>

morgusha wrote: если вставляю вместо article_node_form это - article-node-form

№2. Машинные ID форм (и тем более имена хуков) - только со знаком подчёркивания вместо дефисов:
article_node_form или mymodule_form_article_node_form_alter

№3.

morgusha wrote: $node = $form_state->getFormObject()->getEntity();

if ($node->getType() == 'article') {

Вы как-то определитесь, D7 или D8. А то тег даёте для D7, а код откуда-то вытащили для D8.

Аватар пользователя morgusha morgusha 25 ноября в 12:11

спасибо ! делаю так вот :

<?php
function mymodule_form_article_node_form_alter(&$form, &$form_state$form_id) {
if (
$form_id == 'article_node_form') { // тут тоже id  формы нужно с подчёркиванием нижним вместо тире ?
   
$form['edit-path'] ['#required'] = TRUE// вместо названия поля нужно использовать id поля или его name ? 
  
}
}
?>

Аватар пользователя OldWarrior OldWarrior 25 ноября в 12:20

morgusha wrote: // тут тоже id формы нужно с подчёркиванием нижним вместо тире ?

Да.

morgusha wrote: вместо названия поля нужно использовать id поля или его name ?

Чаще всего атрибуты id в HTML-разметке совпадают с машинными именами/индексами полей в $form. Но только вместо дефисов - строго подчёркивание. А чтобы быть точно уверенным - хотя бы <?php print_r($form); ?>, если уж нет devel.

И да - там лишний пробел между квадратными скобками, должно быть так:

<?php
$form
['edit-path']['#required'] = TRUE;
?>
Аватар пользователя morgusha morgusha 25 ноября в 12:29

а где выводить данный массив ?
<?php print_r($form); ?>
в template.php
внутри данного хука он не выводится (

Аватар пользователя morgusha morgusha 25 ноября в 12:56

даже такое не работает ! что за фигня ?

<?php
function hook_form_alter(&$form$form_state$form_id) {
drupal_set_message($form_id);
}
?>
Аватар пользователя morgusha morgusha 25 ноября в 13:38

ну как я понимаю в этом хуке все формы должны к полю title добавить описание :

<?php
function bartik_form_alter(&$form, &$form_state$form_id){
  
$form['title']['#description'] = 'Описание поля для глухонемых';
}
?>

но даже этого не происходит (

Аватар пользователя morgusha morgusha 25 ноября в 16:34

Может есть у кого рабочий пример изменения любого поля любой формы, чтобы проверить вообще данный функционал работает на сайте или нет ?