Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


iPartizan

Recommended Posts

Хочу сделать меню категорий на плагине аккордион для 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
Надіслати
Поділитися на інших сайтах


  • 4 weeks later...

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

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


  • 1 month later...

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

Есть идея по установк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
Надіслати
Поділитися на інших сайтах


  • 1 month later...
  • 2 weeks later...

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

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...
  • 3 months later...
  • 1 month later...
  • 2 weeks later...

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

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

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

Надіслати
Поділитися на інших сайтах


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

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

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

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

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

Надіслати
Поділитися на інших сайтах


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

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

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


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.