Napi debug: Pathauto olyan álnév mintát használ, ami nem is létezik

Kategória: 
Gyorstippek

Ma érdekes dologgal találkoztam: Be volt állítva a pathauto, hogy egy tartalomtípusnak csoportok/[title-raw] módon generáljon automatikusan álnevet. Igenám, de szerencsétlen csoport tartalomtípusom mindeképpen og/[title-raw] útvonalra szenvedte magát, egyszerűen semmiképpen nem volt hajlandó megenni a beállított álnév mintát.

A debug során csúnyán megkavarodtam, mivel benne volt az "og" az útvonalban, ráadásul csoporttartalomról volt szó, mindenáron az organic_groups modulnak, vagy valamelyik kiegészítőjének akartam betudni a hülyeséget.. Szétszedtem már mindent, töröltem a tartalomtípust, újra felraktam, majd adatbázismentésből vissza minden.

Na, ha már amúgyis phpmyadmin mélységben kell turkálni, nézzünk kicsit bele, hogy mit alkotott a pathauto modul az adatbázisban. (Természetesen mindezt csak azután, mitán az összes og kezdetű táblát átnyaltam..)

Azt tudni kell, hogy a pathauto a variables táblában tárolja a tartalomtípusok beállításait, mégpedig a name mezőben pathauto_node_[node_type]_pattern néven. Nosza debug, szedjük ki gyorsan ezeket rekordokat, és nézzük meg okával.
Ha már nem untam volna annyira a banánt, egy frappáns sql queryvel gyorsan kikaptam volna azt a pár sort, ami nekem kell, de mivel nem voltam kellőképpen motivált amúgyis pocsék sql szintaktikai tudásom pallérozásához a google segítségével, így pár laza kattintással inkább kinyomtam a képernyőre azt a cirka 1800 recordot.

És lőn világosság!

Ilyen sorok szerepeltek a táblában: pathauto_node_group_hu_pattern, pathauto_node_group_en_pattern, pathauto_node_group__pattern, és mellettük a serializált adatok ellenére is világosan látszott a gyilkos álnév minta: og/csoportok

Innentől ugye a megoldás evidens, kevésbé frappánsan kijelölve a betegség rákos gócpontjait laza delete recorddal megszabadulni álomrendszerünk mételyétől.

De nézzük mi is történt? Ez a rendszer valaha többnyelvűnek indult, i18n és társai meg az összes létező tartalomfordítási modullal bekapcsolva. Ilyenkor egyesével minden nyelvhez lehet álnevet beállítani (és pechemre be is vol tállítva..) és a pathauto az álnév mintát a pathauto_node_[node_type]_[lang]_pattern változóba menti,
Utána hiába lesz kikapcsolva és uninstallva az i18n, ezek a minták nem törlődnek, és ezeket is veszi "erősebbnek".

Ez nyilvánvaló bug, de mivel elég sok idő ment el a debugra + ugye ezt a bejegyzést is meg kellett írnom, nem volt időm végigfutni azt a párszáz hozzászólást, ami ebben a témában született. Ha esetleg Neked sikerült, és tudod, hogy miújság a témában, dobj egy kommentet légyszi, ingyen van. :)

A megoldás sem lehet olyan wasistdas: a pathauto modul nyilván figyeli az i18n létezését az admin form generáláskor. Pár sorral kell kiegészíteni a submit hookot, hogy a form beküldésekor is figyelje ugyanezt, és ha nem létezik, akkor törölje a mintákat.

Edit: <aries_mwz> álnévminta egybeírandó - jogos, úgy látszik a debughoz szükséges agykapacitásom a helyesírási tudásom helyérő vándorolt el

Hozzászólások

Hozzászólás

A mező tartalma nem nyilvános.
  • Internal paths in double quotes, written as "internal:node/99", for example, are replaced with the appropriate absolute URL or relative path.
  • Engedélyezett HTML elemek: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <del> <img>
  • A webcímek és email címek automatikusan linkekké alakulnak.
  • A sorokat és bekezdéseket a rendszer automatikusan felismeri.
  • Engedélyezett HTML elemek: <a> <blockquote> <br> <cite> <code> <dd> <del> <div> <dl> <dt> <em> <li> <ol> <p> <span> <strong> <ul>
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <bash>, <c>, <cpp>, <drupal5>, <drupal6>, <java>, <javascript>, <mysql>, <php>, <python>, <ruby>, <sql>. The supported tag styles are: <foo>, [foo].
  • Minden email cím át lesz alakítva ember által olvasható módon, vagy (ha a JavaScript engedélyezett) ki lesz cserélve kattintható, de biztonságos hivatkozásra.
By submitting this form, you accept the Mollom privacy policy.