Tôi có một mô-đun tùy chỉnh triển khai móc nodeapi để thực thi một số mã khi nút được tạo hoặc cập nhật.Drupal: Làm cách nào để tạo một bí danh URL có lập trình cho một nút đã có bí danh khi lưu nút?
Về cơ bản tôi muốn tạo bí danh dựa trên bí danh được tạo tự động trên nút lưu hoặc cập nhật.
Hiện tại tôi đang sử dụng lệnh gọi path_set_alias và tôi chỉ muốn thực hiện việc này với một loại nội dung cụ thể, "sản phẩm".
Đây là cuộc gọi nodeapi của tôi để cho tôi bắt đầu
function product_url_helper_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
if($node->type == 'product'){
switch($op){
case 'insert':
_create_alternate_url($node);
break;
case 'update':
_create_alternate_url($node);
break;
case 'view':
//do nothing
break;
default:
break;
}
}
return;
}
Sau đó, tôi có chức năng này, là tôi đang cố gắng để có được lưu bí danh URL thứ hai của tôi đối với tôi.
function _create_alternate_url($node){
$aliasExists = db_fetch_object(db_query("SELECT count(dst) as total FROM {url_alias} WHERE dst = 'alternate/".$node->path."'"));
if($aliasExists->total == 0){
$product_url = $node->path;
$alternate_url = "alt/" . $node->path;
$default_node_path = "node/" . $node->nid;
path_set_alias($default_node_path, $alternate_url, 0, '');
drupal_set_message("Created Alternate path for Product: " . $node->title . " <br/> Path <a href='/" . $default_node_path ."'>" . $default_node_path . "</a> is now aliased by <a href='/" . $alternate_url . "'>". $alternate_url ."</a>");
}
Điều này không đặt bí danh mặc dù nó chỉ tạo một bản sao của bí danh ban đầu của sản phẩm. Vì vậy, nếu tôi bắt đầu với sản phẩm của tôi là "Green Fern". Tôi sẽ lưu nó, và nó sẽ sử dụng pathauto để tạo ra sản phẩm/green-fern sau đó sau khi gọi mã mô-đun của tôi và tạo bí danh "alt/products/green-fern" và vẫn làm cho nó trở lại đường dẫn "node/nid" .
Tuy nhiên, khi tôi chạy mã này, một bản sao trong cơ sở dữ liệu được tạo. Vì vậy, tôi lưu Green Fern một lần và đột nhiên tôi thấy hai bản ghi trùng lặp ở cuối url_alias trong cơ sở dữ liệu. "products/green-fern" và "products/green-fern"
Tôi cảm thấy như tôi đang nghĩ về điều này theo một cách quá phức tạp. Khách hàng của tôi là nhận thức của SEO hit họ nhận được khi thực hiện nhiều hơn một điểm bí danh cho cùng một nút, họ chỉ muốn nó để làm điều này. Halp!
Err, chỉ cần nhận thấy rằng bạn đã sử dụng pathauto - chỉnh sửa phản hồi của tôi ... – anschauung