Jump to content

Recommended Posts

Никак не могу понять что значит запись $this->url->link('product/product', '&manufacturer_id=' . $result['manufacturer_id'] . '&product_id=' . $result['product_id'] . $url), во первых не понятна эта запись $this->url->link что она означает? 

Прошу сильно не пинать, только начинаю изучать opencart

Share this post


Link to post
Share on other sites

Ну.. не с этого ж начинать :)

 Это значит, что будет сформирован правильный url? и в случае при включенном SEF и нет

Share this post


Link to post
Share on other sites

Ну.. не с этого ж начинать :)

 Это значит, что будет сформирован правильный url? и в случае при включенном SEF и нет

1. что такое SEF?

2. 'product/product', '&manufacturer_id=' . $result['manufacturer_id'] . '&product_id=' . $result['product_id'] . $url              - распишите пожалуйста что за что отвечает и что означает.

Share this post


Link to post
Share on other sites

Собственно цель такая: при просмотре производителя формируются объекты с ссылками типа site/алиас производителя/алиас продукта, а нужно сделать site/алиас главной категории/алиас продукта.
id главной категории уже получил а вот в впихнуть в ссылку не получется не знаю как
контроллер производителей:

<?php 
class ControllerProductManufacturer extends Controller {  
public function index() { 
$this->language->load('product/manufacturer');
 
$this->load->model('catalog/manufacturer');
 
$this->load->model('tool/image');
 
$this->document->setTitle($this->language->get('heading_title'));
 
$this->data['heading_title'] = $this->language->get('heading_title');
 
$this->data['text_index'] = $this->language->get('text_index');
$this->data['text_empty'] = $this->language->get('text_empty');
 
$this->data['button_continue'] = $this->language->get('button_continue');
 
$this->data['breadcrumbs'] = array();
 
      $this->data['breadcrumbs'][] = array(
        'text'      => $this->language->get('text_home'),
'href'      => $this->url->link('common/home'),
        'separator' => false
      );
 
$this->data['breadcrumbs'][] = array(
'text'      => $this->language->get('text_brand'),
'href'      => $this->url->link('product/manufacturer'),
'separator' => $this->language->get('text_separator')
);
 
$this->data['categories'] = array();
 
$results = $this->model_catalog_manufacturer->getManufacturers();
 
foreach ($results as $result) {
if (is_numeric(utf8_substr($result['name'], 0, 1))) {
$key = '0 - 9';
} else {
$key = utf8_substr(utf8_strtoupper($result['name']), 0, 1);
}
 
if (!isset($this->data['manufacturers'][$key])) {
$this->data['categories'][$key]['name'] = $key;
}
 
$this->data['categories'][$key]['manufacturer'][] = array(
'name' => $result['name'],
'href' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $result['manufacturer_id'])
);
}
 
$this->data['continue'] = $this->url->link('common/home');
 
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/manufacturer_list.tpl')) {
$this->template = $this->config->get('config_template') . '/template/product/manufacturer_list.tpl';
} else {
$this->template = 'default/template/product/manufacturer_list.tpl';
}
 
$this->children = array(
'common/column_left',
'common/column_right',
'common/content_top',
'common/content_bottom',
'common/footer',
'common/header'
);
 
$this->response->setOutput($this->render());
  }
 
public function info() {
    $this->language->load('product/manufacturer');
 
$this->load->model('catalog/manufacturer');
 
$this->load->model('catalog/product');
 
$this->load->model('tool/image'); 
 
if (isset($this->request->get['manufacturer_id'])) {
$manufacturer_id = (int)$this->request->get['manufacturer_id'];
} else {
$manufacturer_id = 0;
 
if (isset($this->request->get['sort'])) {
$sort = $this->request->get['sort'];
} else {
$sort = 'p.sort_order';
 
if (isset($this->request->get['order'])) {
$order = $this->request->get['order'];
} else {
$order = 'ASC';
 
if (isset($this->request->get['page'])) {
$page = $this->request->get['page'];
} else {
$page = 1;
}
 
if (isset($this->request->get['limit'])) {
$limit = $this->request->get['limit'];
} else {
$limit = $this->config->get('config_catalog_limit');
}
 
$this->data['breadcrumbs'] = array();
 
    $this->data['breadcrumbs'][] = array( 
        'text'      => $this->language->get('text_home'),
'href'      => $this->url->link('common/home'),
      'separator' => false
    );
   
$this->data['breadcrumbs'][] = array( 
        'text'      => $this->language->get('text_brand'),
'href'      => $this->url->link('product/manufacturer'),
      'separator' => $this->language->get('text_separator')
    );
 
$manufacturer_info = $this->model_catalog_manufacturer->getManufacturer($manufacturer_id);
 
if ($manufacturer_info) {
$this->document->setTitle($manufacturer_info['name']);
$this->document->addScript('catalog/view/javascript/jquery/jquery.total-storage.min.js');
 
$url = '';
 
if (isset($this->request->get['sort'])) {
$url .= '&sort=' . $this->request->get['sort'];
}
 
if (isset($this->request->get['order'])) {
$url .= '&order=' . $this->request->get['order'];
}
 
if (isset($this->request->get['page'])) {
$url .= '&page=' . $this->request->get['page'];
}
 
if (isset($this->request->get['limit'])) {
$url .= '&limit=' . $this->request->get['limit'];
}
 
$this->data['breadcrumbs'][] = array(
        'text'      => $manufacturer_info['name'],
'href'      => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . $url),
      'separator' => $this->language->get('text_separator')
    );
 
$this->data['heading_title'] = $manufacturer_info['name'];
 
$this->data['text_empty'] = $this->language->get('text_empty');
$this->data['text_quantity'] = $this->language->get('text_quantity');
$this->data['text_manufacturer'] = $this->language->get('text_manufacturer');
$this->data['text_model'] = $this->language->get('text_model');
$this->data['text_price'] = $this->language->get('text_price');
$this->data['text_tax'] = $this->language->get('text_tax');
$this->data['text_points'] = $this->language->get('text_points');
$this->data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));
$this->data['text_display'] = $this->language->get('text_display');
$this->data['text_list'] = $this->language->get('text_list');
$this->data['text_grid'] = $this->language->get('text_grid');
$this->data['text_sort'] = $this->language->get('text_sort');
$this->data['text_limit'] = $this->language->get('text_limit');
 
$this->data['button_cart'] = $this->language->get('button_cart');
$this->data['button_wishlist'] = $this->language->get('button_wishlist');
$this->data['button_compare'] = $this->language->get('button_compare');
$this->data['button_continue'] = $this->language->get('button_continue');
 
$this->data['compare'] = $this->url->link('product/compare');
 
$this->data['products'] = array();
 
$data = array(
'filter_manufacturer_id' => $manufacturer_id, 
'sort'                   => $sort,
'order'                  => $order,
'start'                  => ($page - 1) * $limit,
'limit'                  => $limit
);
 
$product_total = $this->model_catalog_product->getTotalProducts($data);
 
$results = $this->model_catalog_product->getProducts($data);
 
foreach ($results as $result) {
if ($result['image']) {
$image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));
} else {
$image = false;
}
 
if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
} else {
$price = false;
}
 
if ((float)$result['special']) {
$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));
} else {
$special = false;
}
 
if ($this->config->get('config_tax')) {
$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);
} else {
$tax = false;
}
 
if ($this->config->get('config_review_status')) {
$rating = (int)$result['rating'];
} else {
$rating = false;
}
 
$categories = $this->model_catalog_product->getProductMainCategoryId($result['product_id']);
if ($categories > 0) {
$url_categories = '&category_id=' . $categories;
} else {
$url_categories = '';
}
 
$this->data['products'][] = array(
'product_id'  => $result['product_id'],
'thumb'       => $image,
'name'        => $result['name'],
'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 100) . '..',
'price'       => $price,
'special'     => $special,
'tax'         => $tax,
'rating'      => $result['rating'],
'reviews'     => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
'href'        => $this->url->link('product/product', '&manufacturer_id=' . $result['manufacturer_id'] . '&product_id=' . $result['product_id'] . $url)
);
}
 
$url = '';
 
if (isset($this->request->get['limit'])) {
$url .= '&limit=' . $this->request->get['limit'];
}
 
$this->data['sorts'] = array();
 
$this->data['sorts'][] = array(
'text'  => $this->language->get('text_default'),
'value' => 'p.sort_order-ASC',
'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . '&sort=p.sort_order&order=ASC' . $url)
);
 
$this->data['sorts'][] = array(
'text'  => $this->language->get('text_name_asc'),
'value' => 'pd.name-ASC',
'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . '&sort=pd.name&order=ASC' . $url)
); 
 
$this->data['sorts'][] = array(
'text'  => $this->language->get('text_name_desc'),
'value' => 'pd.name-DESC',
'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . '&sort=pd.name&order=DESC' . $url)
);
 
$this->data['sorts'][] = array(
'text'  => $this->language->get('text_price_asc'),
'value' => 'p.price-ASC',
'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . '&sort=p.price&order=ASC' . $url)
); 
 
