Перейти к содержимому


Фотография
- - - - -

адрес электронной почты клиента в письме не оформлен ссылкой <a href="mailto:


Лучший Ответ SmetDenis , 28 January 2017 - 13:45

Решение

 

В файле

 

jbuniversal\cart-elements\order\email\email.php

 

Добавить внутрь класса следующий метод

    /**
      * Renders the element
      * @param array $params
      * @return mixed|string
      */
     public function edit($params = array())
     {
         $mailto = $this->get('value');
 
         if ($mailto) {
             return sprintf('<a href="mailto:%s">%s</a>', $mailto, $mailto);
         }
     }
Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 12

#1 happy home

happy home

Отправлено 29 December 2016 - 03:53

Здравствуйте.

 

Обратили внимание, что адрес электронной почты клиента, указанный при оформлении заказа, в поле - Email (email) (из Библиотеки элементов в Списке полей Формы заказа) JBZoo 2.3.0 стал приходить в письме как обычный текст, а не как ссылка.

<a href="mailto:почта@mail.ru" title="Mailto почта@mail.ru">почта@mail.ru</a>

Раньше, в JBZoo 2.1.5 - письмо приходило и адрес был ссылкой

Сейчас используем JBZoo 2.3.0 - адрес в письме стал обычным текстом.

 

Заметили это только в почтовых клиентах, так как в письмах через вэб интерфейс почтового сервиса адрес оформляется ссылкой, видимо силами самого сервиса...

 

В коде письма адрес оформлен вот так:

 

Раньше, в JBZoo 2.1.5:

<li class="element element-email">
    <strong>Актуальный E-mail</strong>: <a href="mailto:почта@mail.ru" title="Mailto почта@mail.ru">почта@mail.ru</a></li>

Сейчас, в JBZoo 2.3.0:

<dt>Актуальный E-mail</dt><dd>mailto:почта@mail.ru</dd>

Нашел файл в JBZoo 2.1.5 и сравнил его с файлом JBZoo 2.3.0 - они идентичны:

 

/media/zoo/applications/jbuniversal/elements/email/email.php

 

В файле присутствуют строки, которые, как я понимаю, отвечают за оформление адреса в виде ссылки:

// JBZoo hack. Email link no render in emails
        return '<a href="mailto:' . $mailto . '" title="Mailto ' . $this->getText() . '">' . $this->getText() . '</a>';

Подскажите пожалуйста, что можно предпринять, чтобы адрес электронной почты в письме слал оформляться ссылкой, как в JBZoo 2.1.5

 

Вот скрины настроек:

 

1.jpg

 

2.jpg

 

3.jpg

 

4.jpg

 

Буду очень признателен за помощь!

Заранее, спасибо!


Сообщение отредактировал happy home: 29 December 2016 - 03:57

  • 0

#2 alexmixaylov

alexmixaylov

Отправлено 04 January 2017 - 09:10

нужно посмотреть шаблон вашего письма

на скринах он указан как myorder

там можно поправить


  • 0

#3 happy home

happy home

Отправлено 04 January 2017 - 14:54

на скринах он указан как myorder там можно поправить

 

Здравствуйте.

Вот содержимое файла /media/zoo/applications/jbuniversal/templates-system/renderer/email/myorder.php

<?php
/**
 * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 * @package     jbzoo
 * @version     2.x Pro
 * @author      JBZoo App http://jbzoo.com
 * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
 * @license     http://jbzoo.com/license-pro.php JBZoo Licence
 * @coder       Alexander Oganov <t_tapak@yahoo.com>
 */

// no direct access
defined('_JEXEC') or die('Restricted access');
?>
    <table <?php echo $this->getAttrs(array(
            'cellpadding' => 8,
            'width'       => '100%'
        )) .
        $this->getStyles(array(
            'border-collapse' => 'collapse',
            'font-size'       => '14px',
            'width'           => '100%'
        )); ?>>

        <?php if ($this->checkPosition('title')) : ?>
            <tr>
                <td colspan="2">
                    <h2><?php echo $this->renderPosition('title'); ?></h2>
                    <hr>
                </td>
            </tr>
        <?php endif; ?>

        <tr>
            <td colspan="2" valign="top">
                <?php echo $this->renderPosition('items', array('style' => 'block')); ?>
            </td>
        </tr>

        <tr>
            <td valign="top" width="50%">
                <?php echo $this->renderPosition('info', array('style' => 'block')); ?>
                <?php echo $this->renderPosition('payment', array('style' => 'block')); ?>
            </td>
            <td valign="top">
                <?php echo $this->renderPosition('shipping', array('style' => 'block')); ?>
            </td>
        </tr>

    </table>

