0 Пользователей и 1 Гость просматривают эту тему.
  • 65 Ответов
  • 2498 Просмотров
*

varX

  • Завсегдатай
  • 1939
  • 125 / 5
  • разработка компонентов
Добрый день,
Пользуюсь плагином QF3, но появилась некоторая проблемка.
Хочу сделать так чтобы в теме отправляемого письма была информация: 1.id отправки, 2. Титл страницы с которой отправили, 3. Строка ФИО(которую заполнили в форме).
Для того чтобы добавлять заголовок страницы изменил в buildmail.php несколько строк:
        if ($project->emailparams->subject) {
       $pagetitle = JFactory::getDocument()->getTitle();
            $mail->setSubject($pre.$pagetitle);
        } else {
            $mail->setSubject($pre.$this->mlangLabel($project->title));
        }
Если форма расположена на стандартной странице Joomla заголовок нормально подгружается, но я пользуюсь ещё плагином K2, если из статьи К2 отправляется форма то форма подцепляет заголовок главной страницы.
Никак не понимаю как-бы подцепить туда титлы К2.
Подскажите пжлста =)

Функция JFactory::getDocument()->getTitle() меняет свое значение в ходе выполнения кода вашего сайта. Соответственно, вы можете изменить порядок выполнения плагинов в административной панели. Если ничего не изменилось, то он соответствует порядку их расположения.
*

binarymind

  • Новичок
  • 4
  • 0 / 0
Функция JFactory::getDocument()->getTitle() меняет свое значение в ходе выполнения кода вашего сайта. Соответственно, вы можете изменить порядок выполнения плагинов в административной панели. Если ничего не изменилось, то он соответствует порядку их расположения.
Добрый день,

Посмотрел, поменял порядок, ничего не изменилось. Попробовал вставить customphp в форму, вставлял код:
<?php echo JFactory::getDocument()->getTitle(); ?> - показывает правильный заголовок от статьи К2 в форме но отправляется с главной страницы, после заполнения и отправки формы и открытии формы заново тоже показывает заголовок главной страницы.
Пробовал вот так вставлять титл:
<?php
$app    = JFactory::getApplication();
$jinput = $app->input;
$option = $jinput->getCmd('option');
$view   = $jinput->getCmd('view');

if ($option=="com_k2" && $view=="item")
{

    $item_id = $jinput->getInt('id');

    JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_k2/tables');
    $item = JTable::getInstance('K2Item', 'Table', array());
    $item->load($item_id);

    echo $item->title;

}
?> - При загрузке страницы показывает тоже правильный заголовок статьи К2 но при отправке в письме вообще ничего не заполняет, пустота. Также после заполнения и открытии формы заново ничего не показывает вообще.

При этом ссылку на статью К2 он получает корректную.
Я убрал уже все кастомные теплэйты для модулей K2. Не исправило ситуации.
Даж не знаю в какую сторону копать.

Upd

Если добавить К2 статьи как пункт подменю то все титлы начинают отрабатывать корректно.
« Последнее редактирование: 15.03.2019, 10:06:13 от binarymind »
*

varX

  • Завсегдатай
  • 1939
  • 125 / 5
  • разработка компонентов
Это потому что вывод формы на страницу и обработка ее результатов - разные процессы, они в разное время осуществляются. Когда выводите форму, в JFactory::getDocument()->getTitle() уже есть значение от к2, а когда обрабатываете результаты - еще нет. А если вы получаете $jinput->getCmd('option');, то при выводе формы это com_k2, а при обработке - это com_qf3.

Если можете пользоваться customphp, то вам нужно получать title при загрузке формы, но не при ее обработке. И передавать уже значение с каким-нибудь "левым" своим полем, например input[hidden]. Компонентом левое поле не будет обрабатываться, но в customphp (уже в письме) вы его сможете сами обработать. Или в файле обработаете, в buildemail.php/
« Последнее редактирование: 15.03.2019, 14:52:51 от varX »
*

binarymind

  • Новичок
  • 4
  • 0 / 0
Это потому что вывод формы на страницу и обработка ее результатов - разные процессы, они в разное время осуществляются. Когда выводите форму, в JFactory::getDocument()->getTitle() уже есть значение от к2, а когда обрабатываете результаты - еще нет. А если вы получаете $jinput->getCmd('option');, то при выводе формы это com_k2, а при обработке - это com_qf3.

Если можете пользоваться customphp, то вам нужно получать title при загрузке формы, но не при ее обработке. И передавать уже значение с каким-нибудь "левым" своим полем, например input[hidden]. Компонентом левое поле не будет обрабатываться, но в customphp (уже в письме) вы его сможете сами обработать. Или в файле обработаете, в buildemail.php/

Спасибо, подразобрался, может кому пригодится, значит если страница не является пунктом меню то она исполняется на главной странице поэтому во время формирования письма если использовать код <?php echo JFactory::getDocument()->getTitle(); ?> то он получает заголовок той страницы где исполняется.
Решил это немного костыльным методом но рабочим.
По вашему совету я создал поле input[hidden] задал ему в настройках id="titlek2" и в buildform.php добавил такой javascript:
<script type='text/javascript'>
addEventListener('load', function(e) {
    var nameInput = document.getElementById('titlek2');
    nameInput.value = "<?php echo JFactory::getDocument()->getTitle(); ?>";
}, false);
</script>
Собственно скирипт будучи на странице получает актуальный заголовок и заполняет его в скрытое поле отправляя далее.
Конечно былобы не плохо использовать какое нибудь поле заполняемое внутри Joomla какой id прописывать.

