วิธีปิดการใช้งาน“ ใส่ในรถเข็น” สำหรับผลิตภัณฑ์เฉพาะและแสดงปุ่ม“ ดูรายละเอียด” ในมุมมองรายการหมวดหมู่แทน


20

ฉันสงสัยว่าจะปิดใช้งานปุ่ม Add to Cart บนผลิตภัณฑ์บางอย่างได้อย่างไรและฉันพบแนวทางที่ถูกทอดทิ้งเกี่ยวกับวิธีการทำสิ่งนี้ซึ่งใช้งานได้ แต่มันก็ค่อนข้างไม่สมบูรณ์เนื่องจากมันเป็นเพียงวิธีการแก้ปัญหาในหน้าดูผลิตภัณฑ์ และไม่อยู่ในรายการหมวดหมู่หรือหน้ากริด

ฉันจะตอบคำถามของตัวเองที่นี่ใน 8 ชั่วโมง (เนื่องจากฉันต้องรอ 8 ชั่วโมงเนื่องจากชื่อเสียงของฉันต่ำกว่าจุดที่แน่นอน) หลังจากที่ฉันอธิบายขั้นตอนแรกและคำตอบของฉันจะเป็นขั้นตอนที่ 3 ที่หายไปที่ฉันต้องคิด ออกมาเพื่อตัวเอง ฉันจะพยายามทำให้สิ่งนี้ง่ายต่อการปฏิบัติตาม:

[ขั้นตอนที่ 1]

[1]

สร้างแอททริบิวที่คุณจะใช้กับผลิตภัณฑ์ที่คุณไม่ต้องการใช้ปุ่มเพิ่มลงในรถเข็น ในแดชบอร์ดผู้ดูแลระบบให้ไปที่ ...

แคตตาล็อก> คุณสมบัติ> จัดการคุณสมบัติ> เพิ่มคุณสมบัติใหม่

ตั้งชื่อแอตทริบิวต์ของคุณตามที่คุณต้องการตัวอย่างเช่น: "No_cart_button"

ด้วยคุณสมบัติ:

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

ด้วย Manage Label / Options:

Admin: Disable Add to Cart
English: Disable Add to Cart

ตอนนี้บันทึกคุณลักษณะนี้

[2]

กำหนดแอตทริบิวต์ใหม่ของคุณให้กับกลุ่มเพื่อให้คุณสามารถใช้งานได้ ฉันใช้ "ค่าเริ่มต้น" ไปที่...

Catalog > Attributes > Manage Attributes Sets > Select Set

ตอนนี้บันทึกชุดคุณลักษณะนี้

[ขั้นตอนที่ 2]

เราจะเพิ่มรหัสเพื่อ view.phtml

app/design/frontend/default/theme/template/catalog/product/view.phtml

ค้นหารหัสบล็อกนี้:

    <?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
//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
}
?>

รหัสนี้ตรวจสอบว่า No_cart_button ตั้งค่าเป็นใช่ หากตั้งค่าเป็นใช่ระบบจะส่งรหัสออกซึ่งจะลบปุ่มเพิ่มลงในตะกร้าและแสดงข้อความที่ระบุว่า "ผลิตภัณฑ์นี้ไม่สามารถใช้งานออนไลน์ได้โปรดโทรหาตัวแทนของเราหากคุณต้องการซื้อสินค้านี้"

ตกลง 2 ขั้นตอนเหล่านี้จะเสร็จสมบูรณ์และลบ Add to Cart ในหน้ามุมมองผลิตภัณฑ์

แต่สิ่งนี้จะไม่ลบปุ่ม "เพิ่มลงในรถเข็น" ในหน้ารายการหมวดหมู่ ตอนนี้เราต้องการสร้างปุ่ม "ดูรายละเอียด" ในหน้ารายการหมวดหมู่แทนที่จะเป็นปุ่ม "เพิ่มลงในรถเข็น"

