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


Простейший модуль ЧПУ


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

#141 badisoft

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

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

Отправлено 12 March 2012 - 05:01 PM

Абсолютно, не нужная вещь. Так как по умолчанию в модуле, ссылка должна быть закончена ( товар, новость, статья )

Я готов в это поверить. Более того, я давно уже в это поверил, раз уж столько людей говорят одно и то же и думаю уже, как бы покрасивее все это программно реализовать. Но ведь это не вопрос веры, а обычное техническое решение, у которого должна быть причина почему надо именно так, а не иначе.
Пока я не увидел не то, чтобы объяснения, а даже мало-мальского намека на ответ ПОЧЕМУ в двух вопросах:
1. Почему надо делать 301-й редирект для ссылки, заканчивающейся слэшом, если вдруг слеша на конце нет. Очевидно, что пользователю браузера по барабану, какой там редирект, лишь бы показало правильно, т.е. это нужно именно для автоматизированной системы, которая где-то (где?) нашла неверную ссылку и по ней полезла. Чтобы в дальнейшем лазила по верной.
2. Почему не надо так делать для ссылки, заканчивающейся на .html, ведь шанс "где-то найти" неверную ссылку без слэша и без html примерно одинаков.
Подчеркиваю - вопрос не "надо ли или не надо так делать?", а "ПОЧЕМУ надо или не надо та делать?"
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#142 ashmanov

    Новичок

  • Пользователи
  • Pip
  • 7 сообщений
Репутация: 0
Начинающий

Отправлено 12 March 2012 - 05:13 PM

Ох!

1. Почему надо делать 301-й редирект для ссылки, заканчивающейся слэшом, если вдруг слеша на конце нет. Очевидно, что пользователю браузера по барабану, какой там редирект, лишь бы показало правильно, т.е. это нужно именно для автоматизированной системы, которая где-то (где?) нашла неверную ссылку и по ней полезла. Чтобы в дальнейшем лазила по верной.

Пример:
При указании не верной ссылки на категорию ( не до конца скопировал, или еще что-то...) на форуме, блоге и т.д , вокруг ссылки идет анкор. Яндекс индексирует эту ссылку с форума, блога и т.д . Получается как?!
[HIDE="1"]http://cpu.badisoft.ru/ustroystva-dlya-chteniya-elektronnyih-knig/[/HIDE]
Видим контент главной страницы, который не совпадает с тем что мы продвигаем в поиске ( закупаем ссылки, и т.д ).
Некоторые биржи ссылок (без рекламы), при добавлении ссылок анализируют ее и автоматом добавляют на конце слеш ( если нет расширения .html, .php, .aspx ....) . Потом приходиться править руками.Все факторы не распишешь здесь.


2. Почему не надо так делать для ссылки, заканчивающейся на .html, ведь шанс "где-то найти" неверную ссылку без слэша и без html примерно одинаков.
Подчеркиваю - вопрос не "надо ли или не надо так делать?", а "ПОЧЕМУ надо или не надо та делать?"


Ну вот здесь, еще можно согласиться. Если Вам такое решение видится правильным, пожалуйста. На выходе все равно получим .html
  • 0

#143 ashmanov

    Новичок

  • Пользователи
  • Pip
  • 7 сообщений
Репутация: 0
Начинающий

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

Последние полгода, к нам стали обращаться люди по вопросам SEO, на скрипте ShopCMS. Нам интересно развитие данного модуля. Так как офф.поддержка молчит сутками. Если реализация нашего видения этого модуля обретет жизнь, мы Вам будем очень благодарны.
  • 0

#144 badisoft

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

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

Отправлено 12 March 2012 - 06:49 PM

Последние полгода, к нам стали обращаться люди по вопросам SEO, на скрипте ShopCMS. Нам интересно развитие данного модуля. Так как офф.поддержка молчит сутками.

Хм... Какая связь между официальной поддержкой ShopCMS и модулем ЧПУ (любым)?

Если реализация нашего видения этого модуля обретет жизнь, мы Вам будем очень благодарны.

Сразу возникает три вопроса:
1. Почему не взять другой модуль ЧПУ, вылизанный и отлаженный? Скажем, коммерческий liteseotools, где "любой каприз за ваши деньги"? Он стоит меньше 1тыр и даже в штатном виде позволяет то, что Вы хотите. Собственно, любой другой модуль это позволяет, т.к. только у меня НЕЛЬЗЯ задавать ЧПУ-ссылки вручную.
2. Почему не дать мой модуль своему програмисту, пускай изменяет как хочет? Я нигде никаких запретов не писал. Размер кода 5 килобайт, для ЛЮБОГО программиста это "между делом".
3. В чем состоит мой интерес делать то, что я не хочу делать сразу по трем пунктам, а достаточно одного?
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#145 ashmanov

    Новичок

  • Пользователи
  • Pip
  • 7 сообщений
Репутация: 0
Начинающий

Отправлено 12 March 2012 - 06:54 PM

Хм... Какая связь между официальной поддержкой ShopCMS и модулем ЧПУ (любым)?

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

1. Почему не взять другой модуль ЧПУ, вылизанный и отлаженный? Скажем, коммерческий liteseotools, где "любой каприз за ваши деньги"? Он стоит меньше 1тыр и даже в штатном виде позволяет то, что Вы хотите. Собственно, любой другой модуль это позволяет, т.к. только у меня НЕЛЬЗЯ задавать ЧПУ-ссылки вручную.

Ваш вариант, нам подходит полностью.
Купили вернее gsm-group купил, установил одному клиенту. Ему не понравилось или не удобно было(до конца не в курсе)

2. Почему не дать мой модуль своему програмисту, пускай изменяет как хочет? Я нигде никаких запретов не писал. Размер кода 5 килобайт, для ЛЮБОГО программиста это "между делом".

Лучше автора, исполнителя нет.

3. В чем состоит мой интерес делать то, что я не хочу делать сразу по трем пунктам, а достаточно одного?

Можно Вас попросить реализовать ОДИН функционал данного модуля, под нас? Ваши условия?
  • 0

#146 badisoft

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

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

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

Ваш вариант, нам подходит полностью.
Купили вернее gsm-group купил, установил одному клиенту. Ему не понравилось или не удобно было(до конца не в курсе)

Мой модуль - УПРОЩЕННАЯ версия liteseotools. Т.е. в нем много чего нет, но мне в голову не приходит, что же в нем такого есть, чего нет в liteseotools.
Пожалуй, только отдача sitemap.xml на лету, да и то не так давно.

Лучше автора, исполнителя нет.

Автор увидел PHP меньше полугода назад, до того про него знать не знал. Это вторая (!) программа на этом языке, если не считать мелочей в три-пять строк. Уверяю Вас, любой нормальный программист сделает лучше и быстрее. Авторство для модуля в 5 килобайт ничего не дает, куда больше дает опыт и умение.

Можно Вас попросить реализовать ОДИН функционал данного модуля, под нас?

Можно. Все остальные подписчики в "моих" двух темах как-то не заходили столь издалека - "можно ли вас попросить?" - а просто писали "а не могли бы Вы сделать то и то, исправить это и это". Сразу условие - просить ТУТ. Чтобы было доступно для обсуждения.

Ваши условия?

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

Но мне все равно кажется, что правильнее отдать задачу профессиональному программеру, который ЭТИМ ЗАРАБАТЫВАЕТ, а не бывшему 20 лет назад программеру, для которого оно нынче хобби и развлекуха. Даже если он автор. Просто другой уровень ответственности и отношения к работе.

PS. Вот кстати! eugeny_wb, как я понимаю, переделывал мой модуль, т.е. прекрасно представляет, как он работает. И для него это как раз не хобби. Почему нет?
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#147 micehide

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

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

Отправлено 12 March 2012 - 11:26 PM

ВНИМАНИЕ! Прекращаем выяснять отношения в теме!
Нарушители будут наказываться!

  • Все личные деловые предложения насчет модуля - в личку badisoft
  • При наличии желания продолжить развернутое обсуждение SEO-вопросов, предлагаю переместиться в соответствующий раздел форума: Поисковая оптимизация

Администрация считает поставленые вопросы о виде ссылок в данном ЧПУ-модуле полностью раскрытыми, дальнейшее программное решение - за разработчиком модуля и всеми желающими присоединиться к разработке.
  • 0

#148 badisoft

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

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

Отправлено 12 March 2012 - 11:39 PM

Сделал версию в виде cpu.badisoft.ru/ustroystva-dlya-chteniya-elektronnyih-knig/ustroystva-Digma/XXXXXXX.html
1. категории в ЧПУ пишутся две последних в дереве (для верхнего уровня категорий, естественно, одна), разделяются и заканчиваются слэшем.
2. товары предваряются теми же двумя (одной) последними категориями, сам товар выводится как productID.html, разделяются слэшем.
Лежит в каталоге old_version/cat_cat_id_version.
Сделано из основной рабочей версии. Изменяемые строки закомментированы, под ними находятся измененные.
Редиректов как не было, так и нет! Не все сразу.

