Хак Virtuemart и хаки

Вот мой com_virtuemart. В том что он модифицированный сомнений нет, т.к. шаблон куплен у templatemonster, но кроме этого особых проблем не было
Я так понимаю, в вашем случае этот код переместить в самый низ, после всего что есть в \com_virtuemart\views\category\tmpl\default.php
<?php if ($this->category->category_description) { ?>
<div class="category_description">
<?php $start = JRequest::getInt('limitstart',0); $option = JRequest::getVar('option',''); If (!$start && $option == 'com_virtuemart'){ ?>
<?php echo $this->category->category_description ; ?>
<?php } ?>
</div>
<?php } ?>
 
Virtuemart 2.0.x – в форму «Уведомить меня» добавить новое поле

По VM1 можно найти информацию о том, как добавить новые поля в форму «Уведомить меня», а вот для VM2 ничего не нашел. Возможно плохо искал....
И попробовал решить эту задачку - как добавить новое поле для ввода “Контактный телефон” в форму «Уведомить меня», чтобы иметь возможность связаться с потенциальным покупателем по телефону.
Просьба сильно не пинать и помочь закончить.
Итак

1) В таблицу БД ххххх_virtuemart_waitingusers добавил новое поле notify_phone
(я создал такое поле: тип –char, значение – 15, по умолчанию –NULL, Сравнение utf8_general_ci, Null – ok)
Прим. : ххххх – префикс Вашей таблицы БД


2) Открываем файл /administrator/components/com_virtuemart/tables/waitingusers.php
и после
PHP:
var $notify_email        = '';
вставляем
PHP:
var $notify_phone      = '';

3) Открываем файл /components/com_virtuemart/views/productdetails/tmpl/notify.php и вместо кода
PHP:
<span class="floatleft"><input type="text" name="notify_email" value="<?php echo $this->user->email; ?>" /></span>
вставляем например такой
PHP:
<span class="floatleft">Контактный телефон:&nbsp;<input type="tel" name="notify_phone" value="" /><br />
(Пример ввода - 099-777-77-77) <br />
Контактный E-mail:&nbsp;<input type="text" name="notify_email" value="<?php echo $this->user->email; ?>" /></span><br />
Т.е. заменяем первоначальную форму:
Посмотреть вложение 44636
На
Посмотреть вложение 44637
Можно еще поиграться со стилем, чтобы довести до приемлемого вида
(отложил на потом)

4) Открываем файл /administrator/components/com_virtuemart/views/product/tmpl/product_edit_customer.php и :
После строки 117
PHP:
<th class="title"><?php echo JText::_ ('COM_VIRTUEMART_EMAIL');?></th>
вставляем
PHP:
<th class="title"><?php echo 'Телефон';?></th>
вместо кода - строка 127-131
PHP:
$row = '<tr class="row'.$i.'"><td></td><td></td><td><a href="mailto:' .  $wait->notify_email . '">' .
$wait->notify_email . '</a></td></tr>';
}
else {
    $row = '<tr class="row'.$i.'"><td>' . $wait->name . '</td><td>' . $wait->username . '</td><td>' . '<a href="mailto:' . $wait->notify_email . '">' . $wait->notify_email . '</a>' . '</td></tr>';
вставляем
PHP:
$row = '<tr class="row'.$i.'"><td></td><td></td><td><a href="mailto:' . $wait->notify_email . '">' .
$wait->notify_email . '</a></td><td>' . $wait->notify_phone . '</td></tr>';
}
else {
    $row = '<tr class="row'.$i.'"><td>' . $wait->name . '</td><td>' . $wait->username . '</td><td>' . '<a href="mailto:' . $wait->notify_email . '">' . $wait->notify_email . '</a>' . '</td><td>' . $wait->notify_phone . '</td></tr>';
вместо кода - строка206 - 209
PHP:
$html += '<tr><td></td><td></td><td><a href="mailto:' + val.notify_email + '">' + val.notify_email + '</a></td></tr>';
}
else {
    $html += '<tr><td>' + val.name + '</td><td>' + val.username + '</td><td><a href="mailto:' + val.notify_email + '">' + val.notify_email + '</a></td></tr>';
вставляем
PHP:
$html += '<tr><td></td><td></td><td><a href="mailto:' + val.notify_email + '">' + val.notify_email + '</a></td><td>' + val.notify_phone + '</td></tr>';
}
else {
    $html += '<tr><td>' + val.name + '</td><td>' + val.username + '</td><td><a href="mailto:' + val.notify_email + '">' + val.notify_email + '</a></td><td>' + val.notify_phone + '</td></tr>';
Т.е. заменяем первоначальную форму:
Посмотреть вложение 44638
На
Посмотреть вложение 44639
Файл notify.php скопировал в папку html/com_virtuemart/productdetails/ шаблона - для защиты изменений.

Возникло несколько вопросов:
1) Как правильно прописать простую проверку на валидность ввода № телефона?
2) Как защитить внесенные изменения в файлы админки waitingusers.php и product_edit_customer.php (переопределить) от возможных будущих обновлений?
Спасибо классных хак. Внедрил все работает.

