News - Features - Downloads - Forum - Team - Support - Switch View: Screen
Login - Registrierung - Passwort vergessen

Antworten: 7
Seite [1]
reVerB


Geekboy




Beiträge: 1237
# Thema - 07.06.2011 um 12:31 Uhr
Mit dem modrewrite wurde ja schon einmal ein großer Schritt Richtung SEO gemacht. Optimierungen am Aufbau von Artikeln etc kann man ja an den Themes machen. Aber nun habe ich vor, die Metatags für Artikel, News und Downloads zu optimieren. Das heißt, das diese Module eine eigene Beschreibung sowie eigene Keywords bekommen. Mein Plan ist, die ersten 160 Zeichen eines Newstextes, eines Artikeltextes und der Downloadbeschreibung beim Aufruf jeder Seite in die Metatags zu übernehmen. Der 2. Plan ist, alle Wörter, die groß geschrieben sind und nicht an einem Satzanfang stehen als Keywords einzusetzen. Außerdem soll der Artikel-, News- und Downloadtitel in die Titelleiste übernommen werden. Am besten wäre es aber, das man Keywords auch selber angeben kann, um das ganze selber zu optimieren.

Meine Frage:
Hat so etwas schon jemand. Man muss ja das Rad nicht neu erfinden, wenn es schon rollt.
Inaktiv
hajo ClanSphere Team


VIP - Poster




Herkunft: Barsbüttel
Beiträge: 9411
# Antwort: 1 - 07.06.2011 um 13:53 Uhr
bei z.b. forumthemen wie hier ist das forumthema immerhin im title angehängt, aber so etwas bildet in clansphere noch eher die ausnahme, ist also nicht generell verbaut und für metatags erst recht nicht.

wenn da wer etwas angefangen hat würde mich der ansatz dazu auch interessieren.


------------------
ClanSphere - professional clan care starts here

Inaktiv
|
reVerB
Thread-Ersteller


Geekboy




Beiträge: 1237
# Antwort: 2 - 07.06.2011 um 14:30 Uhr
Für den Anfang dachte ich mir, eine Funktion zu schreiben, die aus dem Text die Keywords holt. Diese werden zum Beispiel im Array data['meta_keywords'][$KEY] und die ersten 160 Zeichen des Textes in data['meta_discription'] gespeichert. Dies wird vom jeweiligen Modul getätigt. Ich würde aber wegen Performance vielleicht die Keywords in der Datenbank in einer zusätzlichen Tabelle sammeln, damit die Funktion nicht immer wieder neu arbeiten muss. Die Datei für {clansphere:navmeta} prüft dann einfach, ob die beiden Elemente im Data-Array vorhanden sind. Wenn nicht nimmt er die Standardeinstellungen von der Installation. Das gute ist, das man die eigenen Keywords durch die Cachetabelle in der Datenbank auch nachträglich für jedes Modul eintragen kann und dann in den Formularen einbinden kann.

EDIT:
Hier einmal der bisherige Code.

In die FUNCTIONS.PHP habe ich folgende Funktion hinzugefügt:
 
1.
2.
3.
4.
5.
6.
7.
1. / 2. / ... 
 function cs_metaclear($cleartext) {
    
// Entfernen aller Abcode-Tags
    
$cleartext preg_replace("=\[(.*?)\](.*?)\[/(.*?)\]=si","$2",$cleartext);
    
// Entfernen aller HTML-Tags
    
$cleartext preg_replace("=\<(.*?)\>(.*?)\</(.*?)\>=si","$2",$cleartext);
    return 
$cleartext;
}


Das sieht schon einmal ganz gut aus. Ist zwar noch nicht das aller beste. Aber es geht zumindest schon einmal für News und Artikel.

UPDATE 4:
Funktionieren tut es jetzt auch für die Downloads und für statische Seiten. Dazu sieht der Code der navmeta jetzt so aus:
 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
1. / 2. / ... 
<?php
// ClanSphere 2010 - www.clansphere.net
// $Id$

$cs_lang cs_translate('clansphere');

// Erfassen der Get-Parameter
$cs_get cs_get('id,where,mods');

$data = array();
$select 'metatags_id, metatags_name, metatags_content';
$where 'metatags_active = 1';
$order 'metatags_name';
$cs_metatags cs_sql_select(__FILE__,'metatags',$select,$where,$order,0,0'metatags');
$metatags_loop count($cs_metatags);

