Làm cách nào để vô hiệu hóa Thêm Thêm vào Cart trên các sản phẩm cụ thể và thay vào đó hiển thị Nút Xem chi tiết Chế độ xem trong chế độ xem danh sách?


20

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.


Đây không phải là trang web của tôi cho 'showcase' hoặc 'show off'. Hỏi & Đáp về CNTT. Tôi khuyên bạn nên đóng câu hỏi 'cái gọi là' này.
Marius

Ồ, tôi đã hy vọng giúp được mọi người - Thay vào đó tôi nên xóa cái này hoặc để nó có thể tìm kiếm được?
khôn ngoan

@Marius Tôi không nghĩ đây là 'phô trương' vì OP cần phải làm việc đủ đại diện để đăng Câu trả lời của riêng họ. Tôi bỏ phiếu để đóng cho đến thời điểm đó, sau đó sẽ giải quyết mở lại hoặc bạn có thể đăng lại Hỏi & Đáp của mình.
philwinkle

Xin lỗi các bạn, tôi nên học cách Stack Exchange tốt hơn. Tôi cũng sẽ học hỏi kinh nghiệm, cảm ơn vì đã giúp tôi hiểu những điều này.
khôn ngoan

Câu trả lời:


7
  1. Đảm bảo thuộc tính của bạn có sẵn trên trang danh sách sản phẩm bằng cách đặt "Được sử dụng trong Danh sách sản phẩm" thành "Có" khi chỉnh sửa thuộc tính của bạn - ảnh chụp màn hình

  2. Thêm logic của bạn template/catalog/product/list.phtmlđể hiển thị nút Thêm vào giỏ hàng / Xem chi tiết


Vâng! Tôi sẽ chọn câu trả lời của bạn. Tôi sẽ cung cấp chi tiết cụ thể hơn trong một chỉnh sửa trên bài viết gốc của tôi.
khôn ngoan
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.