Eigene Funktion - Variable mehrfach in ForEach ()

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
HabNurNeFrage
Ehemaliges Teammitglied
Beiträge: 1627
Registriert: 17.01.2010 20:22
Wohnort: An der Ostsee
Kontaktdaten:

Eigene Funktion - Variable mehrfach in ForEach ()

Beitrag von HabNurNeFrage »

Hi,

im Rahmen meines autodidakten PHP-Lernens habe ich nun meine erste kleine Funktion zum Laufen gebracht.
Es handelt sich dabei um die Bereinigung der Variablen {PAGE_TITLE} in includes/functions.php - um ganz Simpel
eine eigene Template-Variable zu erhalten, die dann als Anhang an die URL zur Erweiterung als srechende URL fungiert.

Im Folgenden die Funktion:

Code: Alles auswählen

    // begin: simple seo_title - sprechende URLs mit Minimalaufwand
    function seo_title($page_title) 
    { 
    // definiert Ersetzungen fuer einige Sonderzeichen, damit diese hinterher nicht durch preg_replace entfernt werden
    $url_title_replace = array( 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss', '\\' => '-', '<' => '-',
                                'Ä' => 'ae', 'Ö' => 'oe', 'Ü' => 'ue', '/' => '-', '|' => '-', '&' => '-und-',
                                '&auml;' => 'ae', '&ouml;' => 'oe', '&uuml;' => 'ue', '&szlig;' => 'ss', '>' => '-',
                                '&Auml;' => 'ae', '&Ouml;' => 'oe', '&Uuml;' => 'ue',  '.' => '-', '&' => '-und-',
                                '%' => '-prozent-', '§' => '-paragraf-', '°' => '-grad-', '&quot' => ''); 
    $page_title_url = strtr( strtolower( $page_title_url ), $url_title_replace ); // ersetzt die zuvor definierten Sonderzeichen
    $page_title_url = str_replace(" ", "-", $page_title_url); // ersetzt Leerstellen durch Bindestriche 
    $page_title_url = preg_replace('/[^A-Za-z0-9\-]/', '', $page_title_url); // entfernt verbliebene Sonderzeichen
    return preg_replace('/-+/', '-', $page_title_url); // ersetzt mehrere Bindestriche durch einen einzigen Bindestrich 
    }
    
    $seo_title = seo_title($page_title); //weise der Variable seo_title den Wert des Ergebnisses aus der Funktion seo_title zu
    // end: simple seo_title - sprechende URLs mit Minimalaufwand     
Zusätzlich dann noch die Template-Zuweisung: 'SEO_TITLE' => $seo_title, - ich erhalte nun die im Template nutzbare Varable {SEO_TITLE}
Diese hänge ich einfach hinter die Canonical-URL aus diesem Snippet: viewtopic.php?f=85&t=186686

Soweit, so gut, funktioniert hervorragend und ich kann jetzt wunderbar ein paar Keywords in die URL "spammen" //lol

Nun möchte ich das gleiche auch noch auf der Index-Seite an die URLs dranhängen. Natürlich so, dass jeder Link seinen eigenen Appendix erhält.

Wie kann ich meine Funktion/Variable jetzt in includes/function_display.php mit foreach() in ein Array laden, dass dann für jede forumrow
der passende eigene URL-Appendix an die Links gehängt wird? Oder befinde ich mich schon mit foreach() auf dem Holzweg? :oops:

Vielen Dank schon mal für kleine Hinweise in Richtung Lösung.

LG

PS: Ich sehe das Ganze mehr als Übung denn als sinnvolle Erweiterung
| HomeStory.org - the friendly Community | Forum für alle Lebenslagen | <"}))}~ | Nicht nachmachen: Meine phpBB Spielereien |
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Re: Eigene Funktion - Variable mehrfach in ForEach ()

Beitrag von cYbercOsmOnauT »

Ein Appendix ist ein Zusatz zu etwas. Diese Funktion wandelt lediglich einen gegebenen String in eine Form die der des htmlentities ähnelt.