---------- Сообщение объединено ----------

Намекаю, если кому не понятно - просьба сделать модуль с некой отличной от штатной функциональностью не является ЛИЧНЫМ ПРЕДЛОЖЕНИЕМ, не надо мне его слать в личку. Описываете тут, что хочется сделать, обсуждаем. С большой вероятностью уточняем и находим наилучший вариант решения.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#149 badisoft

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

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

Отправлено 13 March 2012 - 04:01 PM

Сделал версию в виде cpu.badisoft.ru/ustroystva-dlya-chteniya-elektronnyih-knig/ustroystva-Digma/XXXXXXX.html

Нашел мелкую ошибку - в skip и all (страницы товара и "показать все") двоятся слэши и нет закрывающего слэша : site.ru/category//skip6
Исправить просто - в index.php заменить "/all" на "all/", а "/skip".$matches['offset']; на "skip".$matches['offset']."/";
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#150 badisoft

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

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

Отправлено 14 March 2012 - 02:48 PM

Очередные изменения и дополнения в текущей версии. Получилось довольно изящно и нересурсоемко.

1. предыдущая версия ЧПУ вида /Категория-Подкатегория-Товар "сдана в архив", т.е. перемещена в old_versions/cat-cat-name_version.
Текущей Линией Партии :) является ЧПУ вида /Категория/Подкатегория/ для категорий и /Категория/Подкатегория/Товар.html для товаров.

2. сделан "универсальный редирект 301". Кратко объясняю: Есть ЧПУ-таблица xxxx_cpu_table из двух полей - cpu_from и cpu_to. ЧПУ-ссылка ищется в поле cpu_to и если находится, то - по switch/case - заменяется (упрощенно говоря) на реальную ссылку из поля cpu_from. Так вот теперь в switch наряду с "category", "product", "page" и "show" появился еще один case "r301" для 301-го редиректа. Запись, где
cpu_to=/tovar_number_one
cpu_from=r301_/tovar-number-two.html
приведет к редиректу 301 с site.com/tovar_number_one на site.com/tovar-number-two.html, а в общем случае с любого заданного на любой заданный.
Редиректы "без слэша"->"со слэшем" для категорий и "без .html на конце"->"с .html на конце" для товаров, страниц и новостей вносятся в таблицу автоматически при генерации sitemap.xml, т.е. при запуске sitemap.php. Свои нужные редиректы можно вбить руками в любом SQL-редакторе.

3. в архиве появился файлик redirect.php. Он нужен для того, чтобы создать 301-е редиректы с предыдущей версии ЧПУ на текущую, если ЧПУ-ссылки предыдущей версии уже проиндексированы поисковиками. Например, как у меня на тестовом сайте. Для этого сделан еще один case "r301old".
После его выполнения редиректиться в, скажем, cpu.badisoft.ru/PocketBook/seriya-Pro/ будет не только cpu.badisoft.ru/PocketBook/seriya-Pro , но и старая ЧПУ-ссылка cpu.badisoft.ru/PocketBook-seriya-Pro. Аналогично и с товарами.
Подчеркиваю! Какая была в реальности предыдущая версия ЧПУ-ссылок redirect.php не проверяет, а генерит набор редиректов для МОЕЙ предыдущей версии, т.е. для cat-cat-name. Кому надо - перепишите под свою, там полтора килобайта кода и все очень просто.

4. Осталось сделать error 404 :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#151 gsm-group

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

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

Отправлено 15 March 2012 - 11:31 AM

При выполнении запроса: site.ru/sitemap.php

Ошибка синтаксического анализа XML: некорректно
Адрес: http:// site.ru/sitemap.php
Строка 1039, символ 119:


Аааа, понял походу. 3 товара одинаковы ( дубли ). Да хреновенько как-то.
Все таки правильное решение с дублями:

tovar.html
tovar-1.html
tovar-2.html

---------- Сообщение объединено ----------

И такой еще вопрос.

В файле cpu_functions.php как добавить конструкцию """=> "". Если в названии товара стоит ( " ), то при формировании ЧПУ ссылки, не учитывался этот знак?
  • 0

#152 badisoft

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

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

Отправлено 15 March 2012 - 12:16 PM

В файле cpu_functions.php как добавить конструкцию """=> ""

'"'=>""
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#153 gsm-group

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

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

Отправлено 15 March 2012 - 03:00 PM

И еще косячек ))) Если у товаров в названии присутствует заглавная Ё, то XML, не сформируется.
в файл cpu_functions.php, добавляем "Ё"=> "е". И все гуд.

