[Frage] tx_news : canonical URL ( root/Kategorie/Artikeltitel ) [Gelöst] TYPO3-Version: -

  • Phigiro Phigiro
    Padawan
    0 x
    39 Beiträge
    0 Hilfreiche Beiträge
    25. 06. 2015, 17:09

    Hallo zusammen,

    ich weiß, das Thema ist schon oft besprochen, aber weder hier im Forum noch bei allen Google-Versuchen bin ich der Lösung näher gekommen.
    Auch das Handbuch unterm Kopfkissen hat nichts genutzt.

    Hier eine kurze Beschreibung der Situation:

    Ich habe mehrere Seiten, die die Listen der Artikel ausgeben, diese sind auch gleichzeitig die Kategorien der Artikel:

    [b]Listen_Seite_1[/b]
    [b]Listen_Seite_2[/b]
    [b]Listen_Seite_3[/b]

    dazu habe ich eine Seite (Verzeichnis) als Detailseite erstellt, über die die Artikel gepflegt werden.

    Verzeichnis: [b]Detail[/b]
    Seite: [b]Artikel_Detail_Seite[/b]

    Die Url lautet nun immer: http://www.root.de/Detail/Artikel_Detail_Seite/News/Atikel_Titel

    Was ich aber möchte ist: http://www.root.de/Listen_Seite_1/Atikel_Titel

    Ist ein Artikel mehreren Kategorien zugeteilt, soll immer die erste gewählt werden, also ist der Artikel auf Listen_Seite_2 und Listen_Seite_3, soll Listen_Seite_2 gezogen werden, die URL lautet dann:

    http://www.root.de/Listen_Seite_2/Artikel_Titel

    Auf der Startseite werden alle Artikel ausgegeben, und dort wird die Kategorie (jeweils die erst ausgewählte) schon angezeigt. Dazu habe ich die Item.html modifiziert ( <a href="{newsItem.firstCategory.title}"</a> )

    Die Artikel auf der Startseite haben somit einen zusätzlichen Link zu ihrer Kategorie.

    Da ich noch ziemlich blutig mit Typo3, News, Extbase und Co bin, bezweifle ich, dass ich dies ohne Hilfe hin bekomme.

    Von daher hoffe ich das jemand eine Idee dazu hat.

    Danke schon mal!

  • Phigiro Phigiro
    Padawan
    0 x
    39 Beiträge
    0 Hilfreiche Beiträge
    15. 07. 2015, 07:12 - Lösung

    Hallo,

    um den Thread abzuschließen und für den Fall, dass jemand dasselbe Problem hat.
    Hier meine Lösung für die Artikel-Links:

    Statt den n:link-Tag zu modifizieren, habe ich es nun mit jQuery dahingebogen.
    Hier die Funktion / muss in document.ready:

    var fix_cat_in_article_link = function(){

    // URL
    // aktuelle url ziehen
    var url = $(location).attr('href');
    // zerlegen
    var url_parts = url.replace(/\/\s*$/,'').split('/');
    url_parts.shift();
    // index der Kategorie in dem URL-Teile Array
    var cat_from_url = url_parts[3];

    // ARTICLE
    // meine Artikel sind alles article-Tags
    var article = $('article');

    // Artikel iterieren
    $.each(article, function(i,v){

    // In der item.html von tx_news muss die firstCategorie
    // eine Klasse bekommen, hier .first_cat benannt
    var first_cat = $(this).find('.first_cat');
    var first_cat_text = first_cat.text().toLowerCase();

    // den richtigen Linkt je article-container ermitteln
    // dies muss natürlich auch in der item.html eingebaut werden
    var article_link = $(this).find('.link_wrapper').next('a');
    var article_link_href = article_link.attr('href')

    // das jeweilige href-Attribut zerlegen
    var article_link_href_parts = article_link_href.replace(/\/\s*$/,'').split('/');
    article_link_href_parts.shift();
    // nur den Artikeltitel herausfiltern
    var article_link_text = article_link_href_parts[1];

    // href-Atribut zusammenschrauben
    article_link.attr('href', ""+url_parts[2]+"/"+first_cat_text+"/"+article_link_text);
    });

    }

    Hat aber den Nachteil, dass wenn die Seite langsam lädt, dass das Script nicht schnell genug ist und die Artikel-Links kurzzeitig ihre alte Struktur haben.
    Den Link in der item.html zu modifizieren wäre der bessere Weg gewesen, aber fürs Erste geht das auch so.

    Grüße

  • Hilfreichster Beitrag

  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    1 x
    2845 Beiträge
    105 Hilfreiche Beiträge
    30. 06. 2015, 10:34 - Hilfreichster Beitrag

    Hallo.

    Wenn ich den Wunsch richtig verstanden habe, dann dürfte sich das ganze via realURL-Konfiguration lösen lassen (Wenngelich das auch etwas tricky am Anfang ist).

    Eine kurze Zusammenfassung zum Vorgfehen haben die Jungs von in2code in ihrer Snippet-Sammlung:
    [url=http://snippets.in2code.de/index.php?id=273&tx_in2snippets_pi1[snippet]=68&tx_in2snippets_pi1[action]=detail]URL mit Realurl und Extbase möglichst kurz machen[/url]

    Viele Grüße
    Julian


  • 1
  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    1 x
    2845 Beiträge
    105 Hilfreiche Beiträge
    30. 06. 2015, 10:34

    Hallo.

    Wenn ich den Wunsch richtig verstanden habe, dann dürfte sich das ganze via realURL-Konfiguration lösen lassen (Wenngelich das auch etwas tricky am Anfang ist).

    Eine kurze Zusammenfassung zum Vorgfehen haben die Jungs von in2code in ihrer Snippet-Sammlung:
    [url=http://snippets.in2code.de/index.php?id=273&tx_in2snippets_pi1[snippet]=68&tx_in2snippets_pi1[action]=detail]URL mit Realurl und Extbase möglichst kurz machen[/url]

    Viele Grüße
    Julian

  • Phigiro Phigiro
    Padawan
    0 x
    39 Beiträge
    0 Hilfreiche Beiträge
    02. 07. 2015, 09:48

    Hey,
    ja der Link ist schon mal sehr hilfreich und fast die Lösung des Problems, aber SEO-Fachmann ist noch nicht ganz glücklich.

    Ich beschreibe das Problem noch einmal genauer.

    Hier die Struktur wie ich die Seiten nun (nach den Anweisungen in dem Tut) im Backend angelegt habe:

    Start
    - detail_start (hier werden alle News ausgegeben)
    Kategorie_1
    - detail_kategorie_1
    Kategorie_2
    - detail_kategorie_2

    Die Seiten-Einstellungen der Detailseiten sind nun so, dass sie den ganzen Pfad überschreiben:
    http://www.root.de/Dummyartikel_name_1
    http://www.root.de/Kategorie_1/Dummyartikel_name_1
    http://www.root.de/Kategorie_2/Dummyartikel_name_2

    Das ist schon sehr schön, aber nun ist es immer noch so, dass es z.B. wie hier zum Artikel Dummyartikel_name_1 zwei Pfade gibt.
    Man müsste also im tx_news Backend unter einem Artikel eine Eingabemöglichkeit eines canonical-Tags haben, der angibt zu welchem Pfad der Artikel gehört. Das müsste doch de Kuh vom Eis holen, oder? Aber wie?

    Das zweite Problem ist, es ist gewünscht, dass es noch eine zusätzliche Oberkategorie geben soll, nämlich "magazin", die es aber gar nicht wirklich gibt. Der Pfad soll also nur ergänzt werden.

    Also so:
    http://www.root.de/magazin/Dummyartikel_name_1
    http://www.root.de/magazin/Kategorie_1/Dummyartikel_name_1
    http://www.root.de/magazin/Kategorie_2/Dummyartikel_name_2

    Hierzu habe ich versucht die Erweiterungen (danp_realurlconfigurator, aoe_realurlpath) zu installieren.
    Klappt aber nicht, scheinbar habe ich in 6.2 eine andere localconf.php. So wie es in den meißten Tutorials beschrieben steht funktioniert es nicht.
    So wie ich das quer gelesen habe, kann man doch mit aoe_realurlpath den Pfad überschreiben, oder?

    Ich hoffe es weiß jemand Rat.

    Danke schonmal! :-)

  • Phigiro Phigiro
    Padawan
    0 x
    39 Beiträge
    0 Hilfreiche Beiträge
    06. 07. 2015, 12:09

    Moin moin,

    ok, ich schreib mal die Teil-Lösung selbst hier rein, hab es nach Stunden herausgefunden.

    (danp_realurlconfigurator, aoe_realurlpath) habe ich deinstalliert.

    Der Hauptfehler lag daran, dass man sich komplett abmelden muss um die Änderungen wirksam zu machen und die Seiten müssen über Info geprüft werden.

    Hier nochmal der Seitenbaum:
    Magazin
    - detail_start (hier werden alle News ausgegeben)
    Kategorie_1
    - detail_kategorie_1
    Kategorie_2
    - detail_kategorie_2

    Hier muss jeweils Kategorie_1 und Kategorie_2 auf "Exclude from speaking URL" gestellt werden.
    Die IDs der detail_kategorie_1 und detail_kategorie_2 müssen in der realurl_conf.php in fixedPostVars eingetragen werden.

    Beispiel dazu:

    'fixedPostVars' => array(...
    'newsDetailConfiguration' => array(
    array( ...)
    ),
    ),
    // hier die pid der detail_kategorie eintragen:
    '41' => 'newsDetailConfiguration',
    '42' => 'newsDetailConfiguration',
    )...

    DANN ABMELDEN!! Und schwupps hat man sehr schöne URLs:
    http://www.root.de/magazin/Dummyartikel_name_1
    http://www.root.de/magazin/Kategorie_1/Dummyartikel_name_1
    http://www.root.de/magazin/Kategorie_2/Dummyartikel_name_2

    Das einzige Problem was bleibt, ist das der doppelten URLs:
    ruft man (http://www.root.de/magazin/Dummyartikel_name_1) auf müsste man auf (http://www.root.de/magazin/Kategorie_1/Dummyartikel_name_1) umgeleitet werden und
    ruft man (http://www.root.de/magazin/Dummyartikel_name_2) auf müsste man auf (http://www.root.de/magazin/Kategorie_2/Dummyartikel_name_2) umgeleitet werden.

    Oder zumindest müsste Dummyartikel_name_x einen canonical-Tag mit http://www.root.de/magazin/Kategorie_x/ bekommen.
    Das scheint aber irgendwie nicht möglich.

    Ich habe versucht über die Eigenschaften der Kategorien im BE eine Detail-Seite zu zuordnen, klappt aber auch nicht.
    Bei tt_news soll dies mit dem Eintrag (useSPidFromCategory = 1) in der setup die Lösung sein.

    Ich möchte auch noch nicht aufgeben, das muss doch irgendwie gehen!!!

    Ich bin für jede Hilfe MEGA dankbar, denn ich möchte vermeiden nur deswegen auf tt_news umsteigen zu müssen.

  • Phigiro Phigiro
    Padawan
    0 x
    39 Beiträge
    0 Hilfreiche Beiträge
    07. 07. 2015, 15:31

    Hallo zusammen,

    ich geb es noch nicht auf...

    hier der Codeschnipsel aus der item.html des News-Moduls:

    <n:link newsItem="{newsItem}" settings="{settings}">
    <div class="box-gradient" data-size="{newsItem.gridSize}">
    <div class="box-grid-content">
    <span class="head1">{newsItem.title}</span>
    <p>{newsItem.teaser}</p>
    </div>
    </div>
    </n:link>

    Ich kann doch dort {newsItem.firstCategory.title} ausgeben.
    Kann man den <n:link> nicht damit modifizieren?

    So hätte jeder Artikel-Link in der Listen-Ausgabe seine Kategorie vorgeschnallt, zumindest die erste die für ihn ausgewählt wurde.
    Aber der Eindeutigkeit müsste dann doch Genüge getan sein, oder?

    Weiß jemand wie das geht?

  • Phigiro Phigiro
    Padawan
    0 x
    39 Beiträge
    0 Hilfreiche Beiträge
    15. 07. 2015, 07:12

    Hallo,

    um den Thread abzuschließen und für den Fall, dass jemand dasselbe Problem hat.
    Hier meine Lösung für die Artikel-Links:

    Statt den n:link-Tag zu modifizieren, habe ich es nun mit jQuery dahingebogen.
    Hier die Funktion / muss in document.ready:

    var fix_cat_in_article_link = function(){

    // URL
    // aktuelle url ziehen
    var url = $(location).attr('href');
    // zerlegen
    var url_parts = url.replace(/\/\s*$/,'').split('/');
    url_parts.shift();
    // index der Kategorie in dem URL-Teile Array
    var cat_from_url = url_parts[3];

    // ARTICLE
    // meine Artikel sind alles article-Tags
    var article = $('article');

    // Artikel iterieren
    $.each(article, function(i,v){

    // In der item.html von tx_news muss die firstCategorie
    // eine Klasse bekommen, hier .first_cat benannt
    var first_cat = $(this).find('.first_cat');
    var first_cat_text = first_cat.text().toLowerCase();

    // den richtigen Linkt je article-container ermitteln
    // dies muss natürlich auch in der item.html eingebaut werden
    var article_link = $(this).find('.link_wrapper').next('a');
    var article_link_href = article_link.attr('href')

    // das jeweilige href-Attribut zerlegen
    var article_link_href_parts = article_link_href.replace(/\/\s*$/,'').split('/');
    article_link_href_parts.shift();
    // nur den Artikeltitel herausfiltern
    var article_link_text = article_link_href_parts[1];

    // href-Atribut zusammenschrauben
    article_link.attr('href', ""+url_parts[2]+"/"+first_cat_text+"/"+article_link_text);
    });

    }

    Hat aber den Nachteil, dass wenn die Seite langsam lädt, dass das Script nicht schnell genug ist und die Artikel-Links kurzzeitig ihre alte Struktur haben.
    Den Link in der item.html zu modifizieren wäre der bessere Weg gewesen, aber fürs Erste geht das auch so.

    Grüße

  • 1