Перейти к содержанию
iPartizan

Категории, поставить на плагин accordion jQuery [Решено]

Рекомендуемые сообщения

Хочу сделать меню категорий на плагине аккордион для jQuery, с самим яваскриптом я разобрался, а вот с php проблемы.

Нужно получить переменные:

-Название категории

-Ссылка на категорию

-Название подкатегории

-Ссылка на подкатегорию

При этом:

-Если в категории есть подкатегории то ссылка на категорию должна заменятся на #

-Если в категории нет подкатегорий то она должна быть ссылкой

Как я понял в части controller за построение меню отвечает вот этот кусок кода

	protected function getCategories($parent_id, $current_path = '') {		$category_id = array_shift($this->path);				$output = '';				$results = $this->model_catalog_category->getCategories($parent_id);				if ($results) { 			$output .= '[list]';    	}				foreach ($results as $result) {				if (!$current_path) {				$new_path = $result['category_id'];			} else {				$new_path = $current_path . '_' . $result['category_id'];			}						$output .= '[*]';						$children = '';						if ($category_id == $result['category_id']) {				$children = $this->getCategories($result['category_id'], $new_path);			}						if ($this->category_id == $result['category_id']) {				$output .= '<a href="' . $this->model_tool_seo_url->rewrite($this->url->http('product/category&path=' . $new_path))  . '">[b]' . $result['name'] . '[/b]</a>';			} else {				$output .= '<a href="' . $this->model_tool_seo_url->rewrite($this->url->http('product/category&path=' . $new_path))  . '">' . $result['name'] . '</a>';			}			        	$output .= $children;                	$output .= ''; 		} 		if ($results) {			$output .= '[/list]';		}				return $output;	}

Если у кого есть какие мысли, буду рад любому совету =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ничего посоветовать не могу. Просто заинтересовался темой.

Как я понимаю это похоже на то, что организовано вот в этой темке EUOC00001 для opencart (там что-то похожее сделано для правой колонки где производители, корзина и тд)

http://www.opencart.com/index.php?route ... nload_id=2

Очень красивая штука. Жалко только что на IE не пашет (я про тему).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо! Это было как раз то что нужно! Взял оттуда файл catalogcontrollermodulecategory.php немного поправил под свой плагин для jQuery и всё заработало )

Может кому пригодится - файл catalogcontrollermodulecategory.php

