г. Владимир, пр. Ленина 15а, офис 413


8 (904) 259-97-29
(ватсапп, вайбер, телеграмм)

пн-пт: с 09.00-18.00
e-mail: info@pavelsonar.net

Друзья, потребовалось реализовать модуль для джумла + джумшоппинг, который дает возможность сортировки брендов по алфавиту. Модуль в приложении, выкладываю в помощь соискателям. Стили задать нужно самим, но часть уже могу выложить:

 

  1. .alphabrands-group {
  2. border-bottom: 1px solid #ddd;
  3. font-size: 16px;
  4. list-style-type: none;
  5. padding: 0px 20px;
  6. }
  7. .alphabrands-item {
  8. display: inline-block;
  9. line-height: 1.3em;
  10. }
  11. .alphabrands-item a {
  12. display: block;
  13. color: #444;
  14. font-weight: bold;
  15. text-transform: uppercase;
  16. font-size: 12px;
  17. margin: 0 2px;
  18. }
  19. .alphabrands-item a:hover {
  20. color:#da3434;
  21. text-decoration:none;
  22. }
  23. .alphabrands-group li:first-child a:first-letter {
  24. /*.alphabrands-item a.alphabrands-color:first-letter {*/
  25. color: #da3434;
  26. font-size:18px;
  27. }

качаем, говорим спасибо. Пример работы - Мирпультов.рф

скачать модуль (1.8 кб)

