Hallo, lieber Forumbenutzer. 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 Möglichkeiten der Kommunikation ist das Forum ein wenig eingeschlafen und weniger Nutzer benutzen das Forum aktiv (trotzdem lohnt es sich evtl. hier nach Lösungen zu suchen oder seine Frage zu stellen).

Wir empfehlen, für deine Fragen/Probleme aktuell (zusätzlich) 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: http://redaxo.org/slack/
rash
Beiträge: 41
Registriert: 8. Feb 2008, 01:29

[SOLVED] mp_tags und seo42 für saubere URLs

9. Mai 2016, 19:57

Hallo zusammen,

ich benutze das tolle AddOn mp_tags und das ebenso tolle seo42. Alles läuft soweit ganz gut, nur der Link zur Tag-Page gefällt mir nicht:

Code: Alles auswählen

http://www.domain.de/tag/?tag_id=1
Stattdessen hätte ich am liebsten etwas in der Art von

Code: Alles auswählen

http://www.domain.de/tag/tagname/


bzw. im Fall von Mehrsprachigkeit:

Code: Alles auswählen

http://www.domain.de/tag/en/tagname/


Selbstverständlich habe ich die Suche bemüht, das hier gefunden und brav nachgebaut (stets mit 'seo42' statt 'rexseo') – allein, ich scheine zu doof zu sein, die Tag-Seite wird nicht angezeigt, sobald ich dem URL ein /tagname/ mitgebe.

Ich bin mir noch nicht mal sicher, ob ich eher an mp_tags oder seo42 ansetzen soll, um das Problem zu lösen. Könnte mir gelegentlich jemand auf die Sprünge helfen? Mein Dank wäre ihm oder ihr gewiss.

Grüße
Ralf
Zuletzt geändert von rash am 10. Mai 2016, 17:38, insgesamt 1-mal geändert.

rash
Beiträge: 41
Registriert: 8. Feb 2008, 01:29

Re: mp_tags und seo42 für saubere URLs

10. Mai 2016, 10:53

Guten Morgen,

inzwischen bin ich minimal weiter, ich drösele es mal auf. Was ich habe, ist diese Funktion, eingebunden als AddOn:

Code: Alles auswählen

function my_extended_urls($_params) {
      
	global $REX;
	$sql = rex_sql::factory();
	$sql -> setDebug(true);
	$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 = seo42_appendToPath($pathname, 'tag');
		$pathname = seo42_appendToPath($pathname, $tag['clang_name']);
		$pathname = seo42_appendToPath($pathname, $tag['term']);
		$pathname = substr($pathname, 0, strlen($pathname) - 1).$REX['ADDON']['seo42']['settings']['url_ending'];
		$_params['subject']['SEO42_URLS'][$pathname] = array(
			'id'     => 8,
			'clang'  => $tag['clang_id'],
			'params' => array('tag_id', $tag['id'])
		);
	endforeach;
    return $_params['subject'];

}
rex_register_extension('SEO42_PATHLIST_CREATED', 'my_extended_urls');
Klicke ich System -> Cache löschen, erhalte ich diese Fehlermeldung:

Code: Alles auswählen

Query: SELECT t.id, t.term, t.clang as clang_id, c.clang as clang_name FROM `rex_mp_tags` t LEFT JOIN `rex_clang` c ON c.id = t.clang
Affected Rows: 0
Error Message: Unknown column 'c.clang' in 'field list'
Error Code: 1054
Leider ist mir der LEFT JOIN Query ein Buch mit sieben Siegeln, also rate ich einfach wild drauf los und ändere c.clang as clang_name in t.clang as clang_name

Immerhin führt er jetzt zu einem Ergebnis:

Code: Alles auswählen

Query: SELECT t.id, t.term, t.clang as clang_id, t.clang as clang_name FROM `rex_mp_tags` t LEFT JOIN `rex_clang` c ON c.id = t.clang
Affected Rows: 2
Dummerweise kommt aber das hier nach:

Code: Alles auswählen

Warning: Missing argument 3 for seo42_appendToPath(), called in /www/htdocs/w1234567/domain.de/redaxo/include/addons/functions/funktionen.inc.php on line 12 and defined in /www/htdocs/w1234567/domain.de/redaxo/include/addons/seo42/classes/class.seo42_rewrite.inc.php on line 855

Warning: Missing argument 4 for seo42_appendToPath(), called in /www/htdocs/w1234567/domain.de/redaxo/include/addons/functions/funktionen.inc.php on line 12 and defined in /www/htdocs/w1234567/domain.de/redaxo/include/addons/seo42/classes/class.seo42_rewrite.inc.php on line 855