<?php  class ControllerModuleCategory extends Controller {	protected $category_id = 0;	protected $path = array();		protected function index() {		$this->language->load('module/category');		    	$this->data['heading_title'] = $this->language->get('heading_title');				$this->load->model('catalog/category');		$this->load->model('tool/seo_url');				if (isset($this->request->get['path'])) {			$this->path = explode('_', $this->request->get['path']);						$this->category_id = end($this->path);		}				$this->data['category'] = $this->getCategories(0);														$this->id = 'category';		if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/category.tpl')) {			$this->template = $this->config->get('config_template') . '/template/module/category.tpl';		} else {			$this->template = 'default/template/module/category.tpl';		}				$this->render();  	}		protected function getCategories($parent_id, $current_path = '') {		$category_id = array_shift($this->path);				$output = '';				$results = $this->model_catalog_category->getCategories($parent_id);				if ($results) { 			// Оригинальная строчка $output .= '[list]';			$output .= ($current_path == '') ? '<ul class="menu collapsible">' : '<ul class="acitem">';    	}				foreach ($results as $result) {				if (!$current_path) {				$new_path = $result['category_id'];			} else {				$new_path = $current_path . '_' . $result['category_id'];			}						$output .= '[*]';						$children = '';									// Добавил 			$children = $this->getCategories($result['category_id'], $new_path);			if ($this->category_id == $result['category_id']) {				$output .= '[url="#"]' . $result['name'] . '[/url]';			} else {				$output .= '<a href="' . $this->model_tool_seo_url->rewrite(HTTP_SERVER . 'index.php?route=product/category&path=' . $new_path)  . '">' . $result['name'] . '</a>';			}			// Конец						$output .= $children;        				        	$output .= ''; 		} 		if ($results) {			$output .= '[/list]';		}				return $output;	}		}?>
Изменено пользователем afwollis
edit -> save

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А сам плагин получить можно? Или хотя бы описание чего там надобно в яве корректировать.Уж больно мне понравился такой подход к раскрытию категорий.... да и всего остального тоже.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попросили расписать пошагово установку плагина аккордеон на opencart=)

Для начала нам понадобятся следующие файлы:

menu.js - сам плагин (брать из архива)

jquery-1.4.2.min.js - сам фреймворк jQuery (тоже есть в архиве)

style.css - набор стилей для работы плагина (брать из архива)

category.php - контроллер который будет строить меню категорий (брать в одном из ответов темы)

Шаг 1

Для начала закинем файлы в нужные категории

menu.js и jquery-1.4.2.min.js в catalogviewjavascriptjQuery

style.css в catalogviewthemeвашатемаstylesheet

category.php в catalogcontrollermodule

Шаг 2

Откроем catalogviewthemeвашатемаtemplatecommonheader.tpl

И в теге <head></head> пропишем следующие строчки:

<script type="text/javascript" src="catalog/view/javascript/jquery/menu.js"></script>

<link rel="stylesheet" type="text/css" href="catalog/view/theme/вашатема/stylesheet/style.css" />

Добавим пару строк для корректной работы в IE 6

<!--[if lt IE 6]>

<style type="text/css">

li a {display:inline-block;}

li a {display:block;}

</style>

<![endif]-->

Там же заменим:

<script type="text/javascript" src="catalog/view/javascript/jquery/jquery-1.3.2.min.js"></script>

на

<script type="text/javascript" src="catalog/view/javascript/jquery/jquery-1.4.2.min.js"></script>

ВНИМАНИЕ! C версией jquery-1.3.2 плагин не работает

Шаг3

Меняем style.css под нужный нам дизайн ( как оно выглядит по умолчание можно увидеть в примере который лежит в архиве)

Вот собственно и всё. Если что не понятно или про что-то забыл спрашивайте=)

