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

Рухавік Shopware SEO

  1. захоўванне
  2. Налада URL-адрасоў
  3. Стварэнне URL-адрасоў SEO
  4. Кананічна ўсе спасылкі
  5. Маршрут
  6. Міграцыя адрасоў
  7. Настройка правілаў замены
  8. Дадатковыя зменныя для разумнага шаблона SEO

Тэрмін "SEO" абагульняе розныя функцыі і функцыі, накіраваныя на павышэнне рэйтынгу дадзенага сайта ў пошукавых сістэмах. Звычайна гэта ўключае семантычныя URL-адрасы, багатыя фрагменты, метатэгі і аптымізаваныя пошукавыя структуры HTML і тэксты. Хаця большасць з гэтых метадаў не так цікава з тэхнічнага пункту гледжання, апрацоўка "кажучых URL-адрасоў" ("SEO-URL", "фантазіі URL") звычайна ўключае ў сябе маршрутызацыю запытаў, а таксама генерацыю атрыманага HTML-кода, а таксама з'яўляецца агульнай мэтай пашырэння. Па гэтай прычыне гэты пост у блогу будзе ахопліваць апрацоўку SEO-адрасоў SEO-адрасамі Shopware адносна стварэння, маршрутызацыі і нармалізацыі URL-адрасоў.

Па гэтай прычыне гэты пост у блогу будзе ахопліваць апрацоўку 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 у пэўны прамежак часу)

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?