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

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
FrankH
Beiträge: 71
Registriert: 11. Nov 2007, 16:42

mp_tags Linkdesign

19. Jul 2011, 01:02

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

weiserhei
Beiträge: 7
Registriert: 20. Aug 2007, 09:01

Re: mp_tags Linkdesign

23. Jul 2011, 23:25

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ß

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: mp_tags Linkdesign

24. Jul 2011, 02:44

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.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

FrankH
Beiträge: 71
Registriert: 11. Nov 2007, 16:42

Re: mp_tags Linkdesign

24. Jul 2011, 08:25

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

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: mp_tags Linkdesign

24. Jul 2011, 13:55

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.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Zurück zu „Allgemeines [R4]“