Вход • Регистрация

Как вывести поле "имя" в почтовом шаблоне "Сообщение пользователю о поступлении товара"

  • 28 августа 2020 г.
  • Здравствуйте, не могу разобраться, как вывести поле с типом "имя" с формы обратной связи (input type="text" name="username") в почтовом шаблоне "Сообщение пользователю о поступлении товара" в модуле каталога. В админке в списке ожидании поле "имя" выводится. В БД я создал строку username, потом в файле shop.admin.php прописал в массив $message[$row["lang_id"]] строку username в приватной функции send_mail_waitlist:
    Код
    /**
    * Отправляет уведомления о поступлении товара
    * @return void
    */
    private function send_mail_waitlist($params = array())
    {
    if (! $this->diafan->is_save_rewrite)
    {
    $this->diafan->get_rewrite();
    }

    if(empty($_POST["no_buy"]))
    {
    if($params)
    {
    asort($params);
    $param = serialize($params);
    }
    else
    {
    $param = '';
    }
    include_once ABSOLUTE_PATH.'includes/mail.php';
    $email = ($this->diafan->configmodules("emailconf", 'shop', $this->diafan->oldrow["site_id"])
    && $this->diafan->configmodules("email", 'shop', $this->diafan->oldrow["site_id"])
    ? $this->diafan->configmodules("email", 'shop', $this->diafan->oldrow["site_id"]) : '' );

    $result = DB::query("SELECT * FROM {shop_waitlist} WHERE trash='0' AND good_id=%d".($param ? " AND (param='%s' OR param='%s')" : ''), $this->diafan->save, $param, 'a:0:{}');
    while($row = DB::fetch_array($result))
    {
    if(! empty($GLOBALS["send_mail_waitlist"][$row["mail"]]))
    continue;

    $GLOBALS["send_mail_waitlist"][$row["mail"]] = true;

    if(! isset($subject[$row["lang_id"]]))
    {
    $subject[$row["lang_id"]] =
    str_replace(
    array (
    '%title',
    '%url'
    ), array (
    TITLE,
    BASE_URL
    ),
    $this->diafan->configmodules('subject_waitlist', 'shop', $this->diafan->oldrow["site_id"], $row["lang_id"]));

    $name = $row["lang_id"] == _LANG ? $_POST["name"] : $this->diafan->oldrow["name".$row["lang_id"]];
    $link = BASE_PATH;
    $username = $row["lang_id"] == _LANG ? $_POST["username"] : '';

    foreach($this->diafan->languages as $l)
    {
    if($row["lang_id"] == $l["id"] && ! $l["base_site"])
    {
    $link .= $l["shortname"].'/';
    }
    }
    $link .= $this->diafan->_route->link($this->diafan->save_site_id, "shop", $_POST["cat_id"], $this->diafan->save);
    if($params)
    {
    $i = 0;
    foreach($params as $k => $v)
    {
    if($v)
    {
    $link .= ($i ? '&' : '?').'p'.$k.'='.$v;
    $i++;
    }
    }
    }

    $message[$row["lang_id"]] = str_replace(
    array (
    '%title',
    '%url',
    '%good',
    '%link',
    '%username',
    ), array (
    TITLE,
    BASE_URL,
    $name,
    $link,
    $username,
    ), $this->diafan->configmodules('message_waitlist', 'shop', $this->diafan->oldrow["site_id"], $row["lang_id"]));
    }
    send_mail($row["mail"], $subject[$row["lang_id"]], $message[$row["lang_id"]], $email);
    }
    DB::free_result($result);
    DB::query("DELETE FROM {shop_waitlist} WHERE trash='0' AND good_id=%d".($param ? " AND (param='%s' OR param='%s')" : ''), $this->diafan->save, $param, 'a:0:{}');
    }
    }


    Добавил макрос в почтовом шаблоне %username, но во входящем сообщении это поле приходит пустое. Попробовал посмотреть в сторону includes/mail.php,может быть там должны были быть какие-то параметры, но там не разобрался.

    Кто разбирался с такой задачей, помогите пожалуйста с решением.
  • 01 сентября 2020 г.
  • Люди, ну помогите плиз. Ответ без внимания находится уже сколько дней. Я понимаю, что все занятые, но неужто никто не сталкивался с такой реализацией? Я бы и сам нашел, но это не вордпресс или битрикс, к примеру, где свободной инфы в инете куча
  • 01 сентября 2020 г.
  • У вас все так запутанно, что трудно что-то понять. Наверное поэтому и нет ответов.

    Для начала: в конструкторе форм обратной связи тип поля "имя" отсутствует.
    Далее: вы все же об обратной связи говорите или об уведомлениях из магазина?
    Ну и далее: при поступлении информации о заказе имя (если таковое присутствует в форме) в письме приходит. Т.е. непонятна суть ваших телодвижений.

    Попробуйте попроще объяснить, что именно вы делаете и для чего это нужно. После чего коллеги, возможно, подтянутся.
    • 02 сентября 2020 г.
    • Александра, имеется ввиду уведомления о поступлении товара на склад из магазина. В общем такая суть - есть поле input type="text" name="username". В админ панели в списке ожидании мне удалось сделать вывод этого поля, и хотелось бы сделать вывод этого поля в виде макроса %username в почтовом шаблоне письма о поступлении товара на склад.
      • 02 сентября 2020 г.
      • А, т.е. Вы сделали поле input в админке, заполняете его при отправке уведомления и хотите, чтобы этот _POST подставлялся в письмо?
        • 03 сентября 2020 г. , редакция: 03 сентября 2020 г.
        • Виталий, да. переменная $_POST["username"] подставлялась в письмо-уведомление о поступлении товара на склад из магазина
          • 03 сентября 2020 г.
          • Если это имя где то присутствует в базе, то вытащите его оттуда и всех делов.
            • 04 сентября 2020 г.
            • так главный вопрос как вытащить? Имя хранится в таблице diafan_shop_waitlist
              • 04 сентября 2020 г. , редакция: 04 сентября 2020 г.
              • Как оно там хранится там поля только:

                id good_id user_id lang_id mail created param trash

                или для авторизованного пользователя по его ID достать хотите. Если да то:
                Код
                DB::query_result("SELECT fio FROM {users} WHERE id = (SELECT user_id FROM {shop_waitlist} WHERE id = d%)", ID элемента)
  • 01 сентября 2020 г.
  • Цитата
    Добавил макрос в почтовом шаблоне %username,
    Конечно, его же в POST нет.
    Что именно туда подставляться должно? Имя? А где оно? В листе ожиданий же только мыло. Имени просто храниться негде, и брать неоктуда

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум