Новости Joomla

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором...

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором...

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором представлены новости, интервью, рецензии и есть небольшой магазин на JoomShopping. Возникла необходимость внутри Joomla статей вставлять упоминание релиза и кнопочку «добавить в корзину». Я взял плагин WT JShopping products anywhere Сергея Толкачева (@webtolkru). Плагин отображает название товара и ссылку. При помощи напильника, ИИ и навыков вёрстки появился Uikit макет для шаблонов на базе Yootheme Pro.Учитываается мобильная версия - телефоны и ipad.Кнопка добавления в корзину работает по Ajax и появляется всплывающее окно (Notification Bar от Uikit) с информацией.Пока это базовый вариант, требующий доведения до лоска, однако он уже работает и его можно применять на проектах.Взять макет можно здесь.А плагин вставки товаров в материалы можно забрать здесь.Приветствуется доведение до ума и оформление в виде PR.

WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla

WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla

👩‍💻 WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla.Пакет плагинов галереи изображений и видео для вставки в материалы и модули Joomla, а так же везде, где работают плагины группы content. Поддержка собственных макетов вывода для галерей. Смешанные фото+видео галереи. Плагин создан как замена Simple Image Gallery и поддерживает синтаксис {gallery}{/gallery}.👩‍💻 v.1.2.3. Что нового?- Обработка вступительного и полного текста для материалов Joomla. Добавлена обработка шорткодов в полном и вступительном текстах материалов Joomla.- Системные требования. Повышены минимальные требования до Joomla 5 и PHP 8.1.- Мелкие правки. Исправлена ошибка работы макета по умолчанию в плагине контента.- Joomla 6. Пакет плагинов успешно протестирован на Joomla 6.Страница расширения.GitHub расширенияJoomla Extensions Directory@joomlafeed#joomla #расширения

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

сергей_Ш

  • Захожу иногда
  • 187
  • 1 / 0
Подскажите как поправить навигацию по страничкам virtuemart
есть категория с 100 товарами
заходиш на страничку - по умолчанию показывает например 10 товаров (из 100) т.е по идее всего быть должно 10 страниц. жму стр 2 - почему то показывает уже не по 10 товаров на страничке а по 25. жму стр 3 - показывает например по 15 уже..
в ОРИГИНАЛЬНОМ файле administrator/components/com_virtuemart/classes/pageNavigation.class.php
Код
<?php
if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
/**
 *
 * @version $Id: pageNavigation.class.php 1526 2008-09-15 19:21:43Z soeren_nb $
 * @package VirtueMart
 * @subpackage classes
 * @copyright Copyright (C) 2004-2008 soeren - All rights reserved.
 * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
 * VirtueMart is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 * See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details.
 *
 * http://virtuemart.net
 */

/**
 * Page navigation support class
 * @package VirtueMart
 */
class vmPageNav {
  /** @var int The record number to start dislpaying from */
  var $limitstart = null;
  /** @var int Number of rows to display per page */
  var $limit = null;
  /** @var int Total number of rows */
  var $total = null;

  function vmPageNav( $total, $limitstart, $limit ) {
    $this->total = intval( $total );
    $this->limitstart = max( $limitstart, 0 );
    $this->limit = max( $limit, 1 );
    if ($this->limit > $this->total) {
      $this->limitstart = 0;
    }
    if (($this->limit-1)*$this->limitstart > $this->total) {
      $this->limitstart -= $this->limitstart % $this->limit;
    }
  }
  /**
   * Writes the HTML limit # input box
   * Modified by shumisha to handle SEF URLs 2008-06-28
   */
  function writeLimitBox ( $link = '') {
    echo $this->getLimitBox( $link);
  }
  /**
   * Modified by shumisha to handle SEF URLs 2008-06-28
   * @return string The HTML for the limit # input box
   */
  function getLimitBox ( $link = '') {
    $limits = array();

    if (!empty($link) && strpos( 'limitstart=', $link) === false) {  // insert limitstart in url if missing // shumisha
      $link .= '&limitstart='.$this->limitstart;
    }
    for ($i=5; $i <= 30; $i+=5) {
      if (empty( $link)) {
        $limits[$i] = $i;
      } else {
        $limits[vmRoute($link.'&limit='.$i)] = $i;
      }
    }
    if (empty( $link)) {
      $limits[50] = 50;
    } else {
      $limits[vmRoute($link.'&limit=50')] = 50;
    }

    // build the HTML select list
    if (empty( $link)) {
    $html = ps_html::selectList( 'limit', $this->limit, $limits, 1, '',  'onchange="this.form.submit();"' );
    } else {
      $current = vmRoute($link.'&limit='.$this->limit);
      $html = ps_html::selectList( 'limit', $current, $limits, 1, '',  'onchange="location.href=this.value"' );
    }
    $html .= "\n<input type=\"hidden\" name=\"limitstart\" value=\"$this->limitstart\" />";
    return $html;
  }