В файле

  1. /components/com_jshopping/lib/jtableauto.php
  2. ищем метод
  3. function getBuildQueryOrderListProduct($order, $orderby, &$adv_from){
  4. в нем строку
  5. $order_query = " ORDER BY ".$order;
  6. меняем(дополняем) на
  7. $order_query = " ORDER BY prod.product_quantity DESC, ".$order;

Недавно столкнулся с задачей печати почтовых бланков для джумшоппинг. Искал, гуглил, думал что лучше. В итоге потестировали с клиентом программу от https://pbrf.ru/ и http://beagler.ru . В итоге из-за определенных спецификаций нашей всеми любимой почты РФ пришлось искать другую альтернативу... и кстати более дешевую. Клиент посоветовал обратить внимание на "Купеческую книгу" (так как пользуется ей давно). Сама программа имеет возможность экспорта заказов через файл xml. Сам файл надо генерировать и сделано это было путем php и mySQL . Работа скрипта проста - запрос в базу - ответ в браузер. Сам скрипт прилагаю ниже:

 

  1. <?php
  2. $is_test = true;
  3. class export2XML {
  4.     private $_db;
  5.     private static $_dbhost = "localhost";
  6.     private static $_dbname = "Имя базы";
  7.     private static $_dbuser = "Имя пользователя";
  8.     private static $_dbpass = "Пароль";
  9.     private $_recordsLimit = 20;
  10.     private $prefix = 'префикс базы_';
  11.     private $countries_table = "jshopping_countries";
  12.     private $orders_table = "jshopping_orders";
  13.     private $ordered_products_table = "jshopping_order_item";
  14.     private $_is_test;
  15.     public function __construct($is_test = false) {
  16.         $this->_is_test = $is_test;
  17.         $this->_connect2DB();
  18.         $this->_showResult();
  19.     }
  20.     private function _connect2DB() {
  21.         $this->_setDBParams();
  22.         try {
  23.             $this->_db = new PDO('mysql:host=' . SELF::$_dbhost . ';dbname=' . SELF::$_dbname, SELF::$_dbuser, SELF::$_dbpass);
  24.         } catch (PDOException $e) {
  25.             print "Error!: " . $e->getMessage() . "<br/>";
  26.             die();
  27.         }
  28.     }
  29.     private function _setDBParams() {
  30.         $serverName = filter_input(INPUT_SERVER, 'SERVER_NAME');
  31.         if ($serverName == "vh73.spaceweb.ru") {
  32.             self::$_dbhost = "localhost";          
  33.             self::$_dbname = "kraspultru";
  34.             self::$_dbuser = "kraspultru";
  35.             self::$_dbpass = "29la7tw71";
  36.         }
  37.     }
  38.     private function _query($sql, $wheres = []) {
  39.         $sth = $this->_db->prepare($sql, [PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY]);
  40.         $sth->execute($execParams);
  41.         return $sth->fetchAll(PDO::FETCH_CLASS);
  42.     }
  43.     private function _select($table, $wheres = []) {
  44.         $sql = 'SELECT * FROM ' . $this->prefix . $table;
  45.         $where = '';
  46.         $execParams = [];
  47.         foreach ($wheres as $key => $value) {
  48.             $where .= $key . ' = :' . $key . ' ';
  49.             $execParams[':' . $key] = $value;
  50.         }
  51.         if (!empty($where)) {
  52.             $sql .= ' WHERE ' . trim($where);
  53.         }            
  54.         $sth = $this->_db->prepare($sql, [PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY]);
  55.         $sth->execute($execParams);
  56.         return $sth->fetchAll(PDO::FETCH_CLASS);
  57.     }
  58.     private function _getOrders() {
  59.         $sql =
  60.             'SELECT `ot`.*, `ct`.`name_ru-RU` as country_name FROM ' . $this->prefix . $this->orders_table . ' ot ' .
  61.                 'JOIN ' . $this->prefix . $this->countries_table . ' ct ON ct.country_id = ot.country ' .
  62.                 'WHERE `order_status` = 1';
  63.         if ($this->_is_test) {
  64.             $sql =
  65.             'SELECT * FROM (' .
  66.                 $sql . ' ORDER BY ot.order_id DESC LIMIT ' . $this->_recordsLimit .
  67.             ') sub ' .
  68.             'ORDER BY sub.order_id ASC';
  69.         }
  70.         $sth = $this->_db->prepare($sql, [PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY]);
  71.         $sth->execute();
  72.         return $sth->fetchAll(PDO::FETCH_CLASS);
  73.      }
  74.     private function _escSpec($str) {
  75.         $rData = [
  76.             '&' => '&amp;',
  77.             '<' => '&lt;',
  78.             '>' => '&gt;',
  79.             '"' => '&quot;',
  80.             "'" =>'&apos;'
  81.         ];
  82.         return str_ireplace(array_keys($rData), array_values($rData), trim($str));
  83.     }
  84.     private function _showResult() {
  85.         header('Content-Type: text/xml');
  86.         $result =
  87.             '<?xml version="1.0" encoding="WINDOWS-1251"?>' . "\n" .
  88.                 '<xml_orders date="' . date("Y-m-d H:i") . '">' . "\n";
  89.         $orders = $this->_getOrders();
  90.         foreach ($orders as $row) {
  91.             $customer_name = trim($this->_escSpec($row->l_name). ' ' . $this->_escSpec($row->f_name). ' ' .$this->_escSpec($row->m_name));
  92.             $result .=
  93.                 '<order>' . "\n" .
  94.                     '<order_id>' . $this->_escSpec($row->order_id) . '</order_id>'. "\n" .
  95.                     '<order_date>' . $this->_escSpec($row->order_date) . '</order_date>' . "\n" .
  96.                     '<order_amount>' . $this->_escSpec($row->order_total) . '</order_amount>' . "\n" .
  97.                     '<customer_name>' . $customer_name . '</customer_name>' . "\n" .
  98.                     '<customer_email>' . $this->_escSpec($row->email) . '</customer_email>' . "\n" .
  99.                     '<customer_country>' . $this->_escSpec($row->country_name) . '</customer_country>' . "\n" .
  100.                     '<customer_region>' . $this->_escSpec($row->state) . '</customer_region>' ."\n" .
  101.                     '<customer_postalcode>' . $this->_escSpec($row->zip) . '</customer_postalcode>' . "\n" .
  102.                     '<customer_city>' . $this->_escSpec($row->city) . '</customer_city>'. "\n" .
  103. '<customer_address>ул. ' . $this->_escSpec($row->street) . ', д. ' . $this->_escSpec($row->home) . ', кв. ' . $this->_escSpec($row->apartment) . '</customer_address>' . "\n" .
  104.                     '<delivery_cost>' . $this->_escSpec($row->order_shipping) . '</delivery_cost>' . "\n" .
  105.                         '<products>' . "\n";
  106.             $products = $this->_select($this->ordered_products_table, ['order_id' => $this->_escSpec($row->order_id)]);
  107.             foreach ($products as $product) {
  108.                 $result .=
  109.                     '<product>' . "\n" .
  110.                         '<code>' . $this->_escSpec($product->order_item_id) . '</code>' . "\n" .
  111.                         '<name>' . $this->_escSpec($product->product_name) . '</name>' . "\n" .
  112.                         '<cost>' . $this->_escSpec($product->product_item_price) . '</cost>' . "\n" .
  113.                         '<count>' . $this->_escSpec($product->product_quantity) . '</count>' . "\n" .
  114.                     '</product>' . "\n";
  115.             }   
  116.             $result .= '</products>' . "\n" .
  117.                     '</order>' . "\n";
  118.         }
  119.         echo $result .= '</xml_orders>' . "\n";
  120.     }
  121.     private function dump($data, $leave = 0) {
  122.         echo '<pre>';
  123.         var_dump($data);
  124.         echo '</pre>';
  125.         if (!$leave) die;
  126.     }
  127. }
  128. new export2XML($is_test);?>

 

 

шаблон добавить Код

  1. <?php
  2. $wish = JRoute::_('index.php?option=com_jshopping&controller=cart&task=add&to=wishlist&category_id=' .$product->category_id. '&product_id=' .$product->product_id. '');
  3. ?>
  4. <a href="/main/<?php print $wish?>"><?php print _JSHOP_ADD_TO_WISHLIST?></a>

 

 

Столкнулся с задачей вставить баннер в товар джумшоппинг. Ну и решил конечно же использовать модуль джумла html, чтобы управлять сие делом через админку.
Создаем новую позицию в шаблоне джумла и затем

  1. <?php $modules = JModuleHelper::getModules('Указать позицию модулей');
  2. if ($modules && is_array($modules)) {
  3. foreach ($modules as $module) {
  4. //выводит заголовок модуля независимо от настроек в админке
  5. echo $module->title;
  6. //непосредственно контент модуля
  7. echo JModuleHelper::renderModule($module);
  8. };
  9. } ?>

Я вставил данный код в файл product_default.php в нужное мне место.
Работает =)
Joomshopping 4.10.4
Joomla 3.4.3

 

