Новости Joomla

Вышли релизы Joomla 6.1 и Joomla 5.4.5: новые возможности и стабильность

Релиз Joomla 6.1.0

Проект Joomla! объявил о доступности Joomla 6.1 [Nyota] — новой минорной версии шестой серии, а также о выпуске релиза исправлений ошибок Joomla 5.4.5. Релиз 6.1 приносит ряд долгожданных функций, повышающих удобство управления контентом и защиту от спама.

👩‍💻 Компонент "CS Афиши" для Joomla.

👩‍💻 Компонент "CS Афиши" для Joomla.

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

В состав пакета расширений входят:
- Компонент "CS Афиши"
- Модуль "Календарь событий"
- Модуль "Предстоящие события"
- Библиотека "ImgResize"

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

Модуль "Календарь событий" отображает предстоящие и прошедшие мероприятие на календаре, с отображением мероприятий на конкретную дату во всплывающем окне.

Модуль "Предстоящие события" показывает список предстоящий событий по порядку их наступления.

P.S. Расширение платное, но плата символическая, чисто для отработки приема платежей. Ключи без ограничения по времени, купившие сейчас - смогут обновляться без ограничений.

Разработчик - участник нашего сообщества Дмитрий Денисов (@codersite).

Страница расширения
Демо

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

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
Здравствуйте

Оформление заказа происходит на одной странице
При выборе варианта доставки "Самовывоз" - скрывается поле "Адрес получателя"
скрытие сделал JS примерно так:
Код: javascript
if ($("input:checked").val() == "standard_shipping%7C%D0%A1%D0%B0%D0%BC%D0%BE%D0%B2%D1%8B%D0%B2%D0%BE%D0%B7%7C%D1%81%D0%BE+%D1%81%D0%BA%D0%BB%D0%B0%D0%B4%D0%B0%7C0.00%7C3") {
$("#vm_myadres_div, #vm_myadres_input").hide();
}
else
$("#vm_myadres_div, #vm_myadres_input").show();


Как сделать так, чтобы скрытое при оформлении заказа поле "Адрес получателя" не приходило в письмах админу и покупателю?

Названия полей адреса, которые приходят в письмах, формируются здесь:
components/com_virtuemart/themes/default/templates/order_emails/confirmation_email.tpl.php
Код: php
<td><b><?php echo $VM_LANG->_($field->title)? $VM_LANG->_($field->title) : $field->title ?>:</b>

Пожалуйста, помогите в этом вопросе или подскажите где копать.
*

fsv

  • Moderator
  • 2787
  • 413 / 2
в confirmation_email.tpl.php  посмотрите, что из себя представляет переменная $order_shipping , давно было, могу ошибаться, вроде как она составная. Получите из нее переменную, которую можно проверить на "самовывоз" (возможно, по id способа платежа, т.к. название в админке изменить легче, чем id в базе).
Далее смотрите адресные блоки кода. После
Код
if( $field->name == 'email') $field->name = 'user_email';
можно добавить
Код
if( "самовывоз" ){
    if( $field->name == 'поле_которое_надо_не_отсылать') continue;
}

Первое, что в голову пришло. Еще можно посмотреть формирование $registrationfields до передачи в шаблон письма.
Веб-разработка: заказ. Только новая разработка.
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
fsv, но в этом случае поля "Адрес получателя" просто не будет в письмах при любых раскладах.
А нужно,  если поле "Адрес получателя" скрыто при оформлении заказа  - то и в письмах его нет.
А если не скрыто, то соответственно покупатель это поле заполняет и оно будет присутствовать в письмах
« Последнее редактирование: 06.10.2015, 17:33:07 от sashgera »
*

fsv

  • Moderator
  • 2787
  • 413 / 2
Я так понял, что поле скрывается, и его не надо в письмо только при самовывозе. Поэтому и предложил проверять в шаблоне письма на этот вид доставки, если он, поле не выводится. Там поля в цикле выводятся, в данном случае его вывод будет пропущен, хотя оно в переменной будет всегда. Почему при любом раскладе? Пробовали?
Веб-разработка: заказ. Только новая разработка.
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
fsv, как получить переменную из $order_shipping проверить на "самовывоз" я не знаю. Сможете помочь?
Пробовал так, по значению value "Самовывоза":
Код: javascript
if( "standard_shipping%7C%D0%A1%D0%B0%D0%BC%D0%BE%D0%B2%D1%8B%D0%B2%D0%BE%D0%B7%7C%D1%81%D0%BE+%D1%81%D0%BA%D0%BB%D0%B0%D0%B4%D0%B0%7C0.00%7C3" ){
    if( $field->name == 'vm_myadres') continue;
}
но поле "Адрес получателя" в письмах скрыто, при любом варианте доставки
*

fsv

  • Moderator
  • 2787
  • 413 / 2
но поле "Адрес получателя" в письмах скрыто, при любом варианте доставки
потому что сейчас: "если true, пропускаем" (всегда)

Над первым foreach адресных полей:
Код
$ship_info_arr = explode("|", $db->f("ship_method_id") );

Просмотрите полученный массив (потом это удалите!):
Код
echo '<pre>'.print_r($ship_info_arr, true).'</pre>';
Найдите для самовывоза уникальный элемент массива. Пусть это будет второй элемент "Самовывоз", класс доставки может повторяться (не уникальный).
Только если вы в админке измените название доставки, все накроется. Для надежности можете запрос в базу на получение id этой доставки написать.

Тогда там, где выше написал:
Код
if( $ship_info_arr[1] == "Самовывоз" ){
    if( $field->name == 'vm_myadres') continue;
}
Веб-разработка: заказ. Только новая разработка.
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
fsv, спасибо, все получилось.
к Самовывозу добавил еще одно поле
повторил все тоже самое для Доставки по Москве, здесь только одно поле в письме выводить не нужно
Код: php
$ship_info_arr = explode("|", $db->f("ship_method_id") );
$ship_info_arr2 = explode("|", $db->f("ship_method_id") );

