vscorpion Posted May 31, 2013 Share Posted May 31, 2013 (edited) Здравствуйте, помогите сделать правильно ссылку. Мне необходимо чтобы при нажатии на категорию, выводились произвордители у кого в данных категориях и подкатегориях имеются товары. что я делаю... заменяю 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 May 31, 2013 by vscorpion (see edit history) Link to comment Share on other sites More sharing options...
absent Posted May 31, 2013 Share Posted May 31, 2013 а чпу включили? Link to comment Share on other sites More sharing options...
vscorpion Posted May 31, 2013 Author Share Posted May 31, 2013 (edited) сделал по другому. тему можно закрыть. чпу. да включено Edited May 31, 2013 by vscorpion (see edit history) Link to comment Share on other sites More sharing options...
absent Posted June 1, 2013 Share Posted June 1, 2013 да, этот путь слишком громоздкий, можно ввиде модуля решить. Link to comment Share on other sites More sharing options...
vscorpion Posted June 1, 2013 Author Share Posted June 1, 2013 что-то не получилось... может кто подскажет модуль...или как сделать правильно... мне надо чтобы при нажатии на категорию вывелись все производители у кого есть товары в этих категориях..далее, при выборе производителя чтобы отобразились его товары только в этой категории.... ссылку у меня получилось сделать SEO, но при переходе по ней в адресной строке получается запрос...в виде manufacturer/viva-pizza/?manufacturer_rewrite=viva-pizza&noredirect=1 как это исправить? Link to comment Share on other sites More sharing options...
absent Posted June 1, 2013 Share Posted June 1, 2013 выборку из бд надо делать в зависимости от категории вот и модуль Link to comment Share on other sites More sharing options...
vscorpion Posted June 1, 2013 Author Share Posted June 1, 2013 и еще, если я переопределяю методы в контроллере, то как мне добавить свои переменные и потом их использовать? у меня всегда значение в них получается пусто Link to comment Share on other sites More sharing options...
absent Posted June 1, 2013 Share Posted June 1, 2013 как покажи Link to comment Share on other sites More sharing options...
vscorpion Posted June 1, 2013 Author Share Posted June 1, 2013 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 More sharing options...
absent Posted June 1, 2013 Share Posted June 1, 2013 для вашей задачи не нужен override. sql запрос новый писать нужно Link to comment Share on other sites More sharing options...
vscorpion Posted June 1, 2013 Author Share Posted June 1, 2013 почему? а как же я параметр буду передавать? тогда я вообще не понимаю как это все работает... мне же надо из адресной строки брать... а в адресной строке теряется почему-то Link to comment Share on other sites More sharing options...
absent Posted June 1, 2013 Share Posted June 1, 2013 да можно и по вашему Link to comment Share on other sites More sharing options...
vscorpion Posted June 1, 2013 Author Share Posted June 1, 2013 так не работает Link to comment Share on other sites More sharing options...
absent Posted June 1, 2013 Share Posted June 1, 2013 в личку написал Link to comment Share on other sites More sharing options...
vscorpion Posted June 1, 2013 Author Share Posted June 1, 2013 вобщем я сделал... подскажете мождет как побороть blocklayered чтобы он всегда выводил данные с id_manufacturer Link to comment Share on other sites More sharing options...
absent Posted June 1, 2013 Share Posted June 1, 2013 как сделал?? Link to comment Share on other sites More sharing options...
vscorpion Posted June 1, 2013 Author Share Posted June 1, 2013 видоизменил categoryController чуть позже через ManufacturerController там чпу не получается настроить а в категориях я в диспатчере просто поставил в конце {category:/} и все Link to comment Share on other sites More sharing options...
absent Posted June 1, 2013 Share Posted June 1, 2013 как менял покажи category Link to comment Share on other sites More sharing options...
vscorpion Posted June 1, 2013 Author Share Posted June 1, 2013 <?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'), )); } } 1 Link to comment Share on other sites More sharing options...
absent Posted June 1, 2013 Share Posted June 1, 2013 неплохое решение. Link to comment Share on other sites More sharing options...
Recommended Posts