Warning: Missing argument 3 for seo42_appendToPath(), called in /www/htdocs/w1234567/domain.de/redaxo/include/addons/functions/funktionen.inc.php on line 13 and defined in /www/htdocs/w1234567/domain.de/redaxo/include/addons/seo42/classes/class.seo42_rewrite.inc.php on line 855

Warning: Missing argument 4 for seo42_appendToPath(), called in /www/htdocs/w1234567/domain.de/redaxo/include/addons/functions/funktionen.inc.php on line 13 and defined in /www/htdocs/w1234567/domain.de/redaxo/include/addons/seo42/classes/class.seo42_rewrite.inc.php on line 855

Warning: Missing argument 3 for seo42_appendToPath(), called in /www/htdocs/w1234567/domain.de/redaxo/include/addons/functions/funktionen.inc.php on line 14 and defined in /www/htdocs/w1234567/domain.de/redaxo/include/addons/seo42/classes/class.seo42_rewrite.inc.php on line 855

Warning: Missing argument 4 for seo42_appendToPath(), called in /www/htdocs/w1234567/domain.de/redaxo/include/addons/functions/funktionen.inc.php on line 14 and defined in /www/htdocs/w1234567/domain.de/redaxo/include/addons/seo42/classes/class.seo42_rewrite.inc.php on line 855

Warning: Missing argument 3 for seo42_appendToPath(), called in /www/htdocs/w1234567/domain.de/redaxo/include/addons/functions/funktionen.inc.php on line 12 and defined in /www/htdocs/w1234567/domain.de/redaxo/include/addons/seo42/classes/class.seo42_rewrite.inc.php on line 855

Warning: Missing argument 4 for seo42_appendToPath(), called in /www/htdocs/w1234567/domain.de/redaxo/include/addons/functions/funktionen.inc.php on line 12 and defined in /www/htdocs/w1234567/domain.de/redaxo/include/addons/seo42/classes/class.seo42_rewrite.inc.php on line 855

Warning: Missing argument 3 for seo42_appendToPath(), called in /www/htdocs/w1234567/domain.de/redaxo/include/addons/functions/funktionen.inc.php on line 13 and defined in /www/htdocs/w1234567/domain.de/redaxo/include/addons/seo42/classes/class.seo42_rewrite.inc.php on line 855

Warning: Missing argument 4 for seo42_appendToPath(), called in /www/htdocs/w1234567/domain.de/redaxo/include/addons/functions/funktionen.inc.php on line 13 and defined in /www/htdocs/w1234567/domain.de/redaxo/include/addons/seo42/classes/class.seo42_rewrite.inc.php on line 855

Warning: Missing argument 3 for seo42_appendToPath(), called in /www/htdocs/w1234567/domain.de/redaxo/include/addons/functions/funktionen.inc.php on line 14 and defined in /www/htdocs/w1234567/domain.de/redaxo/include/addons/seo42/classes/class.seo42_rewrite.inc.php on line 855

Warning: Missing argument 4 for seo42_appendToPath(), called in /www/htdocs/w1234567/domain.de/redaxo/include/addons/functions/funktionen.inc.php on line 14 and defined in /www/htdocs/w1234567/domain.de/redaxo/include/addons/seo42/classes/class.seo42_rewrite.inc.php on line 855
In der Debug-Liste von seo42 sind jetzt zwei fast gute Einträge drin:

Code: Alles auswählen

  'tag/0/kreis/' => array ('id' => 8,'clang' => '0','params' => array (
      0 => 'tag_id',
      1 => '1',),),
  'tag/1/circle/' => array ('id' => 8,'clang' => '1','params' => array (
      0 => 'tag_id',
      1 => '2',),),
Wenn ich mein Halbwissen so gut es geht auswerte, führt der MySQL-Query zwar zu einem Ergebnis, ermittelt aber den Namen der Sprache (de, en) nicht, sondern nimmt stattdessen die ID. Das heißt

Code: Alles auswählen

http://www.domain.de/tag/1/circle/
funktioniert,

Code: Alles auswählen

http://www.domain.de/tag/en/circle/
dagegen nicht.

Zwei elementare Fragen bleiben also im Kern:
1. Wie muss der Query lauten, dass er a) zu einem Ergebnis führt und b) den Sprachnamen statt der ID ermittelt?
2. Was sagt mir das wüste Warning-Gewitter übersetzt, besser: wodurch wird es verursacht und wie am besten behoben?