Eine Funktion darf nur einmal definiert sein, jedoch kannst Du sie natürlich so oft wie Du willst aufrufen.

Code: Alles auswählen

$meineUrls = array('Hier steht ein Titel', 'Hier noch einer', 'einer mit Ümläuten');
$seo_titles = array(); // Rückgabe-Variable initialisieren
foreach($meineUrls AS $url)
    $seo_titles[] = seo_title($url); 
oder die ganz leete Form:

Code: Alles auswählen

$meineUrls = array('Hier steht ein Titel', 'Hier noch einer', 'einer mit Ümläuten');
$seo_titles = array_map('seo_title', $meineUrls); 
Hilft Dir das weiter?
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Benutzeravatar
HabNurNeFrage
Ehemaliges Teammitglied
Beiträge: 1627
Registriert: 17.01.2010 20:22
Wohnort: An der Ostsee
Kontaktdaten:

Re: Eigene Funktion - Variable mehrfach in ForEach ()

Beitrag von HabNurNeFrage »

Hi,

vielen Dank. Ich denke, das wird helfen.
Noch ein bisschen Try and Error, um die Ausgabe in die forumrow zu schmeißen...
Ich melde mich spätestens, wenn es nicht geklappt hat :lol:

Appendix hatte ich geschrieben, da ich meine Template-Variable so nutze:
<a href="(U_CANONICAL}-{SEO_TITLE}">{PAGE_TITLE}</a>
Daher wird mein String einfach an die URL gehängt, ohne Auswirung auf den Link selbst.
Der sieht dann in etwa so aus:
viewtopic.php?f=69&t=1136625-hier-sind-jetzt-einige-keywords

LG
| HomeStory.org - the friendly Community | Forum für alle Lebenslagen | <"}))}~ | Nicht nachmachen: Meine phpBB Spielereien |
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };
Benutzeravatar
HabNurNeFrage
Ehemaliges Teammitglied
Beiträge: 1627
Registriert: 17.01.2010 20:22
Wohnort: An der Ostsee
Kontaktdaten:

Re: Eigene Funktion - Variable mehrfach in ForEach ()

Beitrag von HabNurNeFrage »

Hmmmm,

