วิธีการอัพเดทอัตโนมัติเป็นปีปัจจุบันในส่วนท้าย Magento 2?


คำตอบ:


20

การแฮ็คหนึ่งครั้งที่เป็นไปได้สามารถช่วยเราในการปรับเปลี่ยนปีแบบไดนามิก

ไปที่ -> ผู้ดูแลระบบ -> ทั่วไปเลือกการออกแบบ -> ขยายส่วนท้ายกระดาษและวางรหัสด้านล่าง

Copyright © <script>document.write(new Date().getFullYear())</script> Magento. All rights reserved.

ลบแคชและตรวจสอบ


สวัสดีขอบคุณสำหรับคำตอบของคุณฉันจะลองอันนี้ด้วย
MazeStricks

สิ่งนี้ทำให้งานเสร็จ แต่ฉันต้องสงสัยว่าสไปเดอร์ไซต์เครื่องมือค้นหาจะรับปีลิขสิทธิ์ที่ถูกต้องหรือไม่
jschrab

2
สิ่งนี้ใช้ไม่ได้กับ 2.2.2 เนื่องจากไม่รองรับองค์ประกอบ html
Juliano Vargas

9

วางเนื้อหาต่อไปนี้ในไฟล์นี้:

{theme_dir}/Magento_Theme/templates/html/copyright.phtml

<?php /* @escapeNotVerified */ echo preg_replace('/(^|\s)(\d{4})(\s|$)/m', " ".date('Y'). " ", $block->getCopyright()); ?>

2
ฉันชอบโซลูชันนี้ดีที่สุด - ช่วยให้คุณควบคุมข้อความได้ แต่มีความยืดหยุ่นในการเปลี่ยนปีลิขสิทธิ์ สิ่งที่ฉันทำเพื่อขยายคือ<?= /* @escapeNotVerified */ str_ireplace('{{year}}', date('Y'), $block->getCopyright()) ?>... และจากนั้นใช้ข้อความลิขสิทธิ์ "{{ปี}}" ในส่วนท้ายของผู้ดูแลระบบ ด้วยวิธีนี้ฉันสามารถควบคุมข้อความได้อย่างเต็มที่พร้อมกับปีที่อัปเดตอัตโนมัติ
jschrab

7

วางเนื้อหาต่อไปนี้ในไฟล์นี้: {theme_dir}/Magento_Theme/templates/html/copyright.phtml

<small class="copyright">
    <span>Copyright &copy; You <?php echo date('Y') ?>, All Rights Reserved.</span>
</small>

จากนั้นล้างแคช


สวัสดีขอบคุณสำหรับคำตอบนี้ฉันจะลองอันนี้ขอบคุณ Aaron :)
MazeStricks

0

วิธีที่ดีที่สุดในการทำเช่นนี้คือการสร้างปลั๊กอินหลังจากบนวิธี getCopyright Magento\Theme\Block\Html\Footerระบบ ไม่ใช่วิธีปฏิบัติที่ดีในการเพิ่มตรรกะในแม่แบบ

เพิ่มสิ่งต่อไปนี้ในโมดูลที่กำหนดเองในetc/frontend/di.xmlไฟล์

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\Theme\Block\Html\Footer">
        <plugin name="Vendor_Module::UpdateCopyrightWithCurrentYear" type="Vendor\Module\Plugin\Theme\Block\Html\Footer\UpdateCopyrightWithCurrentYear" />
    </type>
</config>

สร้างPlugin/Theme/Block/Html/Footer/UpdateCopyrightWithCurrentYear.phpภายในโมดูลของคุณ:

<?php
namespace Vendor\Module\Plugin\Theme\Block\Html\Footer;

use Magento\Theme\Block\Html\Footer;

class UpdateCopyrightWithCurrentYear
{
    /**
     * @param Footer $subject
     * @param string $result
     * @return string $result
     */
    public function afterGetCopyright(Footer $subject, $result)
    {
        $result = preg_replace_callback(
            '/(^|\s)(\d{4})(\s|$)/m',
            function($matches) {
                return $matches[2] != date('Y')?$matches[1] . $matches[2].' - '.date('Y') . $matches[3]:$matches[0];
            },
            $result);
        return $result;
    }
}

ฉันยืม regex ของกฤษณะ ijjada เพื่อให้ตรงกับปี นอกจากนี้ยังเพิ่มปีปัจจุบันในข้อความลิขสิทธิ์เพื่อให้ปีที่เริ่มต้นลิขสิทธิ์ยังคงปรากฏให้เห็น


0

จำเป็นต้องคิดถึงเขตเวลานี่คือคำตอบของฉัน ( {theme_dir}/Magento_Theme/templates/html/copyright.phtml):

<?php
/* @var $block \Magento\Theme\Block\Html\Footer */

use Magento\Framework\App\ObjectManager;
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;

$year = ObjectManager::getInstance()->get( TimezoneInterface::class )->date()->format( 'Y' );
?>
<small class="copyright">
    <span><?= /* @escapeNotVerified */ $block->escapeHtml( __( 'Copyright &copy; %1 xxx.', $year ) ) ?></span>
</small>

0

ฉันจะทำยังไง เขียนทับcopyright.phtml:

<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
?>
<small class="copyright">
    <span><?= /* @escapeNotVerified */ str_replace ( '{{year}}', date('Y'), $block->getCopyright()) ?></span>
</small>

จากนั้นไปที่Content->Design->ConfigurationเลือกธีมEdit->footer->copyrightเพิ่มสิ่งนี้:

Copyright © {{year}} Magento. All rights reserved.

ทำ!

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