$this->data['sorts'][] = array(
'text'  => $this->language->get('text_price_desc'),
'value' => 'p.price-DESC',
'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . '&sort=p.price&order=DESC' . $url)
); 
 
if ($this->config->get('config_review_status')) {
$this->data['sorts'][] = array(
'text'  => $this->language->get('text_rating_desc'),
'value' => 'rating-DESC',
'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . '&sort=rating&order=DESC' . $url)
); 
 
$this->data['sorts'][] = array(
'text'  => $this->language->get('text_rating_asc'),
'value' => 'rating-ASC',
'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . '&sort=rating&order=ASC' . $url)
);
}
 
$this->data['sorts'][] = array(
'text'  => $this->language->get('text_model_asc'),
'value' => 'p.model-ASC',
'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . '&sort=p.model&order=ASC' . $url)
); 
 
$this->data['sorts'][] = array(
'text'  => $this->language->get('text_model_desc'),
'value' => 'p.model-DESC',
'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . '&sort=p.model&order=DESC' . $url)
);
 
$url = '';
 
if (isset($this->request->get['sort'])) {
$url .= '&sort=' . $this->request->get['sort'];
}
 
if (isset($this->request->get['order'])) {
$url .= '&order=' . $this->request->get['order'];
}
 
$this->data['limits'] = array();
 
$limits = array_unique(array($this->config->get('config_catalog_limit'), 25, 50, 75, 100));
 
sort($limits);
 
foreach($limits as $limits){
$this->data['limits'][] = array(
'text'  => $limits,
'value' => $limits,
'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . $url . '&limit=' . $limits)
);
}
 
$url = '';
 
if (isset($this->request->get['sort'])) {
$url .= '&sort=' . $this->request->get['sort'];
}
 
if (isset($this->request->get['order'])) {
$url .= '&order=' . $this->request->get['order'];
}
 
if (isset($this->request->get['limit'])) {
$url .= '&limit=' . $this->request->get['limit'];
}
 
$pagination = new Pagination();
$pagination->total = $product_total;
$pagination->page = $page;
$pagination->limit = $limit;
$pagination->text = $this->language->get('text_pagination');
$pagination->url = $this->url->link('product/manufacturer/info','manufacturer_id=' . $this->request->get['manufacturer_id'] .  $url . '&page={page}');
 
$this->data['pagination'] = $pagination->render();
 
$this->data['sort'] = $sort;
$this->data['order'] = $order;
$this->data['limit'] = $limit;
 
$this->data['continue'] = $this->url->link('common/home');
 
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/manufacturer_info.tpl')) {
$this->template = $this->config->get('config_template') . '/template/product/manufacturer_info.tpl';
} else {
$this->template = 'default/template/product/manufacturer_info.tpl';
}
 
$this->children = array(
'common/column_left',
'common/column_right',
'common/content_top',
'common/content_bottom',
'common/footer',
'common/header'
);
 
$this->response->setOutput($this->render());
} else {
$url = '';
 
if (isset($this->request->get['manufacturer_id'])) {
$url .= '&manufacturer_id=' . $this->request->get['manufacturer_id'];
}
 
if (isset($this->request->get['sort'])) {
$url .= '&sort=' . $this->request->get['sort'];
}
 
if (isset($this->request->get['order'])) {
$url .= '&order=' . $this->request->get['order'];
}
 
if (isset($this->request->get['page'])) {
$url .= '&page=' . $this->request->get['page'];
}
 
if (isset($this->request->get['limit'])) {
$url .= '&limit=' . $this->request->get['limit'];
}
 
$this->data['breadcrumbs'][] = array(
'text'      => $this->language->get('text_error'),
'href'      => $this->url->link('product/category', $url),
'separator' => $this->language->get('text_separator')
);
 
$this->document->setTitle($this->language->get('text_error'));
 
      $this->data['heading_title'] = $this->language->get('text_error');
 
      $this->data['text_error'] = $this->language->get('text_error');
 
      $this->data['button_continue'] = $this->language->get('button_continue');
 
      $this->data['continue'] = $this->url->link('common/home');
 
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) {
$this->template = $this->config->get('config_template') . '/template/error/not_found.tpl';
} else {
$this->template = 'default/template/error/not_found.tpl';
}
 
$this->children = array(
'common/column_left',
'common/column_right',
'common/content_top',
'common/content_bottom',
'common/footer',
'common/header'
);
 
$this->response->setOutput($this->render());
}
  }
}
?>



Получение id категории и формирование начиная с строки 225 по 243

Share this post


Link to post
Share on other sites

SEO-friendly URLs

 

А с какой целью интересуетесь?

  • +1 1

