Показаны сообщения с ярлыком virtuemart. Показать все сообщения
Показаны сообщения с ярлыком virtuemart. Показать все сообщения

среда, 20 октября 2010 г.

Отправка уведомления о заказе админу в Virtuemart, если покупатель не указал свой email

Если делать в своем магазине процедуру покупки без всяких регистраций и с минимум усилий то скорей всего вам захочется сделать поле e-mail в данных пользователя необязательным, ведь не все имеют свою электронную почту да и не все хотят ее оставлять, вполне достаточно написать в регистрационной форме ФИО и Телефон, а e-mail по желанию.

Но вот ведь незадача! Если пользователь не введет своего емэйла, то и админу тоже не прийдет письмо с уведомлением о заказе. А почему? Сейчас попытаюсь разъяснить.

Открываем файл administrator/components/com_virtuemart/classes/ps_checkout.php

примерно на строках 2160-2162 находим такие две строки
$shopper_mail = vmMail( $from_email, $mosConfig_fromname, $shopper_email, $shopper_subject, $shopper_mail_Body, $shopper_mail_AltBody, true, null, null, $EmbeddedImages);
 
$vendor_mail = vmMail( $shopper_email, $shopper_name, $vendor_email, $vendor_subject, $vendor_mail_Body, $vendor_mail_AltBody, true, null, null, $EmbeddedImages);



Наверно стоит пояснить что тут происходит
В первой строке отправляется почта покупателю, а во второй строке почта отправляется продавцу, но при этом в качестве отправителя указывается почтовый ящик покупателя, но если он пустой, то письмо без отправителя не может отправиться.


Удаляем эти две строки и вместо них вставляем следующее содержимое


if (!$shopper_email)

{
$vendor_mail = vmMail( "robot@domain.ru", $shopper_name, $vendor_email, $vendor_subject, $vendor_mail_Body, $vendor_mail_AltBody, true, null, null, $EmbeddedImages);
}


else
{
$shopper_mail = vmMail( $from_email, $mosConfig_fromname, $shopper_email, $shopper_subject, $shopper_mail_Body, $shopper_mail_AltBody, true, null, null, $EmbeddedImages);


$vendor_mail = vmMail( $shopper_email, $shopper_name, $vendor_email, $vendor_subject, $vendor_mail_Body, $vendor_mail_AltBody, true, null, null, $EmbeddedImages);

}


Где robot@domain.ru - адрес, от которого будет отправляться уведомление админу

воскресенье, 19 сентября 2010 г.

Подкатегории + категории на главной странице VirtueMart

Появилась задача вывести на сайте на главной странице не просто главные категории
  • Посуда
  • Одежда
  • Электроника
Но и вложенные в них подкатегории, для ускорения навигации


*Посуда
  -Тарелки
  -Кружки
  -Стаканы

*Одежда
  -Брюки
  -Шапки

.....


Для этого пришлось малость перепилить VirtueMart

файл
/components/com_virtuemart/themes/default/templates/common/categoryChildlist.tpl.php



<?php if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
mm_showMyFileName(__FILE__);

$iCol = 1;
if( !isset( $categories_per_row )) {
    $categories_per_row = 4;
}
$cellwidth = intval( 100 / $categories_per_row );

if( empty( $categories )) {
    return; // Do nothing, if there are no child categories!
}
?>
<br/>
<table width="100%" cellspacing="0" cellpadding="0">




<?php



function category_l2 ($id_cat) {global  $sess; require_once( CLASSPATH . 'ps_product_category.php'); $ps_product_category = new ps_product_category();
$categories_l2 = $ps_product_category->get_child_list($id_cat);
foreach( $categories_l2 as $category2 ) {
echo "<a class=\"minicategory\"href=\"";
$sess->purl(URL."index.php?option=com_virtuemart&amp;page=shop.browse&amp;category_id=".$category2["category_id"]);
echo "\"> ".$category2["category_name"]."</a><br>";}}






foreach( $categories as $category ) {
    if ($iCol == 1) { // this is an indicator wether a row needs to be opened or not
        echo "<tr>\n";
    }
    ?>
   
   
    <td align="center" width="<?php echo $cellwidth ?>%" >
        <br />
         <a title="<?php echo $category["category_name"] ?>" href="<?php $sess->purl(URL."index.php?option=com_virtuemart&amp;page=shop.browse&amp;category_id=".$category["category_id"]) ?>">
            <?php
            if ( $category["category_thumb_image"] ) {
                echo ps_product::image_tag( $category["category_thumb_image"], "alt=\"".$category["category_name"]."\"", 0, "category");
                echo "<br /><br/>\n";
            }
            echo $category["category_name"];
            echo $category['number_of_products'];
           
            ?>
         </a><br/>
<?php category_l2 ($category["category_id"]);?>
    </td>
   
   
    <?php
    // Do we need to close the current row now?
    if ($iCol == $categories_per_row) { // If the number of products per row has been reached
        echo "</tr>\n";
        $iCol = 1;
    }
    else {
        $iCol++;
    }
}
// Do we need a final closing row tag?
if ($iCol != 1) {
    echo "</tr>\n";
}
?>
</table>





Теперь при выводе категорий на главной странице ниже в список будут выводиться подкатегории, класс для этих подкатегорий a.minicategory {}
В стилях прописываете для них оформление и готово