Schöne Grüße
Ralf
Zuletzt geändert von rash am 10. Mai 2016, 12:19, insgesamt 1-mal geändert.

Benutzeravatar
runstop64
Beiträge: 368
Registriert: 23. Okt 2012, 21:34
Wohnort: Hamburg
Kontaktdaten: Website Facebook Twitter

Re: mp_tags und seo42 für saubere URLs

10. Mai 2016, 11:27

Du könntest auch mal das seo42 Plugin url_control ausprobieren. damit lassen sich aus Datentabellen einfach URLs erzeugen.
Viele Grüße,
Daniel


studio-ahoi.de | Referenzen | Friends Of REDAXO

rash
Beiträge: 41
Registriert: 8. Feb 2008, 01:29

Re: mp_tags und seo42 für saubere URLs

10. Mai 2016, 15:55

runstop64 hat geschrieben:Du könntest auch mal das seo42 Plugin url_control ausprobieren. damit lassen sich aus Datentabellen einfach URLs erzeugen.
Danke für den Tipp, Daniel. Ich habe das direkt mal ausprobiert, leider ohne Erfolg. Diese Zeile:

Code: Alles auswählen

echo '<a href="'.url_generate::getUrlById('rex_mp_tags', $data['id']) . '">' . $data['term'] . '</a>';
gibt zwar den Namen (term) des Tags aus, der URL bleibt allerdings komplett leer. Davon abgesehen kapiere ich glaube ich den Sinn des Plugins nicht, man müsste wohl hellsehen können, erklärt ist ja leider praktisch nichts. Ich kann irgendwelche URLs erzeugen, die aber nicht generiert werden. (Da war ich schon weiter, weil ich immerhin URLs generiert bekam, nur dass die eben nicht funktionierten.) Ich fürchte also, das ist nicht die Lösung – trotzdem danke nochmal.

Schätzungsweise ist mein Problem zu hyperkomplex und muss ungelöst bleiben. Auch egal, nehme ich halt schmutzige URLs, es kommt ja nicht gleich die Polizei deswegen.

Benutzeravatar
runstop64
Beiträge: 368
Registriert: 23. Okt 2012, 21:34
Wohnort: Hamburg
Kontaktdaten: Website Facebook Twitter

Re: mp_tags und seo42 für saubere URLs

10. Mai 2016, 16:16

Hast Du das Plugin denn auch konfiguriert? Es legt im Menü von seo42 den neuen Punkt URLs erzeugen an. Dort kannst Du angeben, aus welchen Tabellenspalten die URL erzeugt werden soll.
Viele Grüße,
Daniel


studio-ahoi.de | Referenzen | Friends Of REDAXO

rash
Beiträge: 41
Registriert: 8. Feb 2008, 01:29

Re: mp_tags und seo42 für saubere URLs

10. Mai 2016, 17:05

runstop64 hat geschrieben:Hast Du das Plugin denn auch konfiguriert? Es legt im Menü von seo42 den neuen Punkt URLs erzeugen an. Dort kannst Du angeben, aus welchen Tabellenspalten die URL erzeugt werden soll.
Inzwischen ja – man gibt halt doch nie auf. Ich versuchte es mit Hellsehen und siehe da, plötzlich erschien eine Vision. Sieht so aus, als ob die URLs jetzt richtig erzeugt werden und die Tag-Seite wird auch angezeigt. Jetzt gibt es nur noch ein Folgeproblem:

domain.de/tag/tagname enthält keinen get-Request mehr, wenn ich aber alle Artikel zu Tag x auflisten möchte, sollte ich die tag_id haben, mit der mp_tags normalerweise arbeitet. Kann ich die aus dem umgeformten URL irgendwie rückermitteln, um sie an den Liste-alle-Artikel-zu-Tag-x-Query zu übergeben?

Benutzeravatar
runstop64
Beiträge: 368
Registriert: 23. Okt 2012, 21:34
Wohnort: Hamburg
Kontaktdaten: Website Facebook Twitter

Re: mp_tags und seo42 für saubere URLs

10. Mai 2016, 17:24

Dafür gibt es den Befehl

Code: Alles auswählen

$id = url_generate::getId('table'); 
Viele Grüße,
Daniel


studio-ahoi.de | Referenzen | Friends Of REDAXO

rash
Beiträge: 41
Registriert: 8. Feb 2008, 01:29

Re: mp_tags und seo42 für saubere URLs

10. Mai 2016, 17:38

BINGO, jetzt tut es!

Okay Daniel, nochmal herzlichen Dank, das war sehr hilfreich.

Zurück zu „Allgemeines [R4]“