  function writePagesCounter() {
    echo $this->getPagesCounter();
  }
  /**
   * @return string The HTML for the pages counter, eg, Results 1-10 of x
   */
  function getPagesCounter() {
    $html = '';
    $from_result = $this->limitstart+1;
    if ($this->limitstart + $this->limit < $this->total) {
      $to_result = $this->limitstart + $this->limit;
    } else {
      $to_result = $this->total;
    }
    if ($this->total > 0) {
      $html .= $GLOBALS['VM_LANG']->_('PN_RESULTS')." $from_result - $to_result ".$GLOBALS['VM_LANG']->_('PN_OF')." $this->total";
    } else {
      //$html .= "\nNo records found.";
    }
    return $html;
  }
  /**
   * Writes the HTML for the pages counter, eg, Results 1-10 of x
   */
  function writePagesLinks($link='') {
    echo $this->getPagesLinks($link);
  }
  /**
   * @return string The HTML links for pages, eg, previous, next, 1 2 3 ... x
   */
  function getPagesLinks($link='') {
    global $VM_LANG;
    
    $displayed_pages = 10;
    $total_pages = ceil( $this->total / $this->limit );
    $this_page = ceil( ($this->limitstart+1) / $this->limit );
    $start_loop = (floor(($this_page-1)/$displayed_pages))*$displayed_pages+1;
    if ($start_loop + $displayed_pages - 1 < $total_pages) {
      $stop_loop = $start_loop + $displayed_pages - 1;
    } else {
      $stop_loop = $total_pages;
    }
    $html = '<ul class="pagination">';
    if ($this_page > 1) {
      $page = ($this_page - 2) * $this->limit;
      if( $link != '') {
        $html .= "\n<li><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart=0')."\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_START')."\">&laquo;&laquo; ".$VM_LANG->_('PN_START')."</a></li>";
        $html .= "\n<li><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart='.$page)."\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_PREVIOUS')."\">&laquo; ".$VM_LANG->_('PN_PREVIOUS')."</a></li>";
      } else {
        $html .= "\n<li><a href=\"#beg\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_START')."\" onclick=\"javascript: document.adminForm.limitstart.value=0; document.adminForm.submit();return false;\">&laquo;&laquo; ".$VM_LANG->_('PN_START')."</a></li>";
        $html .= "\n<li><a href=\"#prev\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_PREVIOUS')."\" onclick=\"javascript: document.adminForm.limitstart.value=$page; document.adminForm.submit();return false;\">&laquo; ".$VM_LANG->_('PN_PREVIOUS')."</a></li>";
      }
    } else {
      $html .= "\n<li><span class=\"pagenav\">&laquo;&laquo; ".$VM_LANG->_('PN_START')."</span></li>";
      $html .= "\n<li><span class=\"pagenav\">&laquo; ".$VM_LANG->_('PN_PREVIOUS')."</span></li>";
    }

    for ($i=$start_loop; $i <= $stop_loop; $i++) {
      $page = ($i - 1) * $this->limit;
      if ($i == $this_page) {
        $html .= "\n<li><span class=\"pagenav\"> $i </span></li>";
      } else {
        if( $link != '') {
          $html .= "\n<li><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart='.$page)."\" class=\"pagenav\"><strong>$i</strong></a></li>";
        } else {
          $html .= "\n<li><a href=\"#$i\" class=\"pagenav\" onclick=\"javascript: document.adminForm.limitstart.value=$page; document.adminForm.submit();return false;\"><strong>$i</strong></a></li>";
        }
      }
    }

    if ($this_page < $total_pages) {
      $page = $this_page * $this->limit;
      $end_page = ($total_pages-1) * $this->limit;
      if( $link != '') {
        $html .= "\n<li><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart='.$page)."\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_NEXT')."\"> ".$VM_LANG->_('PN_NEXT')." &raquo;</a></li>";
        $html .= "\n<li><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart='.$end_page)."\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_END')."\"> ".$VM_LANG->_('PN_END')." &raquo;&raquo;</a></li>";
      } else {
        $html .= "\n<li><a href=\"#next\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_NEXT')."\" onclick=\"javascript: document.adminForm.limitstart.value=$page; document.adminForm.submit();return false;\"> ".$VM_LANG->_('PN_NEXT')." &raquo;</a></li>";
        $html .= "\n<li><a href=\"#end\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_END')."\" onclick=\"javascript: document.adminForm.limitstart.value=$end_page; document.adminForm.submit();return false;\"> ".$VM_LANG->_('PN_END')." &raquo;&raquo;</a></li>";
      }
    } else {
      $html .= "\n<li><span class=\"pagenav\">".$VM_LANG->_('PN_NEXT')." &raquo;</span></li>";
      $html .= "\n<li><span class=\"pagenav\">".$VM_LANG->_('PN_END')." &raquo;&raquo;</span></li>";
    }
    $html .= "\n</ul>";
    return $html;
  }

  function getListFooter() {
    $html = '<table class="adminlist">';
    if( $this->total > $this->limit || $this->limitstart > 0) {

      $html .= '<tr><th colspan="3">';

      $html .= $this->getPagesLinks();
      $html .= '</th></tr>';
    }
    $html .= '<tr><td nowrap="nowrap" width="48%" align="right">'.$GLOBALS['VM_LANG']->_('PN_DISPLAY_NR').'</td>';
    $html .= '<td>' .$this->getLimitBox(). '</td>';
    $html .= '<td nowrap="nowrap" width="48%" align="left">' . $this->getPagesCounter(). '</td>';
    $html .= '</tr></table>';
   return $html;
  }
  /**
   * @param int The row index
   * @return int
   */
  function rowNumber( $i ) {
    return $i + 1 + $this->limitstart;
  }
  /**
   * @param int The row index
   * @param string The task to fire
   * @param string The alt text for the icon
   * @return string
   */
  function orderUpIcon( $i, $condition=true, $task='orderup', $alt='', $page, $func ) {
    global $mosConfig_live_site, $VM_LANG;
    if( $alt == '') {
      $alt = $VM_LANG->_('CMN_ORDER_UP');
    }
    if (($i > 0 || ($i+$this->limitstart > 0)) && $condition) {
      return '<a href="#reorder" onclick="return vm_listItemTask(\'cb'.$i.'\',\''.$task.'\', \'adminForm\', \''.$page.'\', \''.$func.'\')" title="'.$alt.'">
<img src="'.$mosConfig_live_site.'/administrator/images/uparrow.png" width="12" height="12" border="0" alt="'.$alt.'" />
</a>';
   } else {
    return '&nbsp;';
   }
  }
  /**
   * @param int The row index
   * @param int The number of items in the list
   * @param string The task to fire
   * @param string The alt text for the icon
   * @return string
   */
  function orderDownIcon( $i, $n, $condition=true, $task='orderdown', $alt='', $page, $func ) {
    global $mosConfig_live_site, $VM_LANG;
    if( $alt == '') {
      $alt = $VM_LANG->_('CMN_ORDER_DOWN');
    }
    if (($i < $n-1 || $i+$this->limitstart < $this->total-1) && $condition) {
      return '<a href="#reorder" onclick="return vm_listItemTask(\'cb'.$i.'\',\''.$task.'\', \'adminForm\', \''.$page.'\', \''.$func.'\')" title="'.$alt.'">
<img src="'.$mosConfig_live_site.'/administrator/images/downarrow.png" width="12" height="12" border="0" alt="'.$alt.'" />
</a>';
   } else {
    return '&nbsp;';
   }
  }
}
?>

изменил это
Код
if (!empty($link) && strpos( 'limitstart=', $link) === false) {  // insert limitstart in url if missing // shumisha
      $link .= '&limitstart='.$this->limitstart;
    }
    for ($i=5; $i <= 30; $i+=5) {
      if (empty( $link)) {
        $limits[$i] = $i;
      } else {
        $limits[vmRoute($link.'&limit='.$i)] = $i;
      }
    }
    if (empty( $link)) {
      $limits[50] = 50;
    } else {
      $limits[vmRoute($link.'&limit=50')] = 50;
    }



