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


Простенький модуль ЧПУ, версия 2


  • Вы не можете ответить в тему
Сообщений в теме: 155

#81 Salp

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 218 сообщений
Репутация: 54
Продвинутый

Отправлено 28 January 2015 - 02:44 PM

А если по какой-либо причине для штатного URL не задан ЧПУ? :)

Пусть тогда страничка товара или новости открывается, как и раньше, как страница верхнего уровня.
domen.com/page_123.html
но не
domen.com/любое_кв-во_любых_подкатегорий/-*-/page_123.html
ааа даже так работает:
domen.com/любое_кв-во_любых_подкатегорий/-*-/page_123.html/любая_ерунда/
лишь бы ссылка в старом формате в урле встретилась
  • 0

#82 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 28 January 2015 - 05:04 PM

Пусть тогда страничка товара или новости открывается, как и раньше, как страница верхнего уровня.

Пусть открывается. Мне не жалко :).
Тот $replace = array(, который Вы в предыдущем письме предлагали убрать именно это и делает.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#83 Salp

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 218 сообщений
Репутация: 54
Продвинутый

Отправлено 28 January 2015 - 05:50 PM

Тот $replace = array(, который Вы в предыдущем письме предлагали убрать именно это и делает.

Он убирает неправильные ссылки со страниц, но не дает 404 для тех, которые уже проиндексировались, а это появление дублей и, как следствие, понижение рейтинга страниц.
Дописал вывод canonical для каждой страницы - помогает, но долго ждать, пока обновится индекс.
Как вариант, предлагаю после каждой проверки
# если нет ЧПУ-ссылки, то проверяем существование такой страницы и переходим к этой странице если она есть
elseif (preg_match(

добавлять:
if ($matches[0]!=$_GET['cpu']) return false;

например, для страниц:
	elseif (preg_match(PAGE_PATTERN,$_GET['cpu'],$matches))
{
if ($matches[0]!=$_GET['cpu']) return false;

Не особо красиво получилось. Не подскажите, как сделать проще проверку строки на полное соответствие регулярному выражению?
Можно было бы несколько упростить код.
  • 0

#84 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 28 January 2015 - 07:34 PM

Он убирает неправильные ссылки со страниц, но не дает 404 для тех, которые уже проиндексировались

Я ничего не понял из вышенаписанной сумбурности. Этот replace ничего не убирает. Он просто добавляет стартовый слэш к штатным ссылкам на странице, чтобы они были "условно абсолютными" (от корня), а не относительными (от места вызова). В ShopCMS без ЧПУ этой проблемы нет вообще, т.к. там ВСЕ ссылки идут от корня, поэтому штатные ссылки без слэша, там он избыточен.

Мне кажется, что Вы путаете две проблемы - дописывание слэша к штатным ссылкам (выше я уже писал, зачем это надо) и множественность правильно разрешаемых ссылок. Одно к другому никакого отношения не имеет.

Отдельно интересно, каким это образом поисковики успели проиндексировать неправильные ссылки? :)

Решение проблемы множественных правильных ссылок (/page_1.html и /xxxx/page_1.html/yyyyy/ - редирект в одну и ту же ссылку):

в файле index.php
1. заменяем

define('CATEGORY_PATTERN','/\/?(category_(\d+)((_offset_(\d+))|(_show_all))?\.html)/');
define('PRODUCT_PATTERN' ,'/\/?(product_(\d+)\.html)/');
define('PAGE_PATTERN' ,'/\/?(page_(\d+)\.html)/');
define('NEWS_PATTERN' ,'/\/?(show_news_(\d+)\.html)/');

на

define('FROM_CATEGORY_PATTERN','/^\/?(category_(\d+)((_offset_(\d+))|(_show_all))?\.html)$/');
define('FROM_PRODUCT_PATTERN' ,'/^\/?(product_(\d+)\.html)$/');
define('FROM_PAGE_PATTERN' ,'/^\/?(page_(\d+)\.html)$/');
define('FROM_NEWS_PATTERN' ,'/^\/?(show_news_(\d+)\.html)$/');

define('TO_CATEGORY_PATTERN','/\/?(category_(\d+)((_offset_(\d+))|(_show_all))?\.html)/');
define('TO_PRODUCT_PATTERN' ,'/\/?(product_(\d+)\.html)/');
define('TO_PAGE_PATTERN' ,'/\/?(page_(\d+)\.html)/');
define('TO_NEWS_PATTERN' ,'/\/?(show_news_(\d+)\.html)/');

2. в функции replace_from_cpu заменяем вышеизмененные *_PATTERN на FROM_*_PATTERN

3. в функции replace_to_cpu заменяем вышеизмененные *_PATTERN на TO_*_PATTERN

Это не совсем оптимально, т.к. шаблоны практически повторяются и можно бы подумать, но думать лень :).
  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#85 Salp

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 218 сообщений
Репутация: 54
Продвинутый

Отправлено 29 January 2015 - 01:36 AM

Отдельно интересно, каким это образом поисковики успели проиндексировать неправильные ссылки? :)

Генерировать ЧПУ начал с категорий, а со страницы категории с ЧПУ страницы и новости стали видны как /категория/page_xxx.html и /категория/show_news_xx.html. В тоже время с главной они остались как /page_xxx.html и /show_news_xx.html.

Пока я хватился и сделал ЧПУ для всех страниц и новостей, гугль уже показал в вебмастере дубли.
В таком виде провисело буквально сутки и было исправлено(созданы все чпу страниц и новостей), но этого хватило для сканирования, а дубли уже показало через несколько дней.

Кстати, мой вариант решения вполне работает - устраняет доступность всех страниц по множественным урл и отдает 404 ошибки при попытке входа на страницу как /xxxx/page_1.html/yyyyy/
  • 0

#86 stasikons

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 68 сообщений
Репутация: 4
Начинающий

Отправлено 21 March 2015 - 03:38 PM

Установил данный модуль чпу на шаблон 3.1.3, появился белый экран, победил его по рекоммендации:

Нужно 1. Удалить в index.php строчку require_once "core/includes/database/".DBMS.".php"; 2. Из файла index_old.php скопировать в index.php include("core/includes/database/mysql.php"); 3. Удалить из index_old.php строку include("core/includes/database/mysql.php"); То есть проблема была как описывал автор чуть выше в подключении mysql.php

ЧПУ работает, но при добавлении товара в корзину окно добавления товара зависает, товар не добавляется. После обновления страницы товар появляется в корзине. Ошибок в логах не показывает, в админке их тоже нет.
То же самое происходит при добавлении товаров для сравнения.
До установки модуля корзина работала исправно.
Подскажите что такое может быть.....

Прикрепленные файлы

  • Прикрепленный файл  1.jpg   3.32К   2 Количество загрузок:

  • 0

#87 Salp

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 218 сообщений
Репутация: 54
Продвинутый

Отправлено 22 March 2015 - 12:25 PM

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

Если на главной и на стрницах без ЧПУ корзина работает, добавьте '/' в коде кнопки "В корзину" перед index.php.
onclick="open_window('/index.php?do=cart&addpr...

  • 0

#88 stasikons

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 68 сообщений
Репутация: 4
Начинающий

Отправлено 22 March 2015 - 07:24 PM

Если на главной и на стрницах без ЧПУ корзина работает, добавьте '/' в коде кнопки "В корзину" перед index.php. onclick="open_window('/index.php?do=cart&addpr...

Спасибо, помогло только в подробном описании, в кратком описании не помогло
  • 0

#89 Salp

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 218 сообщений
Репутация: 54
Продвинутый

Отправлено 22 March 2015 - 08:33 PM

Спасибо, помогло только в подробном описании, в кратком описании не помогло

Возможно, не везде заменили. Пройдитесь по шаблону product_brief.tpl.html поиском на index.php и сделайте везде(!) /index.php
В шаблоне несколько блоков с кодом кнопки "В корзину".
  • 0

#90 stasikons

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 68 сообщений
Репутация: 4
Начинающий

Отправлено 22 March 2015 - 09:13 PM

Нашел 8 штук, поменял, не работает ((
  • 0

#91 Salp

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 218 сообщений
Репутация: 54
Продвинутый

Отправлено 22 March 2015 - 09:55 PM

Проверьте, подгружается ли data/{$smarty.const.TPL}/user.js
это в head.tpl.html
Посмотрите ошибки в консоли отладчика Firefox или в расширении firebug
  • 0

#92 stasikons

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 68 сообщений
Репутация: 4
Начинающий

Отправлено 23 March 2015 - 10:26 AM

user.js подгружается
Ошибок нет
  • 0

#93 Salp

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 218 сообщений
Репутация: 54
Продвинутый

Отправлено 23 March 2015 - 12:47 PM

Ошибок нет

На нативном уровне советы кончились )). Хотя, еще в самом user.js добавить везде /
чтобы было вот так: '/index.php... вместо 'index.php...
  • 1

#94 stasikons

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 68 сообщений
Репутация: 4
Начинающий

Отправлено 23 March 2015 - 03:02 PM

в самом user.js добавить везде / чтобы было вот так: '/index.php... вместо 'index.php...

Ура!
Это решение помогло.
  • 0

#95 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 23 March 2015 - 03:32 PM

Ура! Это решение помогло.

Да, чтение инструкции иногда помогает:
19. в файле data/[шаблон]/user.js все index.php заменяем на /index.php
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#96 stasikons

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 68 сообщений
Репутация: 4
Начинающий

Отправлено 23 March 2015 - 04:24 PM

Да, чтение инструкции иногда помогает

Действительно, только я устанавливал модуль до 6 пункта, а там написано

Этого уже достаточно, если нет необходимости вручную задавать ЧПУ-ссылки.

.
  • 0

#97 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 23 March 2015 - 04:53 PM

Этого уже достаточно, если нет необходимости вручную задавать ЧПУ-ссылки.

Как я понимаю, этот пункт тоже не выполнен? :)
17. вносим изменения в файл .htaccess аналогично находящемуся в архиве или просто переписываем его поверх.

Но согласен, фраза про "этого уже достаточно" для текущей версии ЧПУ не верна. Убрал.
  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#98 stasikons

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 68 сообщений
Репутация: 4
Начинающий

Отправлено 23 March 2015 - 05:07 PM

17 выполнен. Файлы которые в архиве загрузил.

  • 0

#99 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 23 March 2015 - 05:11 PM

update: выложил в шапку последнюю версию.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#100 stasikons

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 68 сообщений
Репутация: 4
Начинающий

Отправлено 23 March 2015 - 05:23 PM

Какой то уже не простенький модуль получается))
  • 0