leider bekomme ich nur entweder can`t redeclare errors oder die Variable bleibt komplett leer...

Ich übe weiter :oops:

LG

// Sorry for bumping
| HomeStory.org - the friendly Community | Forum für alle Lebenslagen | <"}))}~ | Nicht nachmachen: Meine phpBB Spielereien |
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Eigene Funktion - Variable mehrfach in ForEach ()

Beitrag von Miriam »

im Rahmen meines autodidakten PHP-Lernens habe ich nun meine erste kleine Funktion zum Laufen gebracht.
Gratulation! :D

Wo genau möchtest Du die Daten auslesen? Im Index??
Warum so kompliziert? Alle Daten sind doch schon da.

Finde in der prosilver/template/forumlist_body.html:

Code: Alles auswählen

<a href="{forumrow.U_VIEWFORUM}" class="forumtitle">{forumrow.FORUM_NAME}</a>
tausche aus gegen:

Code: Alles auswählen

<a href="{forumrow.U_VIEWFORUM} - {forumrow.FORUM_NAME}" class="forumtitle">{forumrow.FORUM_NAME}</a>
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
HabNurNeFrage
Ehemaliges Teammitglied
Beiträge: 1627
Registriert: 17.01.2010 20:22
Wohnort: An der Ostsee
Kontaktdaten:

Re: Eigene Funktion - Variable mehrfach in ForEach ()

Beitrag von HabNurNeFrage »

Hi,

das hatte ich als erstes und dadurch bin ich überhaupt erst darauf gekommen.
Allerdings ergibt das dann sowas:
viewtopic.php?f=7&t=6786-Studie:%20Je%20gr%F6%DFer,%20desto%20besser
Nicht wirklich schöne Keywords...

Dann kam ich auf die Idee, das zu bereinigen und als neue Template-Variable bereitzustellen.
Funktioniert auch, solange nur einmalig PAGE_TITLE in SEO_TITLE gewandelt werden muss.

Nun will ich das beispielsweise mit der Variable LAST_POST_SUBJECT auch machen, für die in einem Array mehrere Werte bereitgestellt werden.

Ich vermute, dass sich das nur durch eine zusätzliche Tabellenspalte mit den bereinigten Subjects per SQL in die forumrow laden lässt.

Leider reicht mein logisches Verständnis an der Stelle noch nich ganz aus, um nachzuvollziehen, was wie wann per Query geholt wird und wie ich mit Ergebnissen umgehe, wenn diese etliche Werte enthalten und wie diese dann zugewiesen werden...

Es ist noch ein langer Weg :D

LG
| HomeStory.org - the friendly Community | Forum für alle Lebenslagen | <"}))}~ | Nicht nachmachen: Meine phpBB Spielereien |
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Eigene Funktion - Variable mehrfach in ForEach ()

Beitrag von Miriam »

Das wird schon :-P

Check das -> Klick
Und beachte hierbei auch das: KB:tippstyles

Oder vllt. auch das hier: Klack <= zumindest als Ansatz
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
HabNurNeFrage
Ehemaliges Teammitglied
Beiträge: 1627
Registriert: 17.01.2010 20:22
Wohnort: An der Ostsee
Kontaktdaten:

Re: Eigene Funktion - Variable mehrfach in ForEach ()

Beitrag von HabNurNeFrage »

Hi,

das ist ja perfekt :P //klicking_x_times_thx_post

In der xml ist es ja schon komplett so wie ich mir das vorgestellt habe. Der Weg war doch nicht mehr so weit.

Es läuft jetzt im index für Kategorien, Foren und letzte Beiträge, hier fehlen mir noch die Unterforen.
In search (row {searchresults.XXX}) läuft es für Suchergebnisse, die Themen liefern. In Ergebnislisten von Beiträgen ist es aufgrund der Ankerlinks etwas holprig.
In viewtopic ging es ja schon anfangs.

Bloß in viewforum, also in der topicrow will es (noch) nicht.

Danke auch für den Hinweis // Augen auf! :- P wegen des Tauschs der zu durchsuchenden Variable.

Zusammenfassung folgt, wenn alles läuft.

LG
| HomeStory.org - the friendly Community | Forum für alle Lebenslagen | <"}))}~ | Nicht nachmachen: Meine phpBB Spielereien |
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Eigene Funktion - Variable mehrfach in ForEach ()

Beitrag von Miriam »

Wenn Du in der Entwicklungsphase einer MOD bist, passe die config.php an, dann kannst Du den KB:debugmode. Das hilft ungemein.
In Ergebnislisten von Beiträgen ist es aufgrund der Ankerlinks etwas holprig
... dann splitte ggf. die URL an der Raute und setze ihn dann wieder zusammen.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
HabNurNeFrage
Ehemaliges Teammitglied
Beiträge: 1627
Registriert: 17.01.2010 20:22
Wohnort: An der Ostsee
Kontaktdaten:

Re: Eigene Funktion - Variable mehrfach in ForEach ()

Beitrag von HabNurNeFrage »

Hi,

wie cool ist das denn schon wieder? 8)

Das erspart ja den recht nervigen Weg mit den Template-Variablen komplett.

[größenwahn_mode]
Könnte man dann nicht auch den erzeugten String als Ordnerebene dazwischen packen und per .htaccess wieder rausfiltern?
[/größenwahn_mode]

Kann man eigentlich die Sessions für Bots und Gäste deaktivieren, also Cookie => ja, Session ID => nein?

LG

PS: Auf jeden Fall nochmal komplett im php... //der Schädel brummt und der Überblick über die vielen Tabs im Notepad schwindet
| HomeStory.org - the friendly Community | Forum für alle Lebenslagen | <"}))}~ | Nicht nachmachen: Meine phpBB Spielereien |
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };
Antworten

Zurück zu „Coding & Technik“