[แก้ไข]

ตอบ:

kevinkirchner ถูกต้องเราจะเพิ่มตรรกะนี้ใน list.phtml ทันที เราได้แน่ใจแล้วว่าการตั้งค่าแอตทริบิวต์สำหรับ "ใช้ในรายการผลิตภัณฑ์" ถูกตั้งค่าเป็น 'ใช่'

ตกลง,

[ขั้นตอนที่ 3]

เราจะทำให้เป็นเช่นนั้นเมื่อปิดการใช้งานเพิ่มในรถเข็นเป็นใช่นอกจากนี้ยังปิดใช้งานปุ่ม "เพิ่มลงในรถเข็น" ในหน้ารายการหมวดหมู่

ไปที่ list.phtml

app/design/frontend/default/theme/template/catalog/product/list.phtml

และค้นหาไฟล์นี้เพื่อ:

<?php if($_product->isSaleable()): ?>

มันควรจะปรากฏขึ้น 2 ครั้งในไฟล์นี้

ด้านล่างบรรทัดนี้ให้ใส่รหัสต่อไปนี้

<?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 {
?>

จากนั้นใต้รหัสของคุณซึ่งสร้างปุ่ม 'ใส่ในรถเข็น' ตามปกติคุณจะเห็น

<?php
}
?>

ด้านล่างนี้ให้แทรกโค้ดอื่นอีกบิต:

<?php
}
?>

ตกลงตอนนี้ทำตามขั้นตอน 2 ขั้นตอนเดียวกันกับรหัสอื่น ๆ ในไฟล์ที่คุณค้นหา

<?php if($_product->isSaleable()): ?>

คุณต้องทำสองครั้งเพราะครั้งแรกใช้สำหรับมุมมองรายการและครั้งที่สองใช้สำหรับมุมมองกริด


นี่ไม่ใช่เว็บไซต์ของฉันสำหรับ 'โชว์เคส' หรือ 'โชว์ออฟ' คำถาม & คำตอบ ฉันขอแนะนำให้ปิดคำถาม 'ที่เรียกว่า' นี้
Marius

โอ้ฉันหวังว่าจะช่วยเหลือผู้คน - ฉันควรลบหรือทิ้งมันเพื่อให้สามารถค้นหาได้หรือไม่
stephen wise

@Marius ฉันไม่คิดว่านี่จะ 'แสดง' มากเท่าที่ OP ต้องการทำงานตัวแทนมากพอที่จะโพสต์คำตอบของพวกเขาเอง ฉันลงคะแนนให้ปิดจนกว่าจะถึงเวลานั้นจากนั้นจะเปิดใหม่อีกครั้งหรือคุณสามารถโพสต์คำถาม & คำตอบของคุณใหม่
philwinkle

ขอโทษนะฉันควรจะเรียนรู้วิธีการแลกเปลี่ยนที่ดีขึ้น ฉันจะเรียนรู้ด้วยประสบการณ์เช่นกันขอบคุณที่ช่วยฉันเข้าใจสิ่งเหล่านี้
stephen wise

คำตอบ:


7
  1. ตรวจสอบให้แน่ใจว่าแอตทริบิวต์ของคุณมีอยู่ในหน้ารายการผลิตภัณฑ์โดยการตั้งค่า "ใช้ในรายการผลิตภัณฑ์" เป็น "ใช่" เมื่อแก้ไขแอตทริบิวต์ของคุณ - ภาพหน้าจอ

  2. เพิ่มตรรกะของคุณtemplate/catalog/product/list.phtmlเพื่อแสดงปุ่มเพิ่มลงในรถเข็น / ดูรายละเอียด


อ้อ! ฉันจะเลือกคำตอบของคุณ ฉันจะให้รายละเอียดที่เฉพาะเจาะจงมากขึ้นในการแก้ไขในโพสต์ต้นฉบับของฉัน
stephen wise
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.