Для повышения безопасности можно в input добавить maxlength="" со значением, оградит от большого объема вводного текста

Скажите кто знает как настроить уведомление автоматически?
 
Последнее редактирование:
Подскажите, как в Virtuemart 3 можно сделать описание товара в блоге категории побольше, знаков 150-200. Сейчас в описании показывает знаков 50. Еще заметил, что артикл не показывается в товарах.
 
Хак для описания категорий в VM2 (чтоб работал спойлер - "плагин LVSpolier")
Пример вывода описания категорий в default.php
Код:
<?php // Верхнее описание категорий
$start = JRequest::getInt('limitstart',0);  $option = JRequest::getVar('option',''); If (!$start && $option == 'com_virtuemart'){ ?> <div style="width:100%;float:left;"> <?php echo JHTML::_('content.prepare',$this->category->category_description_up); ?> </div> <?php } ?>
</div>
Суть: Вывод категорий
Код:
<?php echo $this->category->category_description_up;?>
Заменить на
Код:
<?php echo JHTML::_('content.prepare',$this->category->category_description_up); ?>
Данный хак будет подключать внешние плагины компонента Joomla
 
В Virtuemart 3 не могу создать меню "Макет категорий", не выбираются категории, а ведь категории существуют. Помогите в чем может быть проблема. Нужно создать, что бы xmap вывел карту всех товаров.
Скриншот: Для просмотра ссылки Войди или Зарегистрируйся
 
выбери тип меню "Категория", в пункте "выберите категорию" поставь "верхний уровень"
 
Подскажите, как в Virtuemart 3 можно сделать описание товара в блоге категории побольше, знаков 150-200. Сейчас в описании показывает знаков 50. Еще заметил, что артикл не показывается в товарах.

Код:
<?php if (!empty($product->product_s_desc)) {
    echo shopFunctionsF::limitStringByWord ($product->product_s_desc, 200) ?>
           <?php } ?>

цифра 200 отвечает за количество знаков в кратком описании
править /components/com_virtuemart/sublayouts/product.php

вывод артикула - добавить там же
Код:
<?php echo $product->product_sku ; ?>
 
Не подскажите, как сделать сортировку не "+/-", а "от дешевых к дорогим" и "от дорогих к дешевым"? Virtuemart 2.
 
Не подскажите, как сделать сортировку не "+/-", а "от дешевых к дорогим" и "от дорогих к дешевым"? Virtuemart 2.
Организовать проверку
Код:
  if (JRequest::getVar ('orderby', VmConfig::get ('browse_orderby_field'))=="product_price") {
      if (JRequest::getWord ('dir', VmConfig::get ('prd_brws_orderby_dir'))=='ASC') {
          echo "От дешевых к дорогим";
      } else {
          echo "От дорогих к дешевым";
      }
  }
 
Организовать проверку
Код:
  if (JRequest::getVar ('orderby', VmConfig::get ('browse_orderby_field'))=="product_price") {
      if (JRequest::getWord ('dir', VmConfig::get ('prd_brws_orderby_dir'))=='ASC') {
          echo "От дешевых к дорогим";
      } else {
          echo "От дорогих к дешевым";
      }
  }
а не подскажите куда именно это надо вставить?
 
Назад
Сверху