Tôi đã tự hỏi làm thế nào để vô hiệu hóa nút Thêm vào giỏ hàng trên một vài sản phẩm cụ thể và tôi đã tìm thấy một hướng dẫn bị bỏ rơi về cách thực hiện việc này, nhưng nó không hoàn chỉnh, vì nó chỉ là một giải pháp trên các trang xem sản phẩm, và không có trong danh sách danh mục hoặc trang lưới.
Tôi sẽ trả lời câu hỏi của riêng mình ở đây trong 8 giờ (vì tôi cần đợi 8 giờ, vì danh tiếng của tôi ở dưới một điểm nhất định), sau khi tôi giải thích các bước đầu tiên, và câu trả lời của tôi sẽ là Bước 3 còn thiếu mà tôi phải tìm ra cho mình Tôi sẽ cố gắng làm cho điều này dễ thực hiện:
[Bước 1]
[1]
Tạo một thuộc tính mà bạn sẽ sử dụng trên các sản phẩm bạn không muốn có nút Thêm vào giỏ hàng. Trong bảng điều khiển Quản trị viên, đi đến ...
Danh mục> Thuộc tính> Quản lý thuộc tính> Thêm thuộc tính mới
Đặt tên cho thuộc tính của bạn bất cứ thứ gì bạn thích, ví dụ: "No_cart_button"
Với các thuộc tính:
Attribute Code: No_cart_button
Catalog Input Type for Store Owner: Yes/No
Use in Quick Search: No
Use in Advanced Search: No
Comparable on Front-end: No
Visible on Product View Page on Front-end: No
Used in Product Listing: YES
Used for Sorting in Product Listing: No
Với Quản lý nhãn / Tùy chọn:
Admin: Disable Add to Cart
English: Disable Add to Cart
Bây giờ lưu thuộc tính này.
[2]
Chỉ định thuộc tính mới của bạn cho một nhóm, vì vậy bạn có thể sử dụng nó. Tôi đã sử dụng "Mặc định". Đi đến...
Catalog > Attributes > Manage Attributes Sets > Select Set
Bây giờ lưu tập thuộc tính này.
[Bước 2]
Chúng tôi sẽ thêm một số mã để xem.
app/design/frontend/default/theme/template/catalog/product/view.phtml
Tìm khối mã này:
<?php if (!$this->hasOptions()):?>
<div class="add-to-box">
<?php if($_product->isSaleable()): ?>
<?php echo $this->getChildHtml('addtocart') ?>
<?php if( $this->helper('wishlist')->isAllow() || $_compareUrl=$this->helper('catalog/product_compare')->getAddUrl($_product)): ?>
<span class="or"><?php echo $this->__('OR') ?></span>
<?php endif; ?>
<?php endif; ?>
<?php echo $this->getChildHtml('addto') ?>
</div>
<?php echo $this->getChildHtml('extra_buttons') ?>
<?php elseif (!$_product->isSaleable()): ?>
<div class="add-to-box">
<?php echo $this->getChildHtml('addto') ?>
</div>
<?php endif; ?>
ok, bây giờ thay thế nó bằng khối mã này:
<?php
//Checks if the "Disable Add to Cart" variable is set to 'Yes':
if(($_product->getAttributeText('No_cart_button')) == "Yes"){
//If set to Yes, tell PHP what to output:
echo "This Product is not available online, please call our representative if you wish to purchase this.";
}
//If set as No, then show the 'add to cart box' as usual.
else {
?>
<?php if (!$this->hasOptions()):?>
<div class="add-to-box">
<?php if($_product->isSaleable()): ?>
<?php echo $this->getChildHtml('addtocart') ?>
<?php if( $this->helper('wishlist')->isAllow() || $_compareUrl=$this->helper('catalog/product_compare')->getAddUrl($_product)): ?>
<span class="or"><?php echo $this->__('OR') ?></span>
<?php endif; ?>
<?php endif; ?>
<?php echo $this->getChildHtml('addto') ?>
</div>
<?php echo $this->getChildHtml('extra_buttons') ?>
<?php elseif (!$_product->isSaleable()): ?>
<div class="add-to-box">
<?php echo $this->getChildHtml('addto') ?>
</div>
<?php endif; ?>
<?php
}
?>
Mã này kiểm tra nếu No_cart_button được đặt thành có. Nếu được đặt thành có, nó sẽ xuất mã, sẽ loại bỏ nút thêm vào giỏ hàng và thay vào đó hiển thị văn bản có nội dung: "Sản phẩm này không có sẵn trực tuyến, vui lòng gọi cho đại diện của chúng tôi nếu bạn muốn mua sản phẩm này."
Ok 2 bước này đã hoàn tất và xóa Thêm vào giỏ hàng trên trang xem sản phẩm.
Nhưng, điều này không loại bỏ nút "Thêm vào giỏ hàng" trên các trang danh sách Danh mục. Bây giờ, chúng tôi muốn tạo nút "Xem chi tiết" trên các trang danh sách danh mục, thay vì nút "Thêm vào giỏ hàng".
[CHỈNH SỬA]
Câu trả lời:
kevinkirchner là chính xác, chúng tôi sẽ thêm logic này vào list.phtml ngay bây giờ. Chúng tôi đã đảm bảo cài đặt thuộc tính cho "Được sử dụng trong Danh sách sản phẩm" được đặt thành 'CÓ'.
Được,
[Bước 3]
Chúng tôi sẽ làm như vậy khi Vô hiệu hóa Thêm vào giỏ hàng được đặt thành Có, nó cũng vô hiệu hóa nút "Thêm vào giỏ hàng" trên các trang danh sách Danh mục.
Truy cập list.phtml
app/design/frontend/default/theme/template/catalog/product/list.phtml
và tìm kiếm tập tin này cho:
<?php if($_product->isSaleable()): ?>
Nó sẽ xuất hiện 2 lần trong tập tin này.
Ngay bên dưới dòng này, chèn đoạn mã sau
<?php
if(($_product->getAttributeText('No_cart_button')) == "Yes"){ ?>
<p><button type="button" title="<?php echo $this->__('View Details') ?>" class="button btn-cart" onclick="location.href='<?php echo $_product->getProductUrl() ?>'"><span><span><?php echo $this->__('View Details') ?></span></span></button></p>
<?php
}
else {
?>
Sau đó, ngay bên dưới mã của bạn tạo nút 'Thêm vào giỏ hàng' bình thường, bạn sẽ thấy
<?php
}
?>
ngay bên dưới này, chèn một đoạn mã tương tự:
<?php
}
?>
Ok, bây giờ hãy thực hiện chính xác 2 bước này cho khối mã khác trong tệp này nơi bạn tìm thấy
<?php if($_product->isSaleable()): ?>
Bạn phải làm điều này hai lần, vì lần đầu tiên là cho Chế độ xem danh sách và lần thứ hai là cho Chế độ xem lưới.