<?php if ($this->checkPosition('other')) : ?>
    <table>
        <?php echo $this->renderPosition('other', array('style' => 'table-row')); ?>
    </table>
<?php endif;
 

Не подскажете, что следует в нем изменить, что бы добиться желаемого результата?

Спасибо

 

Возможно стиль block у позиции info в которой выводится элемент email "чистит" параметр mailto..


Сообщение отредактировал happy home: 04 January 2017 - 14:58

  • 0

#4 alexmixaylov

alexmixaylov

Отправлено 05 January 2017 - 09:10

Стиль block просто обрамляет вывод блоком. Он не влияет
Нужно смотреть шаблон вывода самого Элемента email
Выше вы приводили его код
И там в коде(в комментарии) написано что это хак и ссылка в письме рендерится не будет

Как то так. Вопрос все таки к разрабоьчикам
  • 1

#5 happy home

happy home

Отправлено 05 January 2017 - 09:31

Как то так. Вопрос все таки к разрабоьчикам

 

Спасибо Вам за ответ.

 

Буду ждать ответа от Дениса, возможно он подскажет решение.


  • 0

#6 SmetDenis

SmetDenis

Отправлено 09 January 2017 - 08:45

Добавьте функцию рендера в элемент email (на свой страх и риск)

media\zoo\applications\jbuniversal\cart-elements\order\email\email.php
 
    /**
      * Renders the element
      * @param array $params
      * @return mixed|string
      */
     public function render($params = array())
     {
         $mailto = $this->get('value');
         
         if ($mailto) {
             return sprintf('<a href="mailto:%s">%s</a>', $mailto, $mailto);
         }
     }

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#7 happy home

happy home

Отправлено 18 January 2017 - 04:41

Здравствуйте Денис.

Вот, только сейчас решились проверить.

 

Рецепт не помог

Адрес электронной почты в коде пришедшего письма выглядит вот так:

 

<dt>Актуальный E-mail</dt><dd>adres@mail.ru</dd>


  • 0

#8 SmetDenis

SmetDenis

Отправлено 22 January 2017 - 21:39

Вы сделали предложенную правку?

В превью почтового сообщения тоже нет ссылки?


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#9 happy home

happy home

Отправлено 23 January 2017 - 03:31

ы сделали предложенную правку? В превью почтового сообщения тоже нет ссылки?

 

 

Здравствуйте Денис.

Вот содержимое файла media\zoo\applications\jbuniversal\cart-elements\order\email\email.php - указанный вами код добавлен в самом низу:

<?php
/**
 * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 * @package     jbzoo
 * @version     2.x Pro
 * @author      JBZoo App http://jbzoo.com
 * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
 * @license     http://jbzoo.com/license-pro.php JBZoo Licence
 * @coder       Andrey Voytsehovsky <kess@jbzoo.com>
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

/**
 * Class JBCartElementOrderFieldText
 */
class JBCartElementOrderEmail extends JBCartElementOrder
{

    /**
     * @param array $params
     * @return int
     */
    protected function _hasValue($params = array())
    {
        $value = $this->get('value');

        return $this->_containsEmail($value);
    }

    /**
     * @param $text
     * @return int
     */
    protected function _containsEmail($text)
    {
        return preg_match('/[\w!#$%&\'*+\/=?`{|}~^-]+(?:\.[!#$%&\'*+\/=?`{|}~^-]+)*@(?:[A-Z0-9-]+\.)+[A-Z]{2,6}/i', $text);
    }

    /**
     * Renders the element in submission
     * @param array $params
     * @return string
     */
    public function renderSubmission($params = array())
    {
        $default = $this->getUserState($params->get('user_field'));
        return $this->app->html->_(
            'control.text',
            $this->getControlName('value'),
            $this->get('value', $default),
            'size="60" maxlength="255" id="' . $this->htmlId() . '"'
        );
    }

    /**
     * @param $value
     * @param $params
     * @return array
     */
    public function validateSubmission($value, $params)
    {
        $params = $this->app->data->create($params);
        $value  = $this->app->data->create($value);

        return array(
            'value' => $this->app->validator
                ->create('email', array('required' => (int)$params->get('required')))
                ->clean($value->get('value'))
        );
    }
	
	    /**
      * Renders the element
      * @param array $params
      * @return mixed|string
      */
     public function render($params = array())
     {
         $mailto = $this->get('value');
         
         if ($mailto) {
             return sprintf('<a href="mailto:%s">%s</a>', $mailto, $mailto);
         }
     }


}
 

 Вот тут смотрю превью (в приходящем письме e-mail тоже как обычный текст)

 

email_1.jpg

 

Вот так выглядит текст письма

 

email.jpg


  • 0

#10 happy home

happy home

Отправлено 26 January 2017 - 05:18

up


  • 0




Click to return to top of page in style!