Điểm:-1

Cách tốt nhất để nhập một liên kết nội bộ

lá cờ ng

Làm cách nào tôi có thể nhập một liên kết nội bộ hoạt động với các độ dài đường dẫn khác nhau và tiếp tục hoạt động khi tôi tải trang web của mình lên máy chủ trực tiếp?

Nói rằng tôi có một trang ở đây http://localhost/site1/web/page1 và tôi muốn tạo một khối ở chân trang có liên kết đến trang này.

Nếu tôi sử dụng một liên kết tương đối (ví dụ: trang1) Nó sẽ hoạt động khi tôi ở trên trang này ...
http://localhost/site1/web/
Nhưng điều đó sẽ không xảy ra nếu tôi đang đi trên một đường dẫn nhiều đoạn, ví dụ: ...
http://localhost/site1/web/about/terms/

Nếu tôi tạo một liên kết tương đối với máy chủ (ví dụ: /site1/web/trang1)
Nó sẽ không hoạt động khi máy chủ thay đổi ...
http://mysite.com/
(Tôi phát triển trang web cục bộ trên PC của mình và khi trang web hoàn thành, tôi tải nó lên trang web lưu trữ của mình).
Ngoài ra, nó sẽ không hoạt động nếu tôi muốn sao chép trang web...
http://localhost/site2/web/