на это
Код
 if (!empty($link) && strpos( 'limitstart=', $link) === false) {  // insert limitstart in url if missing // shumisha
      $link .= '&limitstart='.$this->limitstart;
    }
    for ($i=10; $i <= 10; $i+=10) {
      if (empty( $link)) {
        $limits[$i] = $i;
      } else {
        $limits[vmRoute($link.'&limit='.$i)] = $i;
      }
    }
    if (empty( $link)) {
      $limits[10] = 10;
    } else {
      $limits[vmRoute($link.'&limit=10')] = 10;
    }


а навигация так и живет своей отдельной жизнью))
помогите пожалуйста разобраться в чем причина.
joomla 1.5.21 виртмарт 1.1.4 а так же стоит sh404SEF 1.5.4.302
сайт mirsveta.net

в итоге нужно чтобы показывало всегда по 10 товаров на каждой странице любой категории магазина и не было выбора типа показывать по 5,15,50 и т.п

ОЧЕНЬ НУЖНО ЭТО РЕШЕНИЕ. помогите пожалуйста !  !  !

п.с щас погонял странички и вот такое наблюдение: иногда заходиш в категорию и все показывается правильно.. заходиш в другую категорию - там траблы. возвращаешся назад в категорию в кторой только что все ок было - и там траблы... и еще бывает нажимаеш на категорию - и попадаеш не на первую страницу категории а например на третью..
« Последнее редактирование: 28.10.2010, 21:32:44 от сергей_Ш »
*

valagoff

  • Давно я тут
  • 984
  • 110 / 0
Re: навигация живет своей жизнью )
« Ответ #1 : 28.10.2010, 21:33:56 »
Скорее всего дело в SEF, попробуй отключить.
Работает? Значит надо правильно настроить sef
*

сергей_Ш

  • Захожу иногда
  • 187
  • 1 / 0
Re: навигация живет своей жизнью )
« Ответ #2 : 24.11.2010, 18:13:43 »
SEF пришлось отключить - глюки остались. в чем проблема?
*

SorokinS

  • Захожу иногда
  • 165
  • 12 / 1
Re: навигация живет своей жизнью )
« Ответ #3 : 21.06.2011, 12:54:16 »
Такая же штука. Думал дело в том, что Показывать 5 10 15 30.... а товаров в строку 2, сделал 6, 12, 24... не помогло. Даже "граничные" товары пропадают иногда... те что между страницами...
*

site-optimizator

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: навигация живет своей жизнью )
« Ответ #4 : 23.06.2011, 20:07:31 »
Похожая беда с VirtueMart:
 в одной из категорий первые 18 позиций (вложенные категории) на сайте отображаются корректно, активными ссылками, по которым можно выйти на сам товар.
А все последующие - просто списком, т.е. неактивными ссылками.
При создании нового товара, если я его отношу в одну из "активных" категорий - его там можно найти. А если в одну из "неактивных" категорий - естественно, на него не выйти.
Так же задал вопрос тут:
http://joomlaforum.ru/index.php/topic,165557.msg893591.html#msg893591
А в ответ - тишина...
По другим CMS, прямо скажем, форумы как-то информативнее...и "старшие товарищи" как-то подобрее к новичкам...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

breadcrumb навигация по сайту

Автор petia

Ответов: 2
Просмотров: 2031
Последний ответ 21.07.2015, 05:43:19
от schneige
Проблема. После перехода на php 1.5.3 не работает навигация

Автор eu4ria

Ответов: 1
Просмотров: 2082
Последний ответ 21.11.2012, 02:40:15
от eu4ria
не работает навигация по страницам

Автор Akksimo

Ответов: 1
Просмотров: 2297
Последний ответ 07.07.2012, 16:23:28
от Akksimo
Постраничная навигация

Автор windin

Ответов: 1
Просмотров: 1569
Последний ответ 14.04.2012, 17:49:41
от hawk1
Срок действия статьи живет своей жизнью

Автор notarget

Ответов: 1
Просмотров: 1361
Последний ответ 07.12.2011, 15:04:25
от notarget