Изменено пользователем afwollis
edit -> save

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо - будет чем на выходных заняться ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Привентилось, НО категории тупо в развернутом виде!Спасибо! Работает!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вау! Очень прикольно! И кстати что там корявого? Покликал по менюшке - все летает, красота :( Единственный минус подобных действий - это ущерб в SEO, поисковики не умеют индексировать ссылки в подобных меню. А так очень прикольно :( И дизайн стильный

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Минус в том, что меню сворачивается при выборе конечного субменю.. Хотелось бы что бы оставалось в развернутом виде... К сожалению поправить самому мозгов не хватает :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хочу сделать меню категорий на плагине аккордион для jQuery, с самим яваскриптом я разобрался ...

Ну раз с JS разобрался, то помоги поправить скрипт, что бы дерево категорий не сворачивалось при выборе конечного субменю :) Или может кто что подскажет?Внедрялось тут: http://citysoft.ck.ua/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну раз с JS разобрался, то помоги поправить скрипт, что бы дерево категорий не сворачивалось при выборе конечного субменю :) Или может кто что подскажет?Внедрялось тут: <!-- m -->http://citysoft.ck.ua/<!-- m -->

Там же в примерах всё было. В файле catalogcontrollermodulecategory.php который я выложил меняешь:
if ($results) {         // Оригинальная строчка $output .= '[list]';         $output .= ($current_path == '') ? '<ul class="menu collapsible">' : '<ul class="acitem">';       }
на
if ($results) {         // Оригинальная строчка $output .= '[list]';         $output .= ($current_path == '') ? '<ul class="menu noaccordion">' : '<ul class="acitem">';       }
И ничего сворачиваться само по себе не должно Изменено пользователем afwollis
edit -> save

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там же в примерах всё было. В файле catalogcontrollermodulecategory.php который я выложил меняешь:

Подразумевается, что при переходе по ссылке все меню сворачивается в первоначальный вид. А хотелось бы, чтоб оставался открытым раздел с той категорией в которую осуществился переход

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем привет (длинный, красный и горячий!).

Есть идея по установкe в ("Категории") текстовом поле, над картинками под-категорий или товаров, скрипт по "сокрытию" большей части текста с выведением слова-линка на расширение (показ) остального текста ниже линка. :lol:

Есть скрипт "slick-box" и он у меня на статической странице применяется. А где ( в каком PHP файле) мне прописать, или указать ссылку на него (в папке ) "jscripts", чтобы можно было ссылаться на команду при необходимости?

Это собственно сам скрипт, висит на странице:

<!--Slicker starts here-->                <script language="javascript" type="text/javascript">                    $(document).ready(function() {                     // hides the slickbox as soon as the DOM is ready                     // (a little sooner than page load)                      $('#slickbox').hide();                     // shows the slickbox on clicking the noted link                      $('a#slick-show').click(function() {                     $('#slickbox').show('slow');                     return false;                      });                     // hides the slickbox on clicking the noted link                      $('a#slick-hide').click(function() {                     $('#slickbox').hide('fast');                     return false;                      });                     // toggles the slickbox on clicking the noted link                      $('a#slick-toggle').click(function() {                     $('#slickbox').toggle(400);                     return false;                      });                    });</script>                 <!--Slicker ends here-->

Вот таким макаром я располагаю залинкованое слово для того чтобы "вытащить" остальной текст ниже уже показанного параграфа:

<p style="padding-left: 14px;">At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat 

<p>[url="#"][img=images/new/nnnnn/read_more.jpg]Читать дальше[/url]  [url="#"][img=images/new/nnnnn/collapse.jpg]Закрыть[/url]</p>
Ну и далее(ниже) в странице располагается div id="slickbox", который и "покажет" остальную (большую) часть текста

<div id="slickbox">  <h3>bla -bla - bla - ...</h3><p style="padding-left:14px;">bla-bla-bla...</p></div>

Благодарю заранее всех заинтересовавшихся лиц обоего пола.

Изменено пользователем afwollis
edit -> save

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Привентилось, НО категории тупо в развернутом виде!Спасибо! Работает!

:) Аналогично, категории развернуты все! где капать? спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А может лучше скинемся на плагин "Accordion categories menu" от webshopworks.com http://opencart.webshopworks.com/module ... ncart.html. На демке отлично работает ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В #6 после не хватает кода в сообщении :( Оч хотелось бы посмотреть

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Люди, кто-нибудь решил проблему с тем, чтобы при переходе в какую-либо категорию меню с этой категорией оставалось открытым?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может это и неправильно, но я готова скинуться на этот модуль - Accordion categories menu for OpenCart ...

Если есть еще кто желающий, то получиться уже в два раза дешевле.

Кстати, не противоречит ли это правилам форума и вообще этике по отношению к чужому труду?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это запрещено правилами форума

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересно было бы почитать мотивировку/логику такого запрета...

Порассуждаю с точки зрения продавца (коим я и являюсь, но по другой группе товаров). Если я что-то продаю, то мне надо его таки продать и получить за это деньги. Правильно? Почему меня должно интересовать, один человек это купил, или скинулись трое? Я, как продавец, свои деньги получил и этого достаточно. Могут последовать возражения на предмет того, что если бы не скидывались, а каждый купил отдельно, то я получил бы втрое больше. Могу с уверенностью сказать, что это не так. Скорее будет ситуация, что не купит никто. Как по мне, лучше пусть группами покупают, чем не покупают вообще. Ведь людей, готовых выложить 5 баксов за модуль во много раз больше, чем готовых выложить 20 баксов. Я, например, 20 баксов за лишнюю цацку не дам (хотя на пиво трачу больше :lol: ).

Странный запрет. ИМХО.

Кто считает, что я неправ - с удовольствием почитаю объяснения.

ЗЫ. Просьба комменты в виде "Такие правила и ниипёт" не писать. Мне действительно интересна мотивировка запрета.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выдержка из правил форума

Запрещается:
   
    ...
    Размещать где-либо (в т.ч. в подписи) рекламу, коммерческие предложения, баннеры. 
    Предлагать на форуме товары, работы или услуги (в т.ч. на тему OpenCart). 
    Мы ничего не имеем против коммерческой деятельности, но форум - не рекламная площадка, а сугубо информационный ресурс.

    ...
    Любое предложение о нарушении лицензии других продуктов. Например, покупка модуля вскладчину.
Причины все еще не ясны?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.