Jump to content

Изменение ссылки


Recommended Posts

Здравствуйте, помогите сделать правильно ссылку.

 

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

 

что я делаю...

 

заменяю Dispatcher

 

 /**
 * @var array List of default routes
 */
public $default_routes = array(
 'manufacturer_rule' => array(
  'controller' => 'manufacturer',
  'rule' =>  'manufacturer/{category:/}{rewrite}/',
  'keywords' => array(
'id' =>	array('regexp' => '[0-9]+'),
'rewrite' =>  array('regexp' => '[_a-zA-Z0-9-\pL]*', 'param' => 'manufacturer_rewrite'),
'category' =>  array('regexp' => '[_a-zA-Z0-9-\pL]*'),
'meta_keywords' => array('regexp' => '[_a-zA-Z0-9-\pL]*'),
'meta_title' =>  array('regexp' => '[_a-zA-Z0-9-\pL]*'),
 )
);

 

далее в tpl пишу

 

$link->getPageLink('manufacturer', true, NULL, "category={$category.link_rewrite}

 

и у меня в строке получается

 

.../manufacturers?category=salaty

 

как сделать чтобы было

 

...manufacturers/salaty

 

версия престы 1.5.4.1

Edited by vscorpion (see edit history)
Link to comment
Share on other sites

что-то не получилось...

может кто подскажет модуль...или как сделать правильно...

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

 

ссылку у меня получилось сделать SEO, но при переходе по ней в адресной строке получается запрос...в виде

manufacturer/viva-pizza/?manufacturer_rewrite=viva-pizza&noredirect=1

 

как это исправить?

Link to comment
Share on other sites

и еще, если я переопределяю методы в контроллере, то как мне добавить свои переменные и потом их использовать?

у меня всегда значение в них получается пусто

Link to comment
Share on other sites

class ManufacturerController extends ManufacturerControllerCore
{
private static $id_category = 0;
public function init()
{
 $this->id_category = Tools::getValue('id_category');
 if (Tools::getValue('manufacturer_rewrite'))
 {
  $name_manufacturer = str_replace('-', '%', Tools::getValue('manufacturer_rewrite'));
  $id_manufacturer = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
   SELECT `id_manufacturer`
   FROM `'._DB_PREFIX_.'manufacturer`
   WHERE `name` LIKE \''.$name_manufacturer.'\'');
  if($id_manufacturer > 0)
  {
   $_GET['id_manufacturer'] = $id_manufacturer;
   $_GET['noredirect'] = 1;
  }
  else
  {
   Tools::display404Error();
   die;
  }
 }
 parent::init();
}
public function canonicalRedirection($canonicalURL = '')
{
 $handling = fopen('./1', 'a');
 fwrite($handling, $this->id_category."\n");
 fclose ($handle);
 if (Validate::isLoadedObject($this->manufacturer))
  parent::canonicalRedirection($this->context->link->getManufacturerLink($this->manufacturer, null, $this->id_category));
}
}

 

и в файл выводится пустота...

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

 

не понимаю...

Link to comment
Share on other sites

почему? а как же я параметр буду передавать?

тогда я вообще не понимаю как это все работает...

 

мне же надо из адресной строки брать... а в адресной строке теряется почему-то :(

Link to comment
Share on other sites

видоизменил categoryController

чуть позже через ManufacturerController там чпу не получается настроить

а в категориях я в диспатчере просто поставил в конце {category:/}

 

и все

Link to comment
Share on other sites

<?php

 

class CategoryController extends CategoryControllerCore

{

 

public function init()

{

if (Tools::getValue('category_rewrite'))

{

$category_rewrite = Tools::getValue('category_rewrite');

 

$id_category = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue("

SELECT id_category

FROM "._DB_PREFIX_."category_lang

WHERE link_rewrite = '".$category_rewrite."'");

 

if($id_category > 0)

{

$_GET['id_category'] = $id_category;

}

else

{

Tools::display404Error();

die;

}

}

 

parent::init();

}

 

public function initContent()

{

parent::initContent();

 

if (Configuration::get('VL_CATEG_LINK') > 0) {

$this->setTemplate(_PS_THEME_DIR_.'manufacturer-list.tpl');

if ($this->category->id != 1)

$this->assignManufacturerList();

}

}

 

/**

* Assign list of products template vars

*/

public function assignManufacturerList()

{

// $this->cat_products = $this->category->getProducts($this->context->language->id);

 

// if ($this->cat_products)

// foreach ($products as $product)

// $this->manufacturers = Manufacturer::getManufacturer(intval($product['id_manufacturer']));

$this->manufacturers = $this->category->getManufacturers($this->context->language->id, true);

 

// $this->manufacturers = Manufacturer::getManufacturers(false, $this->context->language->id, true, false, false, false);

$nbProducts = count($this->manufacturers);

$this->pagination($nbProducts);

 

$_GET['id_category'] = (int)$this->category->id;

 

foreach ($this->manufacturers as &$item)

$item['image'] = (!file_exists(_PS_MANU_IMG_DIR_.$item['id_manufacturer'].'-'.ImageType::getFormatedName('medium').'.jpg')) ? $this->context->language->iso_code.'-default' : $item['id_manufacturer'];

$this->context->smarty->assign(array(

'category' => $this->category,

'id_category' => (int)$this->category->id,

'pages_nb' => ceil($nbProducts / (int)($this->n)),

'nbManufacturers' => $nbProducts,

'path' => Tools::getPath($this->category->id),

'mediumSize' => Image::getSize(ImageType::getFormatedName('medium')),

'manufacturers' => $this->manufacturers,

'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),

));

}

}

  • Like 1
Link to comment
Share on other sites

×
×
  • Create New...