Подскажите пожалуйста, дальше хотелбы вытаскивать из полей заполненных на сайте текстовое поле input[text] и поле input[hidden] и заполнять их в тему отправляемого письма. Куда копать, откуда получать?
*

varX

  • Завсегдатай
  • 1939
  • 125 / 5
  • разработка компонентов
Спасибо, подразобрался, может кому пригодится, значит если страница не является пунктом меню то она исполняется на главной странице поэтому во время формирования письма если использовать код <?php echo JFactory::getDocument()->getTitle(); ?> то он получает заголовок той страницы где исполняется.
Решил это немного костыльным методом но рабочим.
По вашему совету я создал поле input[hidden] задал ему в настройках id="titlek2" и в buildform.php добавил такой javascript:
<script type='text/javascript'>
addEventListener('load', function(e) {
    var nameInput = document.getElementById('titlek2');
    nameInput.value = "<?php echo JFactory::getDocument()->getTitle(); ?>";
}, false);
</script>
Собственно скирипт будучи на странице получает актуальный заголовок и заполняет его в скрытое поле отправляя далее.
Конечно былобы не плохо использовать какое нибудь поле заполняемое внутри Joomla какой id прописывать.

Подскажите пожалуйста, дальше хотелбы вытаскивать из полей заполненных на сайте текстовое поле input[text] и поле input[hidden] и заполнять их в тему отправляемого письма. Куда копать, откуда получать?
Если вы используете javascript, тогда нет необходимости вносить изменения в код компонента, достаточно его вывести через customHtml. Что-то вроде этого
Код
<script>document.getElementById('titlek2').value = document.title;</script>
Можно добавить сразу под вашим полем (ниже). А "будучи на странице получает актуальный заголовок..." - это не совсем правильно. Он уже ничего там не получает, так как nameInput.value = "<?php echo JFactory::getDocument()->getTitle(); уже вставлен еще до вывода на страницу. PHP выполняется на сервере.

Если же вы используете php, тогда нет необходимости в javascript, вы сразу можете задать полю значение.
Код
echo '<input type="hidden" name="titlemod" value="'.JFactory::getDocument() ->getTitle().'"/>';

"Конечно было бы не плохо использовать какое-нибудь поле заполняемое внутри Joomla какой id прописывать." - не очень понял, что имеется в виду. Если нужно добавить id к полю, то это в настройках поля легко сделать. Вкладка custom позволяет добавить любой атрибут к любому полю.

Если нужно "вытаскивать из полей заполненных на сайте" значение, тогда нужно рассматривать конкретный случай, здесь по разному можно делать. Но простого способа, вроде, $jinput->getCmd('option'); нет, так как поля в компоненте имеют одинаковые названия и отличаются индексом.
*

binarymind

  • Новичок
  • 4
  • 0 / 0
Если вы используете javascript, тогда нет необходимости вносить изменения в код компонента, достаточно его вывести через customHtml. Что-то вроде этого
Код
<script>document.getElementById('titlek2').value = document.title;</script>
Можно добавить сразу под вашим полем (ниже). А "будучи на странице получает актуальный заголовок..." - это не совсем правильно. Он уже ничего там не получает, так как nameInput.value = "<?php echo JFactory::getDocument()->getTitle(); уже вставлен еще до вывода на страницу. PHP выполняется на сервере.

Если же вы используете php, тогда нет необходимости в javascript, вы сразу можете задать полю значение.
Код
echo '<input type="hidden" name="titlemod" value="'.JFactory::getDocument() ->getTitle().'"/>';

"Конечно было бы не плохо использовать какое-нибудь поле заполняемое внутри Joomla какой id прописывать." - не очень понял, что имеется в виду. Если нужно добавить id к полю, то это в настройках поля легко сделать. Вкладка custom позволяет добавить любой атрибут к любому полю.

Если нужно "вытаскивать из полей заполненных на сайте" значение, тогда нужно рассматривать конкретный случай, здесь по разному можно делать. Но простого способа, вроде, $jinput->getCmd('option'); нет, так как поля в компоненте имеют одинаковые названия и отличаются индексом.


Спасибо, доступно, остался на javascript. Работает отлично через customhtml. Решил получение полей в subject письма через $_POST. ^-^
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

QuickForm 2 - конструктор форм с зависимыми полями и калькулятором

Автор varX

Ответов: 1260
Просмотров: 60211
Последний ответ 15.03.2019, 05:53:59
от varX
QuickForm - форма с функциями калькулятора и зависимыми полями

Автор varX

Ответов: 1325
Просмотров: 155895
Последний ответ 14.03.2019, 13:04:12
от dmxxxxx
Создание форм с помощью JSN UniForm Pro

Автор yunoshev

Ответов: 7
Просмотров: 3236
Последний ответ 07.12.2017, 18:09:22
от alekshavan
Форма Конструктор комплектаций

Автор Dusk09

Ответов: 0
Просмотров: 674
Последний ответ 07.05.2017, 01:25:26
от Dusk09
Конструктор форм JSN UniForm не применяется цвет фона

Автор DeniTornado

Ответов: 0
Просмотров: 909
Последний ответ 08.12.2016, 12:39:12
от DeniTornado