---------- Сообщение объединено ----------

Не помогло:

'"'=>""


Помогло:

"""=> ""
  • 0

#154 badisoft

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

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

Отправлено 15 March 2012 - 04:19 PM

Очередные изменения-дополнения:

1. В функцию translit добавлены трансляции "Ё"=>"e","'"=>"",'"'=>"" (одиночная кавычка и двойная) и функция html_entity_decode(), чтобы оно работало.

2. Добавлена Error 404 для не существующих (не верных) ссылок. Если есть файл cpu/404.html, то кроме header-а с номером ошибки браузеру отдается и этот файл, можно там что-нибудь веселенькое написать :). Правда, эксплорер все равно по этой ошибке показывает свой локальный файл.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#155 gsm-group

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

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

Отправлено 15 March 2012 - 04:36 PM

Помогите с установкой пожалуйста. Отписал в личку.
  • 0

#156 badisoft

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

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

Отправлено 15 March 2012 - 06:07 PM

Упс... пропустил точку в ".html" у ньюсов. Исправлено.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#157 badisoft

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

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

Отправлено 15 March 2012 - 09:44 PM

Помогите с установкой пожалуйста. Отписал в личку.

Впервые столкнулся. Поправил. В index.php есть массив $matches, у которого я использую буквенные индексы $matches['category'], $matches['offset'], $matches['showall']. В Вашей версии PHP у этого массива индексы почему-то только цифровые. В данном случае это $matches[1], $matches[4], $matches[5]. Аналогично с товарами, ньюсами и страницами, но там используется только один элемент массива $matches (с индексом product,news и page соответственно), его надо заменить на [1].

Либо это особенность версии PHP, либо, что скорее всего, какая-то настройка PHP. В общем, с "циферками" оно будет работать всегда, но менее читабельно.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#158 badisoft

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

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

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

Очередные изменения-дополнения:
1. мелкие правки по мотивам чужих проблем, которые попадались (кодировка etc).
2. добавил в /cpu файлик 404.php. Теперь при ошибке 404 первым делом ищется он (и выполняется), а если не найден, то ишется и отдается 404.html.
Правда, повторюсь, клиентам с IE от этого ни тепло, ни холодно.

PS. С массивом $matches в вышеописанной "PHP Version 5.2.6-1+lenny13" оказался довольно необычный глюк.
Есть регексп: '/\\/?category_(?[0-9]+)((_offset_(?[0-9]+))|(?_show_all))?\\.html/'
в нем есть три именованных шаблона (или как там они правильно называются) - , и .
функция preg_match() заполняет массив как и положено, с цифровыми и именными индексами одновременно, а вот preg_replace_callback() - только с цифровыми. ИМХО, явный глюк. В PHP 5.2.17 и в 5.3.* обе функции работают нормально.

---------- Сообщение объединено ----------

Один из участников темы (почему-то в личке) предложил сделать define ('CPU_ENABLE',true) и в зависимости от установки этого дефайна либо модуль работает штатно, как он сейчас и работает, либо (при false) отключается плюс делает 301-й редирект ЧПУ-шных ссылок в штатные. Т.е. false эквивалентно деинсталляции модуля, но присутсвует редирект-301 с ЧПУ-ссылок на "безмодульные", Мне надобность такого расширения представляется сомнительной, но мнения выслушаю и приму к сведению, сделать это ОЧЕНЬ не слoжно.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#159 ecco

    Пользователь

  • Download User
  • PipPip
  • 27 сообщений
Репутация: 11
Начинающий

Отправлено 16 March 2012 - 10:28 PM

Мне надобность такого расширения представляется сомнительной, но мнения выслушаю и приму к сведению, сделать это ОЧЕНЬ не слoжно.


Пару раз сталкивался при отладке что нужно было посмотреть на вид старых урлов и еще чего то и приходилось переименовывать файл index_old в index а существующий index во что нибудь еще и обратно. Возможно и есть некий смысл в том чтобы менять значение у переменной для этих случаев - все же меньше хлопот, хотя программист из кода все увидит.
  • 0

#160 gsm-group

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

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

Отправлено 17 March 2012 - 08:10 PM

Очередная порция ))))

1.Почему-то при переходе в админку из блока ( по ссылке администрирование), получаю. site.ru/категория/admin.php
2.При методе работы корзины через Ajax. Вываливается окно "идет добавление товара" и все, тишина. При обновлении страницы, товара в корзине нет. При стандартной работе корзины все ОК.
  • 0