Útvonal álnév API

makgab képe

Üdv!

D7 api-ban keresgélek, hogy url alias-t hogyan tudnék létrehozni saját modulban (ill. törölni). Csak drupal_get_path_alias fv-t találtam, de ezzel csak lekérdezni lehet.
Melyik lenne a megfelelő fv?

Drupal verzió: 
makgab képe

A path_set_alias() D7-ben már nincs, ha jól olvasom, akkor a path_save fv kellene nekem(?).

Save a path alias to the database.
 
Parameters
$path: An associative array containing the following keys:
 
    source: The internal system path.
    alias: The URL alias.
    pid: (optional) Unique path alias identifier.
    language: (optional) The language of the alias.

A path_delete az alias törlése.

Delete a URL alias.
 
Parameters
$criteria: A number representing the pid or an array of criteria.

Ez a $criteria paraméter nem egészen világos. Ez lenne az 'url alias', amit törölni szeretnék?

0
0
pp képe

Érdemes megnézni a forrását ilyenkor a kódnak. Drupalban van egy olyan wrongpractice, hogy egy függvény paraméter többfajta módon is értelmezhető, valamint a PHP lazaságát kihasználva többfajta típus is lehet.

Ha egy számot (igazából nem tömböt, muhahah) adsz meg akkor Te egy path id-t, vagyis pid-et adtál meg. Ilyenkor az kerül törlésre.

De a path_save nem vizsgálja, hogy van-e már egy adott source/alias páros, így felvehetsz akárhányat. Ilyenkor, ha törlöd az egyikek(pid), akkor még nem törölted az álnevet.
Sőt, ugyan azzal a source-val lehet több alias is, így ha az egyiket törlöd, akkor a másik még megmarad.

Ezért lehetőséged van arra, hogy töröld egy adott source összes alias-át, vagy egy adott nyelv összes útvonal álnevét, vagy ... stb. A kérdés, hogy milyen értékeket adsz át. Sajnos csak egyenlőséget lehet vizsgálni, tehát nem lehet az összes 'akarmi*' kezdetű álnevet ezzel a fv-el törölni.

Nyolcasban picit tisztább a kép, hisz ott nincs trükközés, ott csak feltételeket adhatsz meg... (vagyis nem, de legalább a neve az, és nem értelmezik kétféleképpen... talán majd a kilencesben.)

pp

0
0
makgab képe

Köszönöm. :)
Az adatbázisba belenézve néztem, hogy a pid egy pathalias azonosító.
De most már talán világos lesz a fentiek alapján. Köszönöm még1x!

0
0