Перейти к содержимому


Фото
- - - - -

Открытие категории по id


  • Чтобы отвечать, сперва войдите на форум
9 ответов в теме

#1 question

question
  • Пользователь
  • 107 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 13.01.2019 - 12:23

Сейчас (без применения редиректов) категории открываются по такому url

site.ru/index.php?module=ProductsView&category=telefony

Мне же нужно, чтобы категория была доступна по адресу

site.ru/index.php?module=ProductsView&id=1

то есть, по его id.

Как?

Полагаю, в ProductsView.php нужно получить id категории из url адреса

 

$category_id = $this->request->get('id', 'string');
 

 

Смотрю далее, примерно 45 строчка
 

 

$category = $this->categories->get_category((string)$category_url);
 

То есть, как я понимаю, функция get_category, описанная в Categories.php, получает категорию по $category_url. А мне всего-то нужно получить по id.

Лезу в вышеупомянутый файт и вижу

 

public function get_category($id)
 

 

return $this->get_category((int)$category->id);    
 

То есть, категория получается по её id, а не url. Ничего не понял...

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

site.ru/index.php?module=ProductsView&id=1


Изменено: question, 13.01.2019 - 12:33


#2 question

question
  • Пользователь
  • 107 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 13.01.2019 - 12:33

Предвидя вопрос "зачем", отвечу.

Я хочу провести seo-эксперимент, для начала мне нужно три примерно одинаковых магазина с url категории товаров вида

site.ru/category/telefony

site.ru/category/1

site.ru/telefony

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



#3 phukortsin

phukortsin
  • Пользователь
  • 639 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 13.01.2019 - 13:03

То есть, как я понимаю, функция get_category, описанная в Categories.php, получает категорию по $category_url.

Неправильно понимаете.
$this->get_category((int)$id_variable); - так можно получить по id
$this->get_category((string)$url_variable); - так можно получить по url

#4 question

question
  • Пользователь
  • 107 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 14.01.2019 - 12:09

Огромное спасибо. Решение очень простое:

1. Добавляем в файл ProductsView.php строки

        $category_id = $this->request->get('id', 'string');
 

и далее

        if (!empty($category_id))
        {
            $category = $this->categories->get_category((int)$category_id);
            if (empty($category) || (!$category->visible && empty($_SESSION['admin'])))
                return false;
            $this->design->assign('category', $category);
            $filter['category_id'] = $category->children;
        }
 

Теперь раздел сайта доступен по адресу типа site.ru/index.php?module=ProductsView&id=1

Далее небольшая правка .htaccess и категории будут вида site.ru/category/1/



#5 yr4ik

yr4ik
  • Фрилансер
  • 905 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:Украина Чернигов

Опубликовано 14.01.2019 - 15:25

Теперь раздел сайта доступен по адресу типа site.ru/index.php?module=ProductsView&id=1

Далее небольшая правка .htaccess и категории будут вида site.ru/category/1/

И дальше еще небольшая правка шаблонов для правильного формирования url ... 



#6 question

question
  • Пользователь
  • 107 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 15.01.2019 - 10:11

И дальше еще небольшая правка шаблонов для правильного формирования url ... 

В моём случае в tpl файлах шаблона все вхождения $c->url надо было заменить на $c->id, но это мой (частный) случай.

Теперь можно открывать разделы по адресу site.ru/category/1/

Ещё бы товары открывать по адресу site.ru/category/1/telefon, причём если товара в категории нет, выводить 404, было бы вообще офигенно.



#7 question

question
  • Пользователь
  • 107 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано Вчера, 12:38

Буду благодарен, если подскажете, как выводить товар по адресу site.ru/category/id/name, где name - имя товара, id - id категории, в которой этот товар содержится (во всех остальных случаях выводить 404 ошибку).



#8 phukortsin

phukortsin
  • Пользователь
  • 639 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано Вчера, 12:44

Буду благодарен, если подскажете, как выводить товар по адресу site.ru/category/id/name, где name - имя товара, id - id категории, в которой этот товар содержится (во всех остальных случаях выводить 404 ошибку).

 

Довольно хлопотно, нужны немалые индивидуальные доработки.

 

Похожий вопрос возникал еще в 2014 году

http://forum.simplac...симпле/?p=65128

специалисты на него до сих пор никак не срегировали...



#9 question

question
  • Пользователь
  • 107 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано Вчера, 12:53

Видите ли, прописать в .htaccess вместо product регулярное выражение, которое означает "только цифры", кажется (поправьте, если ошибаюсь), это ^[0-9]+$ - минута делов, таким образом товар с url telefon1 будет открываться по адресам:

site.ru/1/telefon1

site.ru/2/telefon1

site.ru/29649/telefon1

site.ru/2/telefon1



#10 phukortsin

phukortsin
  • Пользователь
  • 639 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано Вчера, 13:31

Видите ли, прописать в .htaccess вместо product регулярное выражение, которое означает "только цифры", кажется (поправьте, если ошибаюсь), это ^[0-9]+$ - минута делов, таким образом товар с url telefon1 будет открываться по адресам:

site.ru/1/telefon1

site.ru/2/telefon1

site.ru/29649/telefon1


site.ru/2/telefon1

 

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

 

Подозреваю, что в Вашем будущем решении, если оно появится, быстро найдутся недостатки, причем довольно значимые...

 

И пишите сразу точно и аккуратно, какую задачу решаете. Уже сейчас видно, что у Вас в #7 ставится один вопрос, а через несколько минут в #9 решается уже другой...






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых