Drupal 8 - Пользовательский путь URL для узла с таксономией

Я пытаюсь сохранить собственный URL-путь, например, такой: "/PARENT_TERM/TERM/NODE_NAME"

Благодаря Pathauto, мне удалось получить информацию, необходимую для создания строки URL, но я не могу сохранить свой URL для сохранения. Я также не уверен, будет ли лучше сохранить эту информацию в настройках пути URL или в сущности URL.

Причина, по которой я не использую Pathauto для создания URL-адреса, заключается в том, что он не предоставляет никаких токенов для родительского термина, когда я создаю шаблон для своих узлов.

Вот мой код до сих пор:

function HOOK_node_insert($entity) {
    _HOOK_node_url($entity, 'insert');
}

function HOOK_node_update($entity) {
    _HOOK_node_url($entity, 'update');
}

function _HOOK_node_url($entity, $op){
    if($entity->getType() == 'dvn_products'){ //Content_type
        $nid = $entity->id();

        $entity_alias = \Drupal::service('path.alias_manager')->getAliasByPath('/node/' . $nid); // Get the pathauto alias

        $term_id = $entity->field_dvn_product_type_ref->target_id;
        $term_object = \Drupal\taxonomy\Entity\Term::load($term_id);
        $term_name = $term_object->get('name')->value;
        $term_alias = \Drupal::service('path.alias_manager')->getAliasByPath('/taxonomy/term/' . $term_id); // Gets pathauto term alias

        $new_url = str_replace("/".strtolower($term_name),$term_alias,$entity_alias); //replaces child term with its url

        $entity->path->alias = $new_url; // Saves new url (This is the problem)
    }
}

Спасибо!

0 ответов

Другие вопросы по тегам