Для удаления товаров массово с сайта джумла + джумшоппинг

введите SQL запрос

  • DELETE FROM суффикс_jshopping_products WHERE 1

Иногда требуется, чтобы в браузере нельзя было просмотреть путь картинки, следовательно не увидеть директории в которых она расположена. Для чего это делается? В первую очередь, это защита вашего сайта и информации. Во-вторых, это опять же недоступность к получению других файлов сервера.

Что нужно для кодирования? Перейти на сайт http://base64-image.ru/ и следовать инструкциям добавления файла.

Здравствуйте. Вариантов как узнать путь к папкам tmp и logs джумла несколько. Первый пример - вставка кода в исполняемый файл шаблона, он же index.php

  1. <?php echo phpinfo() ?>

в любое место, но желательно скажем или в начале или в конце файла.

Второй пример: - создать файл скажем info.php и в нем указать ту же самую команду, что приведена выше. Далее заливаем данный файл в корень сайта и переходим по пути имясайта.ru/info.php

находим ROOT (можно поиском, например F3 в Хроме) и смотрим путь к директориям!

Приветствую. Практически на всех современных сайтах присутствует кнопка наверх!

Реализовать для своего сайта не сложно, используя js и стили css. Код представлен ниже.

Добавляем в самый низ, исполняемого файла шаблона (index.php) скрипт:

  1. <script type="text/javascript">
  2. jQuery(document).ready(function(){
  3. jQuery(window).scroll(function () {
  4. if (jQuery(this).scrollTop() > 100) jQuery('a#scroll_up').fadeIn();
  5. else jQuery('a#scroll_up').fadeOut(400);
  6. });
  7. jQuery('a#scroll_up').click(function () {
  8. jQuery('body,html').animate({
  9. scrollTop: 0
  10. }, 800);
  11. return false;
  12. });
  13. });
  14. </script>
  15. <a id="scroll_up" href="#">Вверх</a>

А в файл CSS шаблона вставляем код, которые и отражает вид и положение кнопки:

  1. a#scroll_up {
  2. position: fixed;
  3. top: 95%;
  4. right: 40px;
  5. display: none;
  6. width: 90px;
  7. height: 21px;
  8. text-align: center;
  9. font: 12px Verdana;
  10. text-decoration: none;
  11. color: #fff;
  12. background: #3b9cc9;
  13. padding-top: 5px;
  14. opacity: 0.9;
  15. filter: alpha(opacity=90);
  16. }

Пользуемся, смотрим, редактируем, говорим спасибо!

 

Рекомендую сервис для создания вида блоков вашего сайта - CSS3 Box Shadow Generator

На данном сайте вы сможете сгенерировать блок с тенью, градиентом, с тенью текста и радиусом блока. Пользуюсь давно, проблем не заметил.

 

Рекомендую отличный хостинг