[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • mp_tags Linkdesign
Seite 1 von 1

mp_tags Linkdesign

Verfasst: 19. Jul 2011, 01:02
von FrankH
Hallo,

ich habe gerade für ein Projekt das AddOn "mp_tags" (http://www.redaxo.org/de/download/addons/?addon_id=870) eingebunden. Läuft so weit sehr gut, würde nur gerne die Links statt "/tag.html?=&tag_id=6", so anzeigen, dass der Begriff im Link vorkommt. Jeder Begriff hat eine ID, die im Link angezeigt wird. Besser wäre z.B. "/tag/europa.html".

Wie könnte dies im AddOn umgesetzt werden?

Gruß
FrankH

Re: mp_tags Linkdesign

Verfasst: 23. Jul 2011, 23:25
von weiserhei
Hallo Frank,
habe das mp_tags Addon heute entdeckt und bei der Suche nach Anpassungen diesen Thread gefunden. Als einfache Lösung habe ich den Code in den Modulausgaben folgendermaßen erweitert:

Original

Code: Alles auswählen

$url = rex_getUrl($REX['ADDON']['mp_tags']['article_id_for_list'], $REX['CUR_CLANG'], array('tag_id' => $id));

Mit Tag-Name

Code: Alles auswählen

$url = rex_getUrl($REX['ADDON']['mp_tags']['article_id_for_list'], $REX['CUR_CLANG'], array('tag_id' => $id,  'name' => $term));
Ausgabe:
domain.de/index.php?tag_id=1&name=tagname
Weiß nicht ob dadurch irgendwelche Probleme auftreten können, in meiner Testumgebung mit RexSEO habe ich so allerdings den Tag Namen mit in der URL.

Gruß

Re: mp_tags Linkdesign

Verfasst: 24. Jul 2011, 02:44
von Xong
Hi!

RexSEO bietet die Möglichkeit an, beliebige URLs zu erzeugen und mit beliebigen Artikeln und Artikelparametern zu verknüpfen.

Wenn ihr also die Tags schön in der URL haben wollt, könnt ihr das wie folgt machen.

1. Ihr braucht eine Funktion, die eure URLs für RexSEO generiert:

Code: Alles auswählen

function my_extended_urls($_params)
{
  global $REX;
  
  $sql = rex_sql::factory();
  $tags = $sql->getArray("
    SELECT t.id, t.term, t.clang as clang_id, c.clang as clang_name
    FROM `".$REX['TABLE_PREFIX']."mp_tags` t
    LEFT JOIN `".$REX['TABLE_PREFIX']."clang` c
      ON c.id = t.clang
  ");

  foreach($tags as $tag)
  {
    $pathname = '';
    $pathname = rexseo_appendToPath($pathname, 'tag');
    $pathname = rexseo_appendToPath($pathname, $tag['clang_name']);
    $pathname = rexseo_appendToPath($pathname, $tag['term']);
    $pathname = substr($pathname,0,strlen($pathname)-1).$REX['ADDON']['rexseo']['settings']['url_ending'];
    $_params['subject']['REXSEO_URLS'][$pathname] = array (
      'id'     => 123,    // <- hier die Artikel-ID des Artikels eintragen, der das "tag articles"-Modul enthält
      'clang'  => $tag['clang_id'],    // (int)   clang
      'params' => array('tag_id', $tag['id'])
    );
  }
  
  return $_params['subject'];
}
2. Jetzt muss die Funktion RexSEO bekannt gemacht werden, so dass sie immer aufgerufen wird, wenn RexSEO die Pathlist neu generiert. Das passiert z. B. wenn unter "System" der Cache gelöscht wird.

Code: Alles auswählen

rex_register_extension('REXSEO_PATHLIST_CREATED', 'my_extended_urls');
3. Damit auch neu eingetragene Tags in den Genuss der schönen URLs kommen, müsst ihr dafür sorgen, dass die Funktion "rexseo_generate_pathlist()" auch dann aufgerufen wird, wenn ein neues Tag eingetragen wird.
Dazu muss in der Datei /pages/article.inc.php des mp_tags-Addons einfach in Zeile 62 nach "echo rex_info($I18N->msg('tags_form_tag_added', $term));" "rexseo_generate_pathlist()" hinzugefügt werden.

Jetzt sind eure kategorisierten Artikel über http://example.org/tag/SPRACHE/TAG_NAME verfügbar.

Wer die Sprache nicht braucht, kann sie auch weglassen, muss dafür aber natürlich auch die Funktion "my_extended_urls" anpassen.

Re: mp_tags Linkdesign

Verfasst: 24. Jul 2011, 08:25
von FrankH
Hallo,

die Möglichkeit mit REXseo gefällt mir sehr gut. Habe bei dem Projekt jedoch noch kein REXseo am laufen. Ich müsste die erste Kategorie ausblenden, geht dies auch mit REXseo?
Im Backend sind die Kategorien so aufgebaut:

root/EU Länder/Belgien (Startartikel "Mehrwertsteuer Belgien")

Es sollte als Link jedoch folgendes erzeugt werden:
http://www.homepage.de/de/mehrwertsteuer-belgien.html

Könnte dies auch leicht mit rexSEO umgesetzt werden?
Es sollte immer der Artikelname als Link dienen, nicht der Kategoriename.

In welche Datei muss ich denn "1. Die Funktion" einbinden?

Gruß
FrankH

Re: mp_tags Linkdesign

Verfasst: 24. Jul 2011, 13:55
von Xong
Hi!
FrankH hat geschrieben:Es sollte als Link jedoch folgendes erzeugt werden:
http://www.homepage.de/de/mehrwertsteuer-belgien.html

Könnte dies auch leicht mit rexSEO umgesetzt werden?
Es sollte immer der Artikelname als Link dienen, nicht der Kategoriename.
Das kannst du genauso wie oben umsetzen. Einfach alle Artikel auslesen und die URLs in die Pathlist schreiben.
FrankH hat geschrieben:In welche Datei muss ich denn "1. Die Funktion" einbinden?
Dazu ist ein kleines Addon sinnvoll. Ich benutze für alle mittleren bis größeren Projekte ein eigenes spezielles Addon in dem ich Funktionen, Klassen und Einstellungen zur Verfügung stelle.