Drupal Panel Pages Pathauto - PullRequest
       37

Drupal Panel Pages Pathauto

2 голосов
/ 15 июля 2011

У меня есть страница панели, настроенная с путем node/%node/foo, и все работает нормально, когда я захожу по ссылке, такой как node/6/foo.Однако, когда я посещаю nodealias/foo, это вообще не работает.Можно ли заставить панели работать с pathauto таким образом?

Я думаю, мне, возможно, придется реализовать ловушку hook_url_inbound_alter и изменить URL самостоятельно.

Iтакже разместил запрос поддержки в модуле панелей здесь: http://drupal.org/node/1219796

Ответы [ 4 ]

2 голосов
/ 20 сентября 2011

Поскольку Алексей отвечает, что панели не заботятся о псевдонимах, он видит только узел /% nid Вот хорошее объяснение, которое все еще действует для D7: http://drupal.org/node/211338 Подводя итог и обновляя его для D7: Экспортируйте свой вариант для созданной вами панели и импортируйте его на панель, которая переопределяет отображение узлов по умолчанию в Drupal. Добавьте критерии к варианту, чтобы панель / вариант использовались только для тех типов контента, которые вы хотите отобразить в этом варианте. Вуаля :) (читайте обсуждение по ссылке, иначе резюме будет сложно понять)

Надеюсь, это поможет - я сам потратил некоторое время на поиски в Интернете и пытаясь понять это, и я также был смущен тем фактом, что Views заботится об псевдонимах ...

1 голос
/ 27 марта 2014

Вы можете использовать этот модуль Subpathauto

, он автоматически заставляет псевдоним работать с подпутями, например: nodealias/foo

1 голос
/ 20 сентября 2011

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

function brooklands_url_inbound_alter(&$path, $original_path, $path_language) {
    $pattern = '#^works\/[A-Za-z0-9]+(-[A-Za-z0-9]+)*\/images(\/\d+)?$#';
    if(preg_match($pattern, $original_path)) {
        $snip = substr($original_path, 0, strrpos($original_path, '/images'));
        $system_path = drupal_lookup_path('source', $snip);
        if($system_path) {
            $tail = substr($original_path, strrpos($original_path, '/images'));
            $path = $system_path . $tail;
        }
    }
}
0 голосов
/ 17 июля 2011

nodealias - это полный псевдоним вашего узла с nid = 6. Третий аргумент (foo) добавляется через hook_menu () модулем Panel к точному псевдониму (node ​​/% nid /% everythingelse), и он НЕ применяется к вашему псевдониму URL, поэтому вы не можете использовать nodealias / foo url для доступа к вашему панель только потому, что она не «зацеплена» модулем панелей. Я думаю, что изменение URL-адреса вручную - хорошая идея.

...