Share this post


Link to post
Share on other sites

 

при просмотре производителя формируются объекты с ссылками типа site/алиас производителя/алиас продукта, а нужно сделать site/алиас главной категории/алиас продукта.

Ну так с этого и надо было начинать

 

Посмотрите как формируются ссылки на продукты в категориях

Посмотрите в продуктах, как достается дерево категорий.

И потом сформируйте правильный путь

  • +1 1

Share this post


Link to post
Share on other sites

Переделал и заработало но все равно запись как-то не нравится пустые кавычки

			$categories = $this->model_catalog_product->getProductMainCategoryId($result['product_id']);
			if ($categories > 0) {
				$url_categories = 'path=' . $categories;
			} else {
				$url_categories = '';
			}

и формирование url следующее: 

'href'        => $this->url->link('product/product', '' . $url_categories . '&product_id=' . $result['product_id'] . $url)

перед $url_categories пришлось поставить пустые кавычки - это нормально? 

можно как-то по другому?

Share this post


Link to post
Share on other sites

'href' => $this->url->link('product/product', $url_categories . '&product_id=' . $result['product_id'] . $url)

Уже не работает?

  • +1 1

Share this post


Link to post
Share on other sites

Работает.

Все исправил, спасибо!

Share this post


Link to post
Share on other sites

Все же нужно разобраться где и как обрабатываются эти значения
$this->url->link('product/product', 'product_id=' . $result['product_id'])
 и происходит формирование url, кто знает распишите подробно.

 

Проблема в следующем: Есть модуль productcarousel который выводит товары(в моем случае на главной) он похож на модуль featured в нем строка ответственная за ссылки товаров вот:

'href'    	 => $this->url->link('product/product', 'product_id=' . $result['product_id'])

при таком варианте формируется ссылка вида сайт/алиас_продукта

при попытке ее изменить на нужную мне: 

'href'    	 => $this->url->link('product/product', $url_categories . 'product_id=' . $result['product_id'])

где $url_categories является главной категорией товара, при таком варианте ссылки получаются сайт/алиас_категории, куда делся алиас продукта?

 

Нужно привести к виду: сайт/алиас_категории/алиас_продукта

Как привести к нужному виду в чем ошибка?

Share this post


Link to post
Share on other sites

Проблема в следующем: Есть модуль productcarousel который выводит товары(в моем случае на главной) он похож на модуль featured в нем строка ответственная за ссылки товаров вот:

'href'    	 => $this->url->link('product/product', 'product_id=' . $result['product_id'])
при таком варианте формируется ссылка вида сайт/алиас_продукта

при попытке ее изменить на нужную мне: 

'href'    	 => $this->url->link('product/product', $url_categories . 'product_id=' . $result['product_id'])
где $url_categories является главной категорией товара, при таком варианте ссылки получаются сайт/алиас_категории, куда делся алиас продукта?

 

Нужно привести к виду: сайт/алиас_категории/алиас_продукта

Как привести к нужному виду в чем ошибка?

 

Разобрался сам, не заметил отсутствие знака & перед product_id=

 

 

 

А вот что касается $this->url->link('product/product', 'product_id=' . $result['product_id']) остается актуальным распишите пожалуйста или дайте ссылку где расписано

Все же нужно разобраться где и как обрабатываются эти значения

$this->url->link('product/product', 'product_id=' . $result['product_id'])

 и происходит формирование url, кто знает распишите подробно.

Share this post


Link to post
Share on other sites

/sysytem/library/url.php

    public function link($route, $args = '', $connection = 'NONSSL')

Share this post


Link to post
Share on other sites

Здравствуйте! Помогите понять, что значит запись "'.$link.'"

У меня слайдер, в который я поместила картинки, мне нужно, чтобы при нажатии на картинку, осуществлялся переход на статью, мне ответили в поддержке моего шаблона на вордпресс:

Все ссылки со слайдера ведут на страницу, которую вы укажете в functions.php.

Чтобы ссылки вели на запись слайдера, код нужно переписать.

В этом же файле замените "_Ссылка_" на "'.$link.'" в 3х местах. Я приложили скрин куска кода в файле functions.php. Подскажите, что это за запись -  "'.$link.'", на которую мне нужно заменить слово "ссылка"?

 
 

post-720078-0-11353100-1479885575_thumb.jpg

Share this post


Link to post
Share on other sites

мне ответили в поддержке моего шаблона на вордпресс:

 

это лучше спросить у вашей поддержки

если внимательно смотреть на шапку данного форума, можно увидеть что он посвящен opencart.. :oops:

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.


  • 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.