Làm cách nào để tránh Drupal chuyển hướng các trang Lượt xem đa ngôn ngữ của tôi?


8

Tôi đã có một trang Lượt xem trong một trang web đa ngôn ngữ nơi tôi cần một url khác nhau cho mỗi ngôn ngữ, nghĩa là:

  • es: mysite / apartamentos.
  • vi: mysite / các phòng.
  • fr: mysite / phần phụ.
  • ru: mysite / arendu.

Tôi đã tạo một bí danh url cho mỗi ngôn ngữ (đó là mysite / appairs mặc dù ngôn ngữ mặc định của trang web của tôi là tiếng Tây Ban Nha) vì vậy bí danh tiếng Tây Ban Nha appartmentsapartamentosnhư vậy. Tôi đã tạo ra các bí danh bằng cách sử dụng configuration >> Search and Metadata >> URL aliases >> add alias.

Tôi phải chuyển các tham số truy vấn vào chế độ xem để lọc kết quả để url của tôi giống như mysite / en / appairs / p / location_field / 2 và tôi đã có một biểu mẫu trong đó tôi tự đặt hành động như sau:

echo "/".$language."/".$translated_page

trong đó trang được dịch có thể là apartamentos, appairs, appartements hoặc arendu, tạo url hành động:

/ es / apartamentos, / fr / appartements, / en / appairs và / ru / arendu

Vấn đề của tôi là khi mẫu đơn này được gửi, Drupal gửi tôi đến

mysite / es / appairs / p / location_field / 2

thay vì

mysite / es / apartamentos / p / location_field / 2

và điều tương tự xảy ra cho tất cả các ngôn ngữ. Phần còn lại của điều này có vẻ ổn và thậm chí cả mẩu bánh mì (được tạo ra bằng cách sử dụng url) có vẻ chính xác (Inermo >> Bras Costa Dorada, bằng tiếng Tây Ban Nha).

Khi tôi sử dụng chuyển đổi ngôn ngữ, nó sẽ chuyển hướng tôi đến trang được dịch chính xác nhưng không có các tham số truy vấn (từ mysite/es/appartments/p/location_field/2nó gửi tôi đến mysite/es/apartamentos).

Tôi không biết điều gì có thể gây ra vấn đề này, có thể các tham số truy vấn can thiệp vào việc giải thích bí danh?

Lưu ý : Tôi có rất nhiều mô-đun dịch được kích hoạt. Đối với các mô-đun i18n có: khối, trường, menu, nút, đường dẫn, chuỗi, phân loại, dịch (bộ dịch), biến và khung nhìn.


có một cái nhìn ở đây drupal.stackexchange.com/questions/22989/iêu
rémy

Câu trả lời:


6

mô hình con i18n_path

Tôi giả sử bạn cũng đang sử dụng mô-đun i18n . Vì vậy, hãy chắc chắn rằng bạn cũng đã kích hoạt i18n_pathmô hình con (= Dịch đường dẫn). Thêm chi tiết về nó, từ tài liệu cộng đồng (đánh dấu đậm được thêm vào đây):

... Cho phép bạn ánh xạ các trang hiện có là bản dịch của nhau. Điều này sẽ cho phép người dùng sử dụng trình chuyển đổi ngôn ngữ để điều hướng giữa các trang được liên kết.

Mô-đun này được sử dụng như là phương sách cuối cùng để dịch các đường dẫn mà không thể ánh xạ lại với nhau dưới dạng bản dịch. Ví dụ: các đường dẫn đến các nút được dịch đã có thể được liên kết với mô đun dịch Nội dung và các đường dẫn đến các thuật ngữ phân loại được dịch có thể được liên kết với mô đun dịch thuật Phân loại. Các bản dịch đường dẫn nên được sử dụng để liên kết các đường dẫn chung, chẳng hạn như các đường dẫn được cung cấp bởi Chế độ xem hoặc Bảng.

Để thiết lập bản dịch của một đường dẫn cụ thể, bạn cần tạo một bản dịch đường dẫn bằng cách đi tới Cấu hình> Vùng và ngôn ngữ> Bộ dịch> Đường dẫn và nhấp vào Thêm bản dịch đường dẫn.

lượt xem trang i18n

Bạn cũng có thể muốn kiểm tra xem bạn có thể làm cho nó hoạt động bằng cách sử dụng mô-đun lượt xem trang i18n hay không . Một số chi tiết từ trang dự án của nó:

... Cung cấp một màn hình hiển thị mới, trong đó bạn có thể chọn các đường dẫn khác nhau cho từng ngôn ngữ được bật trên trang web của mình, do đó, một chế độ xem có một tuyến đường được bản địa hóa cho mỗi ngôn ngữ.

Lưu ý 1 : " nếu bạn không thể tìm thấy bất kỳ tùy chọn nào trong chế độ xem để dịch đường dẫn " (như trong nhận xét của bạn bên dưới), thì bạn có thể muốn xem những gì được đề cập trong Nhận xét số 1 của vấn đề 2389535 , trong đó nêu:

... Có thể bạn đã chọn hiển thị trang thay vì hiển thị trang i18n khi bạn tạo chế độ xem của mình. Hãy chắc chắn rằng bạn đã chọn hiển thị chế độ xem chính xác. Tôi đính kèm một số ảnh chụp màn hình để giúp đỡ:

Màn hình 1 :

nhập mô tả hình ảnh ở đây

Màn hình 2 :

nhập mô tả hình ảnh ở đây

Lưu ý 2 : Để trả lời câu hỏi về " Tôi có phải tạo lại toàn bộ trang xem để biến nó thành i18n_page không? " (Như một trong những nhận xét (hiện đã bị xóa) của bạn bên dưới câu trả lời này), tôi sẽ thử sử dụng một trong những cách tiếp cận được mô tả trong các câu trả lời cho câu hỏi tại Cách nhân đôi màn hình Lượt xem (không phải là chính) như một kiểu hiển thị khác? ... Nếu điều đó không hiệu quả / áp dụng, thì việc giải trí toàn bộ trang xem có vẻ như là tùy chọn duy nhất còn lại.


3

Xóa bí danh đường dẫn và thử mã hóa trường hợp đặc biệt này bằng cách sử dụng

hook_url_inbound_alter và hoặc hook_url thừng gửi_alter

hoặc chỉ thực hiện các đường dẫn của riêng bạn thông qua các cuộc gọi lại trang tùy chỉnh (hook_menu) và sau đó hiển thị chế độ xem với lượt xem_embed_view.

Bạn cũng có thể thay đổi hành động của biểu mẫu bộ lọc bị lộ:

/**
 * Implements hook_form_alter().
 */
function foo_form_alter(&$form, $form_state, $form_id) {
  if ($form_id == 'views_exposed_form') {
    $form['#action'] = current_path();
  }
}

Hoặc là:

/**
 * Implements hook_form_views_exposed_form_alter().
 */
function foo_form_views_exposed_form_alter(&$form, &$form_state) {
  if ($form['#id'] == 'views-exposed-form-foo-default') { // Or: if ($form['#action'] === '/foo')
    $form['#action'] = '/bar';
  }
}

Lấy mẫu ở đây Làm cách nào để thay đổi URL gửi cho bộ lọc tìm kiếm bị lộ?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.