Jump to content
Sign in to follow this  
OlegVladislavovich

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

Recommended Posts

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

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

Вод код:

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

 

Вы выводите тег 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. 

Share this post


Link to post
Share on other sites

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

 

...);

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

 

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

Share this post


Link to post
Share on other sites

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

 

Вы выводите тег 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. 

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

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

 

 

<?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" : "";
	}
}
?>

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

Share this post


Link to post
Share on other sites

Перед:

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

добавить:

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.