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

[Решено] Добавление нового пункта в горизонтальное меню

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

Доброе время суток друзья! Сколько вы раз выручали уже меня, пришёл к вам вновь за помощью!)

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

Вод код:

<div id="topmenu" style="display:none"><?php if ($tmcategories) {  echo $tmcategories; } ?>
<a href="index.php?route=information/contact">Контакты</a>
</div> 

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

Помогите пожалуйста)

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


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

Все правки вносить с помощью  notepad++ используя кодировку UTF-8 без бом.

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


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

Все правки вносить с помощью  notepad++ используя кодировку UTF-8 без бом.

Да, я понимаю, благодарю!) Но, к сожалению, это не решает моей проблемы

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


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

Добрый вечер.

 

Вы выводите тег a href после меню, а меню с вероятностью 90% обетнуто в список ul>li, Т.е. чтобы все заработало Вам необходимо залезть в контроллер модуля меню и добавить новый пункт вручную. Примерно так:

// Для примера 
//Модуль добавляет категории в массив меню
$this->data['categories'] = array();

foreach ($categories as category){
  $this->data['categories'][] = array(
    'name' => $category['name'],
    'href' => 'ссылка'
  );  
}
//Вам нужно после добавления элементов добавить свой
$this->data['categories'][] = array(
  'name' => 'название',
  'href' => 'ссылка'
); 

Код указан только для примера, реальный код модуля меню может отличаться. Либо откройте tpl файл модуля и перед закрывающим тегом ul добавьте свою ссылку обернутую в li. 

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


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

Добрый вечер.

 

...);

Код указан только для примера, реальный код модуля меню может отличаться. Либо откройте tpl файл модуля и перед закрывающим тегом ul добавьте свою ссылку обернутую в li. 

 

Но только через $this->url-link(... !

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


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

Добрый вечер.

 

Вы выводите тег a href после меню, а меню с вероятностью 90% обетнуто в список ul>li, Т.е. чтобы все заработало Вам необходимо залезть в контроллер модуля меню и добавить новый пункт вручную. Примерно так:

// Для примера 
//Модуль добавляет категории в массив меню
$this->data['categories'] = array();

foreach ($categories as category){
  $this->data['categories'][] = array(
    'name' => $category['name'],
    'href' => 'ссылка'
  );  
}
//Вам нужно после добавления элементов добавить свой
$this->data['categories'][] = array(
  'name' => 'название',
  'href' => 'ссылка'
); 

Код указан только для примера, реальный код модуля меню может отличаться. Либо откройте tpl файл модуля и перед закрывающим тегом ul добавьте свою ссылку обернутую в li. 

Вы не могли бы мне помочь с этим? Просто вот смотрю код контроллера модуля меню, не получается разобраться там. Не выходит так, как нужно... Я готов вам заплатить, назовите вашу цену :-)

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


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

Вы не могли бы мне помочь с этим? Просто вот смотрю код контроллера модуля меню, не получается разобраться там. Не выходит так, как нужно... Я готов вам заплатить, назовите вашу цену :-)

 

Пришлите сюда код контроллера под спойлером.

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


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

Пришлите сюда код контроллера под спойлером

 

 

<?php
class ControllerModuleTopmenu extends Controller {
	public function index() {
		$this->document->addStyle('catalog/view/theme/' . $this->config->get('config_template') . '/stylesheet/topmenu.css');
		$this->document->addScript('catalog/view/javascript/topmenu.js');
		
		$this->maxlength = $this->config->get('topmenu_maxlength');
		$this->hide_empty = $this->config->get('topmenu_hide_empty');
		$this->showtotal = $this->config->get('topmenu_total');
		$this->zindex = 1100;

		$this->load->model('catalog/category');
		$this->load->model('catalog/product');
		
		$this->data['tmcategories'] = $this->getTopMenu();

		
		if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/topmenu.tpl')) {
			$this->template = $this->config->get('config_template') . '/template/module/topmenu.tpl';
		} else {
			$this->template = 'default/template/module/topmenu.tpl';
		}

		$this->render();
	}
		
	function getTopMenu ()	{
		if (isset($this->request->get['path'])) {
			$parts = explode('_', (string)$this->request->get['path']);
		} else {
			$parts = array();
		}

		$top_cats = $this->model_catalog_category->getCategories(0);
		
		$category = "<ul class=\"sf-menu\">\n";
		foreach ($top_cats as $top_cat)	{
			if ($top_cat['top']) {
				$name	= $top_cat['name'];
				$href	= $this->url->link('product/category', 'path=' . $top_cat['category_id']);
				$class	= in_array($top_cat['category_id'], $parts) ?  ' class="topactive"' : '';
				$category .= "\t<li>\n<a href=\"".$href."\"".$class.">".$name."</a>\n";
				$category .= $this->getCatTree($top_cat['category_id'], $top_cat['column'])."\n</li>\n";
			}
		}
		return $category."\n</ul>\n";


	} 	

	function getCatTree ($category_id = 0, $column = 1)	{
		if (isset($this->request->get['path'])) {
			$parts = explode('_', (string)$this->request->get['path']);
		} else {
			$parts = array();
		}

		$column = $column ? $column : 1;
		$categories = $this->model_catalog_category->getCategories((int)$category_id);
		$countcats = count ($categories);
		$threshold = ceil ($countcats / $column);
		$category_data = '';
		$product_total = 0;
		
		foreach ($categories as $key => $category) {
			$data = array(
				'filter_category_id'  => $category['category_id'],
				'filter_sub_category' => true	
			);
			
			if ($this->showtotal)	{		
				$product_total = $this->model_catalog_product->getTotalProducts($data);
				$name = $category['name'] . '  (' . $product_total . ')';
			}	else	{
				$name = $category['name'];
			}
			if (!$threshold)	{
				$offset_column = $this->maxlength * floor ($key / $countcats * $column);
				$left = " style=\"margin-left: ". $offset_column ."px; z-index: ".--$this->zindex.";\"";
				$category_data .= "\n</ul>\n<ul". $left .">\n";
				$threshold = ceil ($countcats / $column);
			}
			
			$href = $this->url->link('product/category', 'path=' . $category['category_id']);
			$class = in_array($category['category_id'], $parts) ?  ' class="active"' : '';
			$parent = $this->getCatTree($category['category_id'], $category['column']);

			if ($parent) {
				$class = $class	? ' class="activeparent"' : ' class="parent"';
			}
			if ($product_total || !$this->hide_empty)	{
				$category_data .= "\n\t<li>\n<a href=\"".$href."\"".$class.">".$name."</a>".$parent."\n</li>\n";
			}
			$threshold--;
		}

		return strlen($category_data) ? "\n<ul style=\" z-index: ".++$this->zindex.";\">\n".$category_data."\n</ul>\n" : "";
	}
}
?>

Вот контроллер модуля)

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


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

Перед:

return $category."\n</ul>\n";

добавить:

$category .= '<li><a href="#">asdasdasd</a></li>';

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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