foreach( $shippingfields as $field ) {
   if( $field->name == 'email') $field->name = 'user_email';

   if( $ship_info_arr[1] == "Самовывоз" ){
      if( $field->name == 'vm_myadres') continue;
      if( $field->name == 'vm_pasport') continue;
   }
   if( $ship_info_arr2[1] == "Доставка по Москве" ){
      if( $field->name == 'vm_pasport') continue;
   }

Только если вы в админке измените название доставки, все накроется. Для надежности можете запрос в базу на получение id этой доставки написать.
Вывод полей в письмах пропускаться не будет? Или сайт накроется?
Мне очень неудобно спрашивать – а как сделать запрос в БД на получение id доставки?

*

fsv

  • Moderator
  • 2787
  • 413 / 2
Вот это
$ship_info_arr = explode("|", $db->f("ship_method_id") );
$ship_info_arr2 = explode("|", $db->f("ship_method_id") );
масло масляное, не надо. На просмотр оба массива, и вы увидите, что они одинаковые. В каждом заказе $db одна.
Один раз получаете массив, в обоих проверках его используете.

Сайт не накроется, поля выводится начнут. Запрос - смотреть надо.

Забыл, шаблон письма в utf-8 без бум, иначе проверка на совпадение с кириллической строкой не пройдет. Но раз получилось, и сами знаете.
Веб-разработка: заказ. Только новая разработка.
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
fsv, внес изменения:
Код: php
$ship_info_arr = explode("|", $db->f("ship_method_id") );

if( $ship_info_arr[1] == "Самовывоз" ){
  if( $field->name == 'vm_myadres') continue;
  if( $field->name == 'vm_pasport') continue;
}
if( $ship_info_arr[1] == "Доставка по Москве" ){
  if( $field->name == 'vm_pasport') continue;
}
ну, если вдруг приспичит изменить название доставки, то наверное, можно потом поправить в коде?
Например
Код: php
if( $ship_info_arr[1] == "Доставка по Москве" ){
на
Код: php
if( $ship_info_arr[1] == "Доставка по МО" ){
*

fsv

  • Moderator
  • 2787
  • 413 / 2
ну, если вдруг приспичит изменить название доставки, то наверное, можно потом поправить в коде?
да
Веб-разработка: заказ. Только новая разработка.
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
fsv, спасибо, вы мне здорово помогли!
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
fsv, у меня еще вопрос, если сможете, пожалуйста, помогите
В письмах, название товара сделал ссылкой:
Код: php
<?php
$q  = "SELECT product_id FROM #__{vm}_product WHERE product_name='".$dboi->f("product_name")."'";
$db->query($q);
$db->next_record();
$product_id = $db->f("product_id");
?>
<tr class="Stil1">
<td><?php echo $my_qty ?></td>
<td><a href="http://www.МойСайт/component/virtuemart/?page=shop.product_details&product_id=<?php echo $product_id ?>"><?php $dboi->p("product_name")?> <?php echo ($dboi->f("product_attribute")? ' ('.$dboi->f("product_attribute").')' : ''); ?></a></td>

Название товара получилось ссылкой, но поля стали скрываться только в письмах покупателя, а в письмах админа - нет.



если запрос делаю так (изменяю 3-ю строку), то поля скрываются и у покупателя, и у админа, но ссылка получается одинаковой для всех товаров (если в корзине было более одного товара):
Код: php
<?php
$q  = "SELECT product_id FROM #__{vm}_product WHERE product_name='".$dboi->f("product_name")."'";
$db->query(); //изменяю 3-ю строку
$db->next_record();
$product_id = $db->f("product_id");
?>
« Последнее редактирование: 25.10.2015, 20:58:03 от sashgera »
*

fsv

  • Moderator
  • 2787
  • 413 / 2
Вы пытаетесь получить id товара. Он известен, внутри цикла  while($dboi->next_record()) {...}
Код
$prid=$dboi->f("product_id");

Вот откопал вариант письма, более чем 2,5-годичной давности. Там есть ссылка на товар.
Не для копипаста! Там перепиленный вариант под конкретную ситуацию. Но ссылку на товар рассмотреть при желании можно.

Спойлер
[свернуть]

Веб-разработка: заказ. Только новая разработка.
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
сделал так, теперь есть и ссылка товара и скрываются поля
Код: php
<td>
<?php
$prid=$dboi->f("product_id");
$mydb = &JFactory::getDBO();         
$mydb->setQuery("SELECT product_name FROM #__vm_product WHERE product_id=(SELECT product_parent_id FROM #__vm_product WHERE product_id=$prid)");
?>       
<a href="<?php echo JURI::root(); ?>/index.php?page=shop.product_details&flypage=flypage.tpl&product_id=<?php echo $prid ?>"><?php $dboi->p("product_name")?> <?php echo ($dboi->f("product_attribute")? ' ('.$dboi->f("product_attribute").')' : ''); ?></a></td>

fsv, большое спасибо! Вы меня снова выручили
*

fsv

  • Moderator
  • 2787
  • 413 / 2
это, вроде, как ни к чему тут:
Код
$mydb = &JFactory::getDBO();         
$mydb->setQuery("SELECT product_name FROM #__vm_product WHERE product_id=(SELECT product_parent_id FROM #__vm_product WHERE product_id=$prid)");
Веб-разработка: заказ. Только новая разработка.
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
fsv, все понял, еще раз спасибо!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Уведомление о заказе в зависимости от варианта доставки

Автор baltazors

Ответов: 0
Просмотров: 4082
Последний ответ 07.06.2017, 11:44:10
от baltazors
Сделать название товара ссылкой в письмах о заказе

Автор sashgera

Ответов: 0
Просмотров: 1395
Последний ответ 19.10.2015, 14:15:17
от sashgera
Дополнительное поле с информацией о доставке

Автор sashgera

Ответов: 19
Просмотров: 1728
Последний ответ 10.02.2015, 20:48:38
от sashgera
[Решено]Краткая информация о товаре в письме о заказе пользователю

Автор mcross

Ответов: 1
Просмотров: 1465
Последний ответ 04.10.2012, 14:47:00
от mcross
Глюк на странице информации о заказе

Автор nextvid

Ответов: 1
Просмотров: 1593
Последний ответ 15.08.2011, 10:56:00
от d0ublezer0