Joomla

Как автоматически обновлять год в футере сайта?

Как автоматически обновлять год в футере сайта?

Как автоматически обновлять год в футере сайта?

Каждый год одно и тоже! Вы опять забыли поменять в футере год на очередном сайте! Уже февраль и заказчик негодует – ну как так? Особенно весело, когда таких сайтов 10, 20 или 50...

Не хотите больше думать об этом каждый год? Тогда запишите полезный код и замените им год на своем сайте!

Способ первый. Вывод текущего года через модуль «Копирайты»

В Joomla существует модуль с названием «Копирайты» (модуль для отображения копирайтов сайта и Joomla CMS):
Joomla Модуль «Копирайты»
Рисунок 1. Модуль «Копирайты» для отображения копирайтов сайта и Joomla CMS.

Он предназначен для отображения информации об авторских правах сайта и Joomla CMS.

Модуль имеет 2 языковые константы, которые отвечают за первую и вторую строки в копирайте. Это — текстовые константы MOD_FOOTER_LINE1 и MOD_FOOTER_LINE2, которые можно переопределить через стандартный интерфейс управления языковыми константами Joomla.

В самой константе есть чудесная переменная %date%, которая заменяется на текущий год. Модуль можно вывести в позицию шаблона Joomla или вывести в нужном месте при помощи синтаксиса {loadposition}, {loadmodule} или {loadmoduleid} (для Yootheme Pro)

Вставка текущей даты через переопределение языковой константы модуля Joomla Копирайты
Рисунок 2. Вставка текущей даты через переопределение языковой константы модуля Копирайты

Способ второй. Плагин переопределений

Вставка даты через синтаксис Joomla плагина Content Langos
Рисунок 3. Вставка даты через синтаксис плагина Content Langos

Загрузка модуля плагином - это загрузка плагина (1 запрос в базу), разбор страницы (preg_match_all - довольно хорошо кушает), получение списка ВСЕХ модулей (ещё один запрос), поиск нужного в массиве. Дефолтный loadmoduleid потребляет очень много ресурсов.

Выгоднее использовать плагин Joomla content langos, т.к. он получает модуль из базы по id, а не грузит все в массив и потом производит в нём поиск. В случае с плагином - загрузили плагин, распарсили страницу, вставили константу.

Способ третий. Для Yootheme Pro и не только

Вставляем код через HTML элемент в YOOtheme Pro:
<script> document.currentScript.insertAdjacentHTML('afterend', '<time datetime="' + new Date().toJSON() + '">' + new Intl.DateTimeFormat(document.documentElement.lang, {year: 'numeric'}).format() + '</time>'); </script>
Этот код вставит тег
Вставляем Javascript код в футере сайта через элемент билдера YOOtheme Pro
Рисунок 4. Вставляем Javascript код в футере сайта через элемент билдера YOOtheme Pro.

На момент написания данной статьи, это 2023 год. Добавляйте данный код и забудьте о проблемы ручной смены даты.

Успехов!

Принимаем платежи при помощи PayPal: о чем нужно помнить продавцу

Принимаем платежи при помощи PayPal: о чем нужно помнить продавцу

Вступление

Данная статья время от времени дополняется как база знаний. PayPal довольно распространённый способ оплаты по всему миру. Компания имеет региональные представительства.
Платёжная система PayPal не подходит для российского рынка.

В данной статье я опущу описание процедуры получения верифицированного аккаунта мерчанта PayPal, и сосредоточусь, непосредственно, на моментах, важных для интегратора.

Итак, для организации приёма платежей нужно использовать такую ecom платформу, которая имеет достаточно гибкую расширяемую систему плагинов и отлично себя зарекомендовала. Вы можете использовать альтернативные компоненты, суть от этого не меняется.

Поскольку приём платежей посредством PayPal мной настраивается уже не первый раз, то я поделюсь информацией о важных моментах, которые сэкономят вам время при настройке этого способа оплаты.