// Laden des Newstextes je nach Modul
// Funktioniert nur, wenn als Action View und eine ID übergeben wurde
if(!empty($cs_get['action']) and $cs_get['action'] == "view" and !empty($cs_get['id'])) {
  if(
$cs_get['mod'] == 'news' or $cs_get['mod'] == 'articles' or $cs_get['mod'] == 'static') {
    
$select $cs_get['mod']."_text";
    
$where $cs_get['mod']."_id=".$cs_get['id'];
    
$order $cs_get['mod']."_text";
    
$cs_description cs_sql_select(__FILE__,$cs_get['mod'],$select,$where,$order,0,0,$cs_get['mod']);
    
// Entfernen aller Abcodes und HTML-Bereiche und kürzen auf 160 Zeichen
    
$modmeta_description substr(trim(cs_metaclear($cs_description[0][$cs_get['mod'].'_text'])),0,156)." ...";
  
// Sonderfall bei Files, da der Text als Description und nicht als Text in der Datenbank ist
  
} else if($cs_get['mod'] == 'files') {
    
$select $cs_get['mod']."_description";
    
$where $cs_get['mod']."_id=".$cs_get['id'];
    
$order $cs_get['mod']."_description";
    
$cs_description cs_sql_select(__FILE__,$cs_get['mod'],$select,$where,$order,0,0,$cs_get['mod']);
    
// Entfernen aller Abcodes und HTML-Bereiche und kürzen auf 160 Zeichen
    
$modmeta_description substr(trim(cs_metaclear($cs_description[0][$cs_get['mod'].'_description'])),0,156)." ...";
  }
}

for(
$run 0$run $metatags_loop$run++) {
  
$cs_metatags[$run]['name'] = $cs_metatags[$run]['metatags_name'];
  
// Prüfen, ob eine alternative Description geladen wurde und ersetzen der CSP-Description
  
if(isset($modmeta_description) and $cs_metatags[$run]['metatags_name'] == 'description') {
    
$cs_metatags[$run]['content'] = $modmeta_description;
  } else {
    
$cs_metatags[$run]['content'] = $cs_metatags[$run]['metatags_content'];
  }
}

$data['metatags'] = $cs_metatags;

echo 
cs_subtemplate(__FILE__,$data,'clansphere','navmeta');


Zuletzt editiert von reVerB am 07.06.2011 um 21:16 Uhr (5x Editiert)
Inaktiv
|
hajo ClanSphere Team


VIP - Poster




Herkunft: Barsbüttel
Beiträge: 9411
# Antwort: 3 - 07.06.2011 um 19:58 Uhr
sieht schon interessant aus, was geht damit jetzt soweit schon?

wäre vielleicht nicht schlecht, wenn deine änderungen dabei auch teils mit hinweisen versiehst zum nachverfolgen.


------------------
ClanSphere - professional clan care starts here

Inaktiv
|
reVerB
Thread-Ersteller


Geekboy




Beiträge: 1237
# Antwort: 4 - 07.06.2011 um 21:22 Uhr
Soo ich habe die Codes oben noch einmal ein wenig Kommentiert.

Diese Änderungen sorgen dafür, das wenn man eine News öffnet, einen Artikel liest, eine statische Seite offen hat oder sich auf der Detailseite eines Downloads befindet, in den Metatags unter dem Punkt Description vom jeweiligen Text die ersten 156 Zeichen genommen werden und das " ..." dahinter gehängt wird.

Dadurch wird auf den entsprechenden Seiten nicht der Standard-Text aus den Optionen angezeigt, sondern es wird dieser an die jeweilige Seite angepasst. Das gilt natürlich nur für die jeweiligen Views.

Leider wird die Navmeta vorm Seitencontent verarbeitet. Dadurch muss ein weiteres Query an die Datenbank erfolgen, um die Infos rauszuholen. Gut wäre es vielleicht, die Metatags als func-Platzhalter so einzuarbeiten, das es definitiv nach Func:Show verarbeitet wird. Dadurch könnte man einfach die Infos beim Aufruf der Seite mitverarbeiten und benötigt kein weiteres Query.


Inaktiv
|
reVerB
Thread-Ersteller


Geekboy




Beiträge: 1237
# Antwort: 5 - 01.07.2011 um 09:59 Uhr
Ich habe nun einige Änderungen vorgenommen, da der reguläre Ausdruck für die HTML-Tags nicht richtig ging. Jetzt funktioniert es. Nun stört nur noch das Caching. Denn leider zeigt er mir bei einer anderen News immer noch den Text der alten an.


Inaktiv
|
cbw.lava


Rock the board





Beiträge: 63
# Antwort: 6 - 01.07.2011 um 15:59 Uhr
Die Umsetzung mit der Meta-Description finde ich sehr gut. Aber ob sich der Aufwand für die Keywords lohnt? Google z.B. bezieht diese nicht in das Ranking mit ein, schaden tun sie wohl allerdings auch nichts, wenn sie tatsächlich auch im Seitencontent vorkommen, was bei einer automatischen Generierung aus diesem ja gewährleistet wäre.


Inaktiv
|
reVerB
Thread-Ersteller


Geekboy




Beiträge: 1237
# Antwort: 7 - 01.07.2011 um 22:04 Uhr
Für die Keywords mach ich das auch nicht. Es soll im Endeffekt die Integration der eigenen Beiträge in Social-Networks verbessern. Denn aktuell wird über Plugins wie ShareThis oder AddThis die Description mit übergeben und als Link Description in z.B. Facebook genutzt. Das Problem bei CSP ist nur, das es eine Description für die Ganze Seite gibt. Und das sieht doof aus. Muss jetzt nur ne Lösung für das Caching finden und dann bin ich zufrieden.


Inaktiv
|
Antworten: 7
Seite [1]


Sie müssen sich registrieren, um zu antworten.


ClanSphere Project - Mailus - Imprint - Disclaimer - Scriptinfo