Как автоматически обновить текущий год в нижнем колонтитуле Magento 2?

11

Как автоматически обновить год авторских прав в нижнем колонтитуле сайта в Magento 2.

введите описание изображения здесь

MazeStricks
источник

Ответы:

20

Один из возможных способов взлома может помочь нам динамически изменить год.

Перейдите -> Admin -> General, выберите Design -> Expand the Footer section и вставьте приведенный ниже код.

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

Снимите кеш и проверьте.

Кришна иджада
источник
Привет, спасибо за ваш ответ. Я тоже попробую
MazeStricks
Это делает работу, но я должен задаться вопросом, подберут ли пауки сайта поисковой системы правильный год авторского права.
jschrab
2
Это не работает на 2.2.2, так как не принимает HTML-элементы.
Джулиано Варгас
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()) ?>... и затем использую текст авторского права "{{year}}" в администраторе нижнего колонтитула. Таким образом, я могу иметь полный контроль над текстом вместе с годом автообновления.
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>

Затем очистите кеш.

Аарон Аллен
источник
Здравствуйте, Спасибо за этот ответ. Я попробую этот. Спасибо Аарону :)
MazeStricks
0

Лучший способ сделать это - создать плагин after для метода 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;
    }
}

Я позаимствовал регулярное выражение Кришны Иджады, чтобы соответствовать году. Также это добавляет текущий год в сообщении об авторском праве, так что год, когда началось авторское право, также остается видимым.

Люк де Рой
источник
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.

Выполнено!

Джулиано Варгас
источник