Đường dẫn tuyệt đối (ví dụ:http://localhost/site1/web/page1)
cũng sẽ không hoạt động khi tôi bắt đầu chạy trang web trên máy chủ trực tiếp.

Tôi đã thử mô-đun linkit. Nó hoạt động cho các trường hợp trên nhưng chỉ cho một số loại liên kết (ví dụ: tôi không thể làm cho nó hoạt động đối với các liên kết đến chế độ xem).

Mô-đun bệnh lý đã khắc phục sự cố này trong Drupal 7 nhưng vẫn chưa sẵn sàng cho Drupal 9.

Tôi đã nhận được kết quả tốt nhất khi sử dụng mô-đun php (nó cung cấp bộ lọc mà bạn có thể thêm vào định dạng văn bản). Nhưng tôi tin rằng việc sử dụng mô-đun này không được tán thành.

<?php
use Drupal\Core\Link;
use Drupal\Core\Url;
print(Url::fromUserInput('/node/1')->toString());
?> 

Tôi có thiếu một giải pháp thay thế tốt hơn không? (Sẽ rất hữu ích nếu có một cách để tạo các liên kết có liên quan đến thư mục 'web' drupal.)

Jaypan avatar
lá cờ de
Các khối là các thực thể nội dung, không phải các thực thể cấu hình và do đó thường không được di chuyển giữa các phiên bản, làm cho điều này trở thành điểm tranh luận đối với hầu hết các hệ thống, vì khối phải được tạo riêng trên từng phiên bản, cho phép đặt đường dẫn cho phiên bản cụ thể đó. Nếu bạn đang di chuyển các khối của mình giữa môi trường cục bộ và môi trường từ xa, bạn sẽ thực hiện việc này như thế nào?
Kevin avatar
lá cờ in
Sử dụng một khối menu? Có gì sai với các liên kết menu? Tôi chưa bao giờ gặp sự cố liên kết trong WYSIWYG như thế này.
Jaypan avatar
lá cờ de
Nó có thể không phải là một menu.
lá cờ ng
@Jaypan Tôi không muốn thực hiện sửa đổi trực tiếp trên trang web trực tiếp mà thay vào đó phát triển trang web trên PC cục bộ của mình và khi tôi đã sửa tất cả các lỗi, v.v., tôi sao chép các tệp qua máy chủ từ xa và nhập cơ sở dữ liệu. Vì vậy, tôi chỉ cần thay đổi chi tiết cơ sở dữ liệu trong settings.php. Vì vậy, các khối được di chuyển cùng với phần còn lại của drupal. Ngoài ra, nhu cầu của các khách hàng khác nhau của tôi thường khá giống nhau, vì vậy tôi thường có thể sử dụng lại một trang web drupal. Do đó cần phải nhân bản.
apaderno avatar
lá cờ us
Bạn đã thử mô-đun *Liên kết menu tùy chỉnh* đi kèm với lõi Drupal chưa?
lá cờ ng
@apanderno Vâng. Tôi sử dụng mô-đun đó. Câu hỏi của tôi là nhiều hơn về các liên kết nói chung. Tôi có thể có một khối chân trang chứa các liên kết đến các trang nội bộ (ví dụ: Điều khoản & Điều kiện), tuyên bố bản quyền, số điện thoại. Vì vậy, khối menu không phải là lý tưởng.
Kevin avatar
lá cờ in
Tại sao bạn không vào đường dẫn tương đối? "/một số/bí danh"?
lá cờ ng
@kevin "/some/alias" sẽ đưa tôi đến "http://localhost/some/alias". Nhưng tôi cần truy cập "http://localhost/site1/some/alias/". I E. Tôi có một số trang web trên cùng một máy chủ khi tôi đang phát triển.
Kevin avatar
lá cờ in
Đường dẫn tương đối độc lập với miền.
lá cờ ng
@kevin đây là một đường dẫn tương đối (không có dấu gạch chéo ở đầu): "một số/bí danh" và nó độc lập với miền nhưng không hoạt động nếu số lượng phân đoạn trong đường dẫn thay đổi.
lá cờ cn
Cả hai đều là đường dẫn tương đối. Không có dấu gạch chéo liên quan đến đường dẫn hiện tại, có dấu gạch chéo liên quan đến gốc miền. Những gì bạn đang cố gắng thực hiện là phân phát nhiều trang web từ các thư mục con trong một miền duy nhất và vâng, điều đó có thể gây khó khăn cho việc liên kết thủ công. Tôi không tin rằng có một giải pháp phổ biến, nhưng theo kinh nghiệm của tôi nếu bạn có thể giải quyết nó trong cấu hình máy chủ web bằng cách viết lại, thì việc thực hiện ở đó thường dễ dàng hơn là cố gắng nhờ Drupal tăng cường mọi liên kết trong Địa điểm
lá cờ ng
Cảm ơn @Clive. Có lẽ tôi không phát triển các trang web một cách chính xác. Không quan tâm, làm thế nào để bạn phát triển các trang web? Bạn có làm việc trực tiếp trên trang web trực tiếp hay bạn chỉ có một trang web chạy cục bộ để bạn có thể có, ví dụ: `http://localhost/page1` cục bộ và sau đó là `http://mysite.com/page1` trên máy chủ trực tiếp? Hay bạn làm cái gì khác?
lá cờ cn
Tôi đoán thế giới của tôi hơi khác một chút; bản chất của các trang web tôi xây dựng có nghĩa là tất cả nội dung được quản lý bởi khách hàng và công việc của tôi là đảm bảo kiến ​​trúc/việc triển khai hỗ trợ điều đó xảy ra mà không cần phải di chuyển nội dung xung quanh (ghi đè cơ sở dữ liệu sản xuất là biện pháp cuối cùng vì trang web có thể hoạt động tốt đang thu thập dữ liệu trong khi quá trình phát triển đang diễn ra). Nếu có một tính năng mới, thì tính năng đó được tạo bằng mã, nội dung thử nghiệm được tạo trong môi trường stage/uat và được ký tắt, sau đó tính năng này được đưa vào hoạt động và nội dung trong thế giới thực được tạo trong prod. Đối với nhà phát triển địa phương, tôi có xu hướng thích Lando hơn
Điểm:1
lá cờ de

Trong Drupal 8+, không nên di chuyển cơ sở dữ liệu vì nó sẽ ghi đè lên bất kỳ thay đổi nào được thực hiện trên máy chủ sản xuất của bạn giữa các lần ghi đè. Thay vào đó, API cấu hình đã được tạo, cho phép cấu hình trang web - hay còn gọi là cài đặt xác định trang web là gì, nó làm gì và cách thức hoạt động - được di chuyển giữa các phiên bản mà không phải ghi đè lên cơ sở dữ liệu. Ngoài ra còn có một API di chuyển, nhưng theo kinh nghiệm của tôi, việc tạo lại nội dung trên sản xuất sau lần đầu tiên chơi với nội dung đó trong dàn/cục bộ thường dễ dàng hơn so với việc thiết lập API di chuyển.

Đây là hướng dẫn tôi đã viết về cách sử dụng API cấu hình: https://www.morpht.com/blog/drupal-8-configuration-part-1-configuration-api

Nếu tôi ở vị trí của bạn, tôi sẽ ngừng đẩy cơ sở dữ liệu lên và thay vào đó chuyển sang sử dụng API cấu hình để quản lý trang web của bạn trong nhiều môi trường. Sau đó, bạn có thể tạo khối của mình khi sản xuất và kéo cơ sở dữ liệu xuống bản cài đặt cục bộ của bạn để lấy phiên bản khối đó trên bản cài đặt cục bộ của bạn.

Nếu bạn không muốn chuyển sang cấu hình di chuyển và muốn tiếp tục đẩy cơ sở dữ liệu của mình lên, thì hai giải pháp tôi thấy là:

  1. Sử dụng bộ lọc PHP mà bạn đã đề cập trong bài đăng của mình.
  2. Tạo một khối tùy chỉnh thông qua mã, thay vì thông qua giao diện người dùng quản trị và tạo liên kết của bạn với lớp URL như bạn đã trình bày nhiều nhất.

Mặc dù tùy chọn đầu tiên không được khuyến nghị, nhưng toàn bộ quá trình đẩy cơ sở dữ liệu lên cũng vậy, vì vậy nếu bạn định đẩy cơ sở dữ liệu lên thì bạn cũng nên sử dụng bộ lọc đầu vào PHP.

lá cờ ng
Cảm ơn @Jaypan. Tôi sẽ có một bài đọc về điều đó.Tôi không có quyền truy cập bảng điều khiển trên hầu hết các tài khoản cPanel lưu trữ dùng chung của khách hàng (tôi chỉ có thể tải tệp lên, sử dụng phpmyadmin và thay đổi một vài cài đặt). Tôi đoán 'API cấu hình' có thể không khả thi ở đây? Tôi chỉ thiết kế web theo sở thích và tạo các trang web cho các tổ chức nhỏ, vì vậy việc các trang web ngoại tuyến trong một thời gian ngắn, trong khi tôi cập nhật chúng, thực sự không phải là vấn đề.
Jaypan avatar
lá cờ de
Bạn vẫn có thể sử dụng API cấu hình.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.