1. Используйте песочницу PayPal для тестовых платежей

Обязательно заведите тестовый аккаунт для тестирования sandbox режима («песочница»): https://developer.paypal.com/developer/applications/

В качестве тестового аккаунта нужно указать e-mail, поэтому не перепутайте с вашим основным e-mail, который используется для приёма платежей или добавьте к нему префикс типа Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.. Нужно завести два тестовых аккаунта — продавца и покупателя.

Очень важно опробовать в тестовом режиме процедуру покупки пользователем и проверку зачисления виртуальных средств на счет мерчанта. Ни в коем случае не пренебрегайте этим, поскольку клуб, на котором продаются расширения или шаблоны, должен работать как часы.

2. Отключайте .htpasswd при тестировании PayPal

Во время работы над проектом, мы закрыли фронтальную часть при помощи .htpasswd, поскольку это было наиболее удобным решением, так как нужно было тестировать сайт не только авторизованным пользователем, но и гостем и избежать случайного индексирования полига поисковой системой или визита постороннего человека.

Казалось бы, запаролировали вход на фронт, сохранили в кукис и можно спокойно работать. Не тут то было! Во время тестирования песочницы PayPal мы долго не могли понять, почему платеж проходит успешно, а пользователь и его тарифный не активируются. То есть, оплатив подписку, пользователь не мог авторизоваться, хотя его учетная запись должна быть активирована.

Выяснилось, что причина кроется именно в .htpasswd. На момент тестирования песочницы, просто отключите паролирование фронта и проблемы с активацией юзеров не будет.

3. Настройка параметра Instant Payment Notification Preferences

Итак, вы запустили Интернет-магазин, отключили тестовый режим, указали свой логин мерчанта PayPal и с большим вожделением ожидаете первый настоящий заказ. Однако есть ньюансы. В своё время мы столкнулись со следующей проблемой:

Первая покупка. На e-mail пришло три письма:

  • Письмо первое. Стандартное сообщение регистрации нового пользователя;
  • Письмо второе. Error Log с ошибкой

    Error Log Details-

    • Message: Error Occurred in Paypal Payment Process
    • Record Id: 86
    • Record Type: PayplansPayment
    • 0: Invalid Paypal Receiver Email
  • Письмо третье. Сообщение от PayPal об успешном зачислении денег на счет.

То есть, сперва приходит error_log, уведомляющий об ошибке, а в следующем письме сообщается об успешном зачислении средств. При этом, вы, как мерчант, денежные средства получили, а учетная запись клиента не активирована. Представьте реакцию: человек успешно оплатил покупку, но не имеет доступа на сайт. Подобную ситуацию необходимо исключить.

Причина до банальности проста: необходимо в личном кабинете мерчанта PayPal заполнить параметр Instant Payment Notification Preferences, прописав URL для т.н. callback.

4. Шаги для настойки IPN:

  • Авторизуйтесь в системе PayPal под аккаунтом продавца;
  • В закладке “My Account” нажимите на “Profile”;
  • В столбце “Selling Preferences” нажмите на “Instant Payment Notification Preferences”;
  • Нажмите “Choose IPN Settings” в поле “Notification URL” и вставьте URL своего сайта (например: http://www.mysite.com/index.php?option=com_payplans&view=payment&task=notify);
    (эта ссылка для компонента PayPlans. Замените ссылку на соответствующую компоненту, через который осуществляется приём платежей)
  • Выберите опцию “Receive IPN messages (Enabled)” для включения вашего IPN;
  • Нажмите на кнопку “Save”. Готово.

Приведён пример с пользовательским интерфейс на английском языке, но вам не должно составит труда разобраться в русском интерфейсе и найти аналоги.

После осуществления данных действий, система будет настроена правильно.


Подписывайся в социальных сетях:

© Евгений Сивоконь. Курсы и обучение. Разработка сайтов.