Lem

Lem

С нами с 09 октября 2018; Место в рейтинге пользователей: #1060

Вывод картинки в OpenGraph с использованием MIGX

Добрых уток времени всем. Пытаюсь настроить красивый вид ссылок на сайт в мессенджарах.
Возникла проблема с передачей картинки. У меня на сайте есть несколько типов страниц. На одном из них использую MIGX для создания tv-поля с картинкой новости. На всех остальных этого tv-поля нет вообще.
В head прописал такой код:
<meta property="og:image" content="[[++site_url]][[getImageList?
           &tvname=`image`
           &tpl=`openGraph_Img`
           &limit=`1`
           &docid=`[[*id]]`
         ]]">
В темплейте `openGraph_Img` лежит просто
[[+image]]
Такая конструкция работает на страницах, у которых есть tv-шка с картинкой статьи.
Вопрос: как добавить проверку на отсутсвие tv-шки с картинкой и указанием дефолтной картинки в этом случае?
Пробовал в темплейте `openGraph_Img` указать проверку
[[+image:isnot=``:then=`[[+image]]`:else=`images/defaultPic.jpg`]]
но так не работает (если я правильно понимаю это потому что на других страницах такого TV просто нет, соответственно проверка не начинается).
Lem
Lem
01 сентября 2020, 13:38
modx.pro
782
0

Автоматическое увеличение числа (стаж работы) в определенный день каждый год.

Доброго времени суток.
На сайте есть раздел с преподавательским составом. В информации про преподавателя есть пункт «стаж», записанный таким образом:
<p>пед. стаж: <span style="font-family:georgia,serif;"><em><strong>12 років</strong></em></span></p>
Каждый год, как вы понимаете, стаж увеличивается. Подскажите как бы правильно это дело автоматизировать.
Пока что дошел до такого:
• Создал новый сниппет, в котором, определяю текущую дату и сравниваю её с нужной датой. Затем увеличиваю число стажа, если дата подходит (так же в нём записана функция, которая в зависимости от числа подставляет слово «год» в правильно склонении – 1 год; 12 лет и т.д.):
<?php
  $oldStazh; //текущий стаж, записанный вручную

  $todayYear = date('Y');
  $mustBeDate = '01.06';
  $todayDate = date('d.m'); //день, когда стаж должен увеличиться
  $stazh = $oldStazh + $todayYear - 2020; //новый стаж
  if ($mustBeDate == $todayDate) $stazh++; //увеличиваем стаж, если сегодня 01.06

//функция для того что бы правильное окончание выдавало в слове "год"
if (!function_exists('format_by_count')) {
    function format_by_count($stazh)
    {
        if($stazh % 10 == 1 && $stazh % 100 != 11)
            return 'рік';
        if($stazh % 10 >= 2 && $stazh % 10 <= 4 && ($stazh % 100 < 10 || $stazh % 100 > 20))
            return 'роки';
        return 'років';
    }
}

return $stazh . ' ' . format_by_count($stazh);
• На странице где нужно выводить информацию о стаже вызываю созданный сниппет и передаю туда значение стажа на текущий год:
<p>пед. стаж: <span style="font-family:georgia,serif;"><em><strong>[[!pedStazh? &oldStazh=`25`]]</strong></em></span></p>
Поигрался на локальной копии меняя время в системе. Ставлю точную дату 01.06.2020 – стаж увеличивается. Ставлю 01.06.2021 – стаж увеличивается ещё на 1. Но если поставить дату 01.07.2020 стаж возвращается к значению $oldStazh. И если я правильно понимаю, то изменение срабатывает только для того пользователя, который зашел на страницу.
Можно ли это дело сделать так что бы срабатывало на стороне сервера в определенный день и даже, если пользователь зайдет месяц (условно) спустя, то увидит уже новый стаж? Желательно без использования БД…
Lem
Lem
01 июля 2020, 18:26
modx.pro
519
0