- захоўванне
- Налада URL-адрасоў
- Стварэнне URL-адрасоў SEO
- Кананічна ўсе спасылкі
- Маршрут
- Міграцыя адрасоў
- Настройка правілаў замены
- Дадатковыя зменныя для разумнага шаблона SEO
Тэрмін "SEO" абагульняе розныя функцыі і функцыі, накіраваныя на павышэнне рэйтынгу дадзенага сайта ў пошукавых сістэмах. Звычайна гэта ўключае семантычныя URL-адрасы, багатыя фрагменты, метатэгі і аптымізаваныя пошукавыя структуры HTML і тэксты. Хаця большасць з гэтых метадаў не так цікава з тэхнічнага пункту гледжання, апрацоўка "кажучых URL-адрасоў" ("SEO-URL", "фантазіі URL") звычайна ўключае ў сябе маршрутызацыю запытаў, а таксама генерацыю атрыманага HTML-кода, а таксама з'яўляецца агульнай мэтай пашырэння. Па гэтай прычыне гэты пост у блогу будзе ахопліваць апрацоўку SEO-адрасоў SEO-адрасамі Shopware адносна стварэння, маршрутызацыі і нармалізацыі URL-адрасоў.
Звычайна ў краме існуе нейкае тэхнічнае прадстаўленне любога дадзенага URL. Так, напрыклад, URL SEO http://my-shop.com/living-world будзе ўнутрана супастаўлены з такім прадстаўленнем, як http://my-shop.com/frontend/listing/index/?sCategory=8. Нягледзячы на тое, што першы прыклад аптымізаваны для чытання чалавекам і SEO, другое прадстаўленне можа апрацоўвацца ўнутранымі механізмамі маршрутызацыі Shopware. Ён скажа маршрутызатару, што бягучы запыт перайдзе да indexAction кантролера лістынга ў прасторы імёнаў інтэрфейсу і мае параметр пад назвай sCategory, які ў гэтым выпадку ўстаноўлены ў 8. Пасля вызначэння адказнага кантролера, кантролер будзе апрацоўваць запыт і генераваць нейкі адказ, які зноў павінен утрымліваць URL-адрасы SEO для наступных запытаў.
Хоць адлюстраванне ўяўленняў SEO і ўнутранага прадстаўлення тэарэтычна можа быць сфарміравана на лету (напрыклад, імя SEO заўсёды вынікае з назвы катэгорыі), на практыцы існуе некалькі патрабаванняў, якія робяць тэму крыху больш складанай:
- Гісторыя: Пасля змены URL SEO, стары трэба перанакіраваць з правільным кодам стану на новы URL.
- Зніжэнне дублікатаў: У розных URL-адрасах не можа быць даступна адно і тое ж змесціва, бо гэта можа паменшыць рэйтынг адпаведнай старонкі вынікаў. Замест гэтага заўсёды павінен быць кананічны адрас змесціва, на які будуць накіраваны іншыя адрасы.
- Налада: Карыстальнік хоча мець магчымасць наладзіць URL SEO ў высокай ступені.
захоўванне
Shopware захоўвае ўсе URL-адрасы SEO ў табліцы s_core_rewrite_urls.
Калонка Ідэнтыфікатар выкарыстання Унутраны ідэнтыфікатар org_path Унутранае / тэхнічнае прадстаўленне URL, напрыклад, sViewport = blog & sCategory = 17 path Чытанне чалавечым / SEO URL, напрыклад, тэндэнцыі-навіны / галоўны (Bool) - гэта кананічнае прадстаўленне URL. Нестандартныя URL-адрасы заўсёды будуць перанакіраваны на галоўны падсэкс-адрас URL, да якога належыць гэты URL (напрыклад, 1 = нямецкі магазін, 2 = ангельскі магазін)
У залежнасці ад вашай канфігурацыі ёсць "стратэгіі абнаўлення" для стварэння гэтай табліцы:
- Live (падчас запытаў інтэрфейсу, у наладжвальным інтэрвале пад назвай "Кэш маршрутызацыі")
- Кіраўніцтва (націснуўшы кнопку « Аднавіць SEO індэкс « кнопку »)
- Cronjob (Па cronjob у пэўны прамежак часу)
Налада URL-адрасоў
Пры пабудове табліцы Shopware будзе ітэраваць усе адпаведныя запісы SEO (напрыклад, прадукты, катэгорыі, СМІ і блогі) і стварае запісы SEO ў табліцы s_core_rewrite_urls. Як будзе выглядаць URL, напрыклад, для прадукту, можна наладзіць з дапамогай разумных радкоў шаблонаў:
На скрыншоце вышэй шаблоны URL SEO вылучаюцца. Шаблон прадукту выглядае наступным чынам:
{sCategoryPath articleID = $ sArticle.id} / {$ sArticle.id} / {$ sArticle.name}
Гэта пакажа Shopware, што URL SEO для прадукту складаецца з трох частак:
- кананічная катэгорыя спасылкі на прадукт, напрыклад, харчаванне / хлеб /
- ідэнтыфікатар прадукту, напрыклад, 17
- назва прадукту, напрыклад, "белы хлеб 300г"
Усё гэта разам створыць такі URL:
/ ежа / хлеб / 17 / бел-хлеб-300г
Прабелы будуць аўтаматычна пераўтвораны ў працяжнікі. Тэхнічна няма ніякіх падстаў, каб прадукт быў у URL URL. Паколькі URL-адрасы SEO павінны быць унікальнымі ва ўсёй сістэме, гэта можа быць карысна, аднак, каб уключыць гэты ідэнтыфікатар.
У Wiki Shopware ёсць некалькі прыкладаў, якія тычацца канфігурацыі шаблонаў SEO , уключаючы прыклад для URL-адрасоў SEO-канкрэтных прадуктаў.
Стварэнне URL-адрасоў SEO
У раздзелах вышэй мы разгледзелі, як Shopware выклікае генерацыю URL-адрасоў SEO і як можна наладзіць гэтыя шаблоны URL-адрасоў SEO. Але як / дзе наогул Shopware стварае гэтыя URL?
Адпаведны клас тут - sRewriteTable, які можна знайсці ў рухавіку / Крама / Ядро / sRewriteTable.php вашай ўстаноўкі Крама. Разгледзім адпаведную логіку гэтага класа:
- \ sRewriteTable :: $ replaceRules: Змяшчае спіс перакладу літар для правільнага памяншэння спецыяльных знакаў (напрыклад, ö, ä or ü). Большая частка гэтага спісу натхніла slugify праекта , Падчас пакалення SEO, Shopware выкліча \ sRewriteTable :: sCleanupPath для таго, каб замяніць сімвалы, вызначаныя ўласцівасці sRewriteTable :: $ replaceRules
- \ sRewriteTable :: sCreateRewriteTable: Гэта асноўная кропка ўваходу ў генерацыю URL SEO і выклікае ўсе наступныя метады
- \ sRewriteTable :: baseSetup: Будзе выкліканы да пачатку фактычнага пакалення URL-адрасы SEO. Ініцыялізуе рухавік шаблонаў smarty, напрыклад, з аб'ектам канфігурацыі Shopware, зарэгіструе дадатковыя модулі smarty, а таксама паспрабуе ўсталяваць vars config_ memoryit / max_execution_time.
- \ SRewriteTable :: sCreateRewriteTableCleanup: Гэты метад выдаляе SEO-адрасы прадуктаў / катэгорый / блогаў / статычных старонак і г.д., дзе спасылкі (напрыклад, прадукт) больш не існуюць. Крама ніколі не выдаляе SEO-адрасы элементаў, якія ўсё яшчэ існуюць.
- \ SRewriteTable :: sCreateRewriteTableStatic: будзе генераваць статычныя URL-адрасы, якія могуць быць створаны ў канфігурацыі SEO. Статычныя URL-адрасы дазваляюць дадаваць SEO-URL для карыстацкіх кантролераў і мэтавых старонак
- \ sRewriteTable :: sCreateRewriteTableCategories: Ітэрацыя ўсіх катэгорый крамаў, ужыванне да іх шаблона катэгорый і напісаць выніковы URL SEO ў базу дадзеных
- \ sRewriteTable :: sCreateRewriteTableBlog: Ітэрацыя ўсіх блогаў Shopware, ужыванне да іх шаблона блога і напісаць выніковы URL SEO ў базу дадзеных
- \ sRewriteTable :: sCreateRewriteTableCampaigns: Ітэрацыя ўсіх светаў пакупак Shopware, ужыванне да іх шаблона эмоцый і напісаць у базу дадзеных URL URL SEO
- \ sRewriteTable :: sCreateRewriteTableАртыкулы: Ітэрацыя ўсіх прадуктаў Shopware, ужыванне да іх шаблона прадукту і напісаць выніковы URL SEO ў базу дадзеных
- \ sRewriteTable :: sCreateRewriteTableContent: Ітэрацыя ўсіх формаў крамаў і статычных старонак, прымяняецца да іх адпаведны шаблон і напісаць у базу дадзеных URL URL SEO.
- \ sRewriteTable :: sCreateRewriteTableSuppliers: Ці будзе ітэрацыя ўсіх пастаўшчыкоў крамаў, прымяняць да іх адпаведны шаблон і напісаць у базу дадзеных URL URL SEO
Кананічна ўсе спасылкі
Пасля стварэння спасылак SEO, як апісана вышэй, Shopware будзе выкарыстоўваць гэтыя спасылкі SEO, а не тэхнічныя спасылкі ўсюды ў шаблоне.
Найбольш распаўсюджаным выклікам для стварэння URL SEO з тэхнічнай інфармацыі з'яўляецца:
$ query = array ('controller' => 'my-controller', 'module' => 'frontend', 'action' => 'my-action', 'some-param' => 123456,); $ url = Shopware () -> Router () -> assemble ($ query);
Унутрана гэта будзе шукаць URL SEO для маршруту http://my-shop.com/frontend/my-controller/my-action?some-param=123456 і раздрукаваць яго, калі ён даступны. Пры выкарыстанні smarty вы таксама можаце выкарыстоўваць убудова URL - ён таксама будзе клапаціцца аб правільнай перапісцы URL-адрасоў:
{url module = frontend controller = дзеянне my-controller = my-action some-param = 123456}
Паколькі важна з пункту гледжання SEO, каб пераканацца, што маршруты SEO заўсёды адлюстроўваюцца, Shopware таксама знойдзе ўсе URL-адрасы ў сфармаваным HTML-кодзе і перазапісаць іх перад вяртаннем старонкі карыстачу. Па гэтай прычыне не трэба перапісваць URL-адрасы ў кодзе - Shopware аўтаматычна клапоціцца пра гэта ў метадзе \ Shopware_Plugins_Core_PostFilter_Bootstrap :: filterUrls, які запускае \ Shopware \ Components \ Routing \ Router :: generList. Увесь працэс стварэння URL-адрасоў SEO у стэку Shopware называецца "зборка".
Фактычная апрацоўка генерацыі URL адбудзецца ў \ Shopware \ Components \ Routing \ Router :: assemble - \ Shopware \ Components \ Routing \ PreFilterInterface будзе нармалізаваць ўваход, \ Shopware \ Components \ Routing \ GeneratorInterface будзе генераваць URL і \ Shopwareware. \ Кампаненты \ Маршрутызацыя \ PostFilterInterface нармалізуе выхад.
Маршрут
Мы ўжо абмяркоўвалі пытанні стварэння SEO-URL, а таксама вывад гэтых URL-адрасоў у шаблоне. Як Shopware апрацоўвае такія URL-адрасы, калі запыт трапляе на сервер, напрыклад, http://my-shop.com/trends-news?
Паколькі Shopware 5 цэнтральным кампанентам гэтага з'яўляецца \ Shopware \ Components \ Routing \ Router. У яго ёсць унутраная калекцыя \ Shopware \ Components \ Routing \ MatcherInterface, якая адпавядае дадзенаму URL з унутраным URL. Калі дадзены далучальнік можа маршрутаваць дадзены URL-адрас, ён верне масіў вынікаў, такіх як:
Array ([module] => віджэты [controller] => emotion [action] => index [emotionId] => 1 [controllerName] => index)
Калі сумяшчальнік не можа апрацаваць запыт, ён верне зыходны URL. Матчеры выконваюцца ў наступным парадку, калі адзін матчы вяртае сапраўдны вынік, астатнія матчы не будуць выкліканы зусім.
- \ Крамнае абсталяванне \ Кампаненты \ Маршрутызацыя \ Матэрыялы \ RewriteMatcher: будзе шукаць URL-адрас у табліцы s_core_rewrite_urls.
- \ Shopware \ Components \ Routing \ Matchers \ EventMatcher: Будзе выходзіць падзея, таму, напрыклад, распрацоўшчыкі плягінаў могуць апрацоўваць запыт:
$ event = $ this-> eventManager-> notifyUntil ('Enlight_Controller_Router_Route', ['request' => $ request, 'context' => $ context]);
- \ Крамнае абсталяванне \ Кампаненты \ Маршрутызацыя \ Матэрыялы \ DefaultMatcher: Будзе апрацоўвацца тэхнічныя URL-адрасы, такія як / frontend / лістынг / sCategory = 3
Міграцыя адрасоў
Пры пераходзе з існуючых крам у Shopware часта ўзнікае пытанне, як імпартаваць існуючыя URL-адрасы. Як правіла, існуе чатыры спосабу справіцца з гэтым:
- Імпарт старых URL-адрасоў SEO ў табліцу s_core_rewrite_urls. Паколькі Shopware не выдаляе гэтыя URL-адрасы SEO, пакуль будуць існаваць адпаведныя прадукты, гэтыя URL-адрасы застануцца, нават калі вы адновіце SEO-адрасы ўнутры Shopware. Звычайна вы ўсталюеце асноўную значэнне 0, каб прымусіць Shopware перанакіраваць старыя URL-адрасы SEO на новыя URL-адрасы SEO у стылі Shopware.
- Выкарыстанне падзеі Enlight_Controller_Router_Route: Як апісана вышэй, \ Shopware \ Components \ Routing \ Matchers \ EventMatcher будзе выкарыстоўвацца, калі Shopware не можа апрацоўваць URL самастойна, таму плягін мог апрацоўваць гэтыя URL-адрасы.
- \ Shopware \ Components \ Routing \ Router :: setMatchers: Калі вы аддаеце перавагу больш падыходны да ААП падыход да гэтай падзеі, вы таксама можаце дадаць свой уласны супадзенне ва ўнутраную калекцыю матчыкаў маршрутызатара, і ваш матчэр апрацоўвае старыя URL-адрасы SEO.
- Запуск цыкла PreDispatch / Dispatch: Калі вашы старыя URL-адрасы ўтрымліваюць унікальны ідэнтыфікатар - напрыклад, ідэнтыфікатар прадукту або нумар заказу - можна таксама напісаць убудова, якое выяўляе такія URL-адрасы ў пачатку падзеі, робіць дынамічны пошук новага URL-адраса і перанакіроўвае на гэты URL з выкарыстаннем адпаведнага кода стану. Апісаныя рашэнні, аднак, больш відавочныя і павінны быць пераважнымі.
Настройка правілаў замены
ЗамяніцьRules у класе sRewriteTable не могуць быць зменены непасрэдна, вы можаце стварыць перадачу да або пасля для метаду \ sRewriteTable :: sCleanupPath, каб змяніць выніковы URL для вашых патрэб.
Дадатковыя зменныя для разумнага шаблона SEO
Гледзячы на метады генерацыі SEO, апісаныя вышэй, вы ўбачыце, што Shopware звычайна выклікае функцыю сховішча, якая, напрыклад, вяртае ўсе аб'екты блога ўсю неабходную інфармацыю.
/ ** @var $ сховішча \ Крама для крамы \ Модэлі \ Блог \ Рэпазітар * / $ blogArticlesQuery = $ this-> modelManager-> getRepository ('Крама \ Модэлі \ Блог \ Блог') -> getListQuery ($ blogCategoryIds, $ offset, $ мяжа);
Або:
$ suppliers = $ this-> modelManager-> getRepository ('Крама і прылады \ Мадэлі \ Артыкул \ Пастаўшчык') -> getFriendlyUrlSuppliersQuery ($ offset, $ limit) -> getArrayResult ();
Падключэнне гэтых метадаў у адпаведным сховішчы дазволіць вам пашырыць даступныя палі, напрыклад, шаблон блога. Для прадуктаў ёсць звычайны кантэкстны запыт SEO, які можна падлучыць: \ sRewriteTable :: getSeoArticleQuery, але існуе нават больш зручная падзея фільтра, якую можна выкарыстоўваць для маніпуляцыі палёў і зменных для любога прадукту:
$ result = Shopware () -> Events () -> filter ('Shopware_Modules_RewriteTable_sCreateRewriteTableArticles_filterArticles', $ result, array ('shop' => Shopware () -> Shop () -> getId ());
Такім чынам, наогул кажучы, падключэнне да сховішчаў або метадаў sCreateRewriteTable * дасць вам даволі добры доступ да пакалення SEO, вам, вядома, аддаюць перавагу адпаведныя падзеі, калі яны маюцца.
Com/frontend/listing/index/?Але як / дзе наогул Shopware стварае гэтыя URL?
Com/frontend/my-controller/my-action?
Com/trends-news?