Page 1 of 1

{ARTICLE[[TITLE][ID][ALIAS]]} {CATEGORY[[ID][ALIAS]]}

Posted: Tue 14. Oct 2008, 07:38
by flip-flop
Some standard tags assembled: Newest version at Standard tags assembled (09/06/25)

TAG:
------------------------------------------------------------------------------
{ARTICLE_TITLE} {ARTICLE_ID} {ARTICLE_ALIAS}
{TOPLEVEL} {TOPLEVEL_ALIAS}
{PAGETITLE} = {CATEGORY} (since v1.3.5 )
{CATEGORY_ID} {CATEGORY_ALIAS}
{PARENT_CATEGORY_ID} {PARENT_CATEGORY_ALIAS}


Filename: rt_cat_article_id.php
Folder: /template/inc_script/frontend_render/
Switch: $phpwcms['allow_ext_render'] = 1; (/config/phpwcms/conf.inc.php)

Code: Select all

<?php
/******************************************************************
V1.2
14.10.2008 Tags assembled by (KH) flip-flop
26.01.2009 Update +  {TOPLEVEL_ALIAS}
11.10.2009 Update +  {PARENT_CATEGORY_ID}, {PARENT_CATEGORY_ALIAS}
           Update - kill  "$GLOBALS", we don´t need it 

TAG:
{ARTICLE_TITLE} {ARTICLE_ID} {ARTICLE_ALIAS}
{TOPLEVEL} {TOPLEVEL_ALIAS}
{PAGETITLE} = {CATEGORY} (since v1.3.5 )
{CATEGORY_ID} {CATEGORY_ALIAS}
{PARENT_CATEGORY_ID} {PARENT_CATEGORY_ALIAS}

Filename: rt_cat_article_id.php
Folder:  /template/inc_script/frontend_render/
Switch:  $phpwcms['allow_ext_render'] = 1; (/config/phpwcms/conf.inc.php)

Forum:   http://forum.phpwcms.org/viewtopic.php?p=110038#p110038
*******************************************************************/
// ----------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) {
   die("You Cannot Access This Script Directly, Have a Nice Day."); }
// ----------------------------------------------------------------


// {ARTICLE_ replacement
// =======================================================
if( ! (strpos($content["all"],'{ARTICLE_')===false)) {
 
    // {ARTICLE_TITLE}  -> ARTICLE_TITLE replacement
    // -----------------------------------------------------
    if( ! (strpos($content["all"],'{ARTICLE_TITLE}')===false)) {
       $content["all"] = str_replace('{ARTICLE_TITLE}', $content['article_title'], $content["all"]);
    }
 
    // {ARTICLE_ID}  -> ARTICLE_ID replacement
    // since V1.4.2 r316 (09/06/24) this tag is replaced default by **{CURRENT_ARTICLEID}**
    // -----------------------------------------------------
    if( ! (strpos($content["all"],'{ARTICLE_ID}')===false)) {
       $content["all"] = str_replace('{ARTICLE_ID}', $content['article_id'], $content["all"]);
    }
 
    // {ARTICLE_ALIAS}  -> ARTICLE_ALIAS replacement
    // -----------------------------------------------------
    if( ! (strpos($content["all"],'{ARTICLE_ALIAS}')===false)) {
       $content["all"] = str_replace('{ARTICLE_ALIAS}', $content['articles'][$content['article_id']]['article_alias'], $content["all"]);
    }
}

// {TOPLEVEL replacement
// =======================================================
if( ! (strpos($content["all"],'{TOPLEVEL')===false)) {

	// {TOPLEVEL}  -> TOPLEVEL replacement
	// -----------------------------------------------------
	if( ! (strpos($content["all"],'{TOPLEVEL}')===false)) {

	$cur_toplevel_name = '';
	$nav_point_listing = get_breadcrumb($content["cat_id"], $content['struct']);

		if(isset($nav_point_listing) && count($nav_point_listing) > 1) {
		   reset($nav_point_listing);
		   next($nav_point_listing);
		   $cur_toplevel_name = html_specialchars($content['struct'][ intval(key($nav_point_listing)) ]['acat_name']);
		}
	$content['all'] = str_replace('{TOPLEVEL}', $cur_toplevel_name, $content['all']);
	}
	// -----------------------------------------------------


	// {TOPLEVEL_ALIAS}  -> TOPLEVEL ALIAS replacement
	// -----------------------------------------------------
	if( ! (strpos($content["all"],'{TOPLEVEL_ALIAS}')===false)) {

	$cur_toplevel_alias = '';
	$nav_point_listing = get_breadcrumb($content["cat_id"], $content['struct']);

	if(isset($nav_point_listing) && count($nav_point_listing) > 1) {
	   reset($nav_point_listing);
	   next($nav_point_listing);
	   $cur_toplevel_alias = html_specialchars($content['struct'][ intval(key($nav_point_listing)) ]['acat_alias']);
	}
	$content['all'] = str_replace('{TOPLEVEL_ALIAS}', $cur_toplevel_alias, $content['all']);
	}
// -------------------------------------------------------
}



// {PAGETITLE}  -> PAGETITLE replacement
// since V1.3.5 this tag is replaced default by {CATEGORY}
// =======================================================
if( ! (strpos($content["all"],'{PAGETITLE}')===false)) {
   $content["all"] = str_replace('{PAGETITLE}', $content["struct"][$content["cat_id"]]["acat_name"], $content["all"]);
}


// {CATEGORY_ replacement
// =======================================================
if( ! (strpos($content["all"],'{CATEGORY_')===false)) {

	// {CATEGORY_ID}  -> CATEGORY ID replacement
	// -----------------------------------------------------
	if( ! (strpos($content["all"],'{CATEGORY_ID}')===false)) {
	   $content["all"] = str_replace('{CATEGORY_ID}', $content["struct"][$content["cat_id"]]["acat_id"], $content["all"]);
	}

	// {CATEGORY_ALIAS}  -> CATEGORY ALIAS replacement
	// -----------------------------------------------------
	if( ! (strpos($content["all"],'{CATEGORY_ALIAS}')===false)) {
	   $content["all"] = str_replace('{CATEGORY_ALIAS}', $content["struct"][$content["cat_id"]]["acat_alias"], $content["all"]);
	}
}



// {PARENT_CATEGORY_ replacement
// =======================================================

	// {PARENT_CATEGORY_ID}  -> PARENT_CATEGORY replacement
	// -----------------------------------------------------
if( ! (strpos($content["all"],'{PARENT_CATEGORY_')===false)) {
	// {PARENT_CATEGORY_ID}  -> PARENT_CATEGORY ID replacement
	// -----------------------------------------------------
	if( ! (strpos($content["all"],'{PARENT_CATEGORY_ID}')===false)) {
	   $content["all"] = str_replace('{PARENT_CATEGORY_ID}', 
	   $content["struct"][$content["cat_id"]]["acat_struct"], 
	   $content["all"]);
	}

	// {PARENT_CATEGORY_ALIAS}  -> PARENT_CATEGORY ALIAS replacement
	// -----------------------------------------------------
	if( ! (strpos($content["all"],'{PARENT_CATEGORY_ALIAS}')===false)) {
	   $content["all"] = str_replace('{PARENT_CATEGORY_ALIAS}', 
	   $content["struct"][$content["struct"][$content["cat_id"]]["acat_struct"]]["acat_alias"], 
	   $content["all"]);
	}
}


// -----------[ CLOSE ]----------------
?>
UPDATE 26.01.09 + {TOPLEVEL_ALIAS}
UPDATE 11.10.09 + {PARENT_CATEGORY_ID}, {PARENT_CATEGORY_ALIAS}
UPDATE 13.10.09 + {PARENT_CATEGORY_TITLE}, [LEVEL_START:StartLevel:EndLevel]. . . . .[/LEVEL_START] -> Standard tags assembled

Knut

Re: {ARTICLE[[TITLE][ID][ALIAS]]} {CATEGORY[[ID][ALIAS]]}

Posted: Tue 14. Oct 2008, 08:34
by marcus@localhorst
cool, danke für die snippets. apropo snippets - wie wäre es, sowas auch bei snipplr.com zu posten?
grüße
marcus

Re: {ARTICLE[[TITLE][ID][ALIAS]]} {CATEGORY[[ID][ALIAS]]}

Posted: Wed 15. Oct 2008, 16:28
by jsw_nz
Nice one Knut -- to have everything in one place
- would be nice to add to the backend replacement tags widget (left sidebar)
- that you worked on -might this be possible ?
:)

Re: {ARTICLE[[TITLE][ID][ALIAS]]} {CATEGORY[[ID][ALIAS]]}

Posted: Thu 26. Feb 2009, 17:38
by design
Thank you very much Knut! It's really really useful!!

Frequently I use this structure:
HOME
------ENG >>> {TOPLEVEL_ALIAS}
----------VOICE1
----------------SUB_VOICE1
----------------SUB_VOICE2
----------------SUB_VOICE3
----------VOICE2
----------VOICE2
------IT
----------VOICE1
----------VOICE2
----------VOICE2

So thanks to knut's fantastic code I just add a line to obtain the alias of VOICEx or two lines to obtain the alias of SUB_VOICEx.

Code: Select all

// {TOPCATEGORY_ALIAS}  -> TOPCATEGORY_ALIAS replacement
// -----------------------------------------------------
if( ! (strpos($content["all"],'{TOPCATEGORY_ALIAS}')===false)) {

$cur_toplevel_alias = '';
$GLOBALS['nav_point_listing'] = get_breadcrumb($GLOBALS['content']["cat_id"], $GLOBALS['content']['struct']);

if(isset($GLOBALS['nav_point_listing']) && count($GLOBALS['nav_point_listing']) > 1) {
   reset($GLOBALS['nav_point_listing']);
   next($GLOBALS['nav_point_listing']);
   next($GLOBALS['nav_point_listing']); // new line for VOICEx
 // next($GLOBALS['nav_point_listing']); [b] (Add this line if you want SUB_VOICEx)[/b]
   $cur_toplevel_alias = html_specialchars($GLOBALS['content']['struct'][ intval(key($GLOBALS['nav_point_listing'])) ]['acat_alias']);
}
$content['all'] = str_replace('{TOPCATEGORY_ALIAS}', $cur_toplevel_alias, $content['all']);
}
So thanks again to Knut! I hope that this message can be useful to dummies like me! :lol:

Re: {ARTICLE[[TITLE][ID][ALIAS]]} {CATEGORY[[ID][ALIAS]]}

Posted: Tue 3. Mar 2009, 03:59
by torquemada
Wäre es schwierig auch z.B. den {CATEGORY_ALIAS} in den HEAD-Bereich einer Seite zu schreiben? Ich habs ausprobiert doch die Ersetzungen funktionieren nur im Inhalt.

Zugrundeliegendes Problem:
Goolge hat ein neues Metatag für die Suchmaschinen zur Vefügung gestellt: <link rel="canonical", welches dazu dient doppelten Content zu vermeiden und die präferierte Version einer URL bei der Indizierung anzuzeigen. In meiner knapp ca.1000 urls umfassenden (phpwcms) sitemap.php meckern die Webmastertools über dutzende von doppelt indizierten Seiten, es werden oft Seiten einmal mit der Kategorie-ID, dann mit dem Kategorie-Alias oder mit index.php? + Artikel ID´s gleichzeitig indiziert, der Inhalt ist aber immer der gleiche. Eine meiner wichtigsten Seiten muß deshalb den Pagerank mit den Zwillingsbrüdern teilen, das würde ich gerne generell verbessern, ohne überall von Hand den neuen Canonical Tag ins Template einzutragen (welches sowieso oft für mehrere Seiten genutzt wird).

Ich würde also gerne folgendes in meine Templates einbauen um die URL mit dem CATEGORY_ALIAS als präferierte URL auszuweisen:
<link rel="canonical" href="index.php?{CATEGORY_ALIAS}" />

Auch andere Meta <link rel="> Tags könnte man mit CPs teilweise sinnvoll füllen, zum Beispiel für bessere Barrierefreiheit in der Navigation
Wäre dankbar für eine Hilfe, ich glaube die Lösung interessiert auch andere, die bei den Suchmaschinen im harten Wettbewerb stehen.

Hier noch der Artikel zur Erklärung:
http://googlewebmastercentral.blogspot. ... nical.html

Re: {ARTICLE[[TITLE][ID][ALIAS]]} {CATEGORY[[ID][ALIAS]]}

Posted: Tue 3. Mar 2009, 15:28
by flip-flop
Hallo,

in /frontend_render/rt_canonical_alias.php oder die rt_cat_article_id.php einfach erweitern:

Code: Select all

<?php
/* ================================================================
 03.03.2008 (KH) flip-flop
Output: <link rel="canonical" href="index.php?{CATEGORY_ALIAS}" />

 Filename: rt_canonical_alias.php
 Folder:   /template/inc_script/frontend_render/
 Switch:   $phpwcms['allow_ext_render'] = 1; (/config/phpwcms/conf.inc.php)
 
 Forum:   http://forum.phpwcms.org/viewtopic.php?p=114327#p114327
   ================================================================ */
// ----------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) {
   die("You Cannot Access This Script Directly, Have a Nice Day."); }
// ----------------------------------------------------------------

$block['custom_htmlhead']['index.php']	= '  <link rel="canonical" href="index.php?'.$GLOBALS['content']["struct"][$GLOBALS['content']["cat_id"]]["acat_alias"].'" />';
// -----------[ CLOSE ]----------------
?>
Knut

Re: {ARTICLE[[TITLE][ID][ALIAS]]} {CATEGORY[[ID][ALIAS]]}

Posted: Tue 3. Mar 2009, 16:08
by update
Wieder mal ein Kunststückchen ;)

Wenn ich jedoch mehrere Artikel in einer Kategorie habe, wird mir für jeden Artikel dieselbe kanonische (Kategorie-) url- Bezeichnung ausgegeben.
Wäre es daher nicht besser, den Artikel- Alias statt des Kategorie- Alias' zu nehmen?
Oder rase ich da gerade unbemerkt an was vorbei?

Re: {ARTICLE[[TITLE][ID][ALIAS]]} {CATEGORY[[ID][ALIAS]]}

Posted: Tue 3. Mar 2009, 17:10
by torquemada
claus wrote:Wieder mal ein Kunststückchen ;)

Wenn ich jedoch mehrere Artikel in einer Kategorie habe, wird mir für jeden Artikel dieselbe kanonische (Kategorie-) url- Bezeichnung ausgegeben.
Wäre es daher nicht besser, den Artikel- Alias statt des Kategorie- Alias' zu nehmen?
Oder rase ich da gerade unbemerkt an was vorbei?
An sich richtig, wenn du aber z.B. mit den weiteren Artikeln nur den {CONTENT} austauscht, ist es zumindest teilweise doppelter Content (in den restlichen Containern). Für möglichst wirksame optimierte Seiten sind die Sub-Artikel nach meiner Erfahrung sowieso nicht gerade ideal. Doppelten Content erkennt der Crawler mit der Zeit auf jeden Fall.

Re: {ARTICLE[[TITLE][ID][ALIAS]]} {CATEGORY[[ID][ALIAS]]}

Posted: Tue 3. Mar 2009, 17:16
by torquemada
flip-flop wrote:Hallo,

in /frontend_render/rt_canonical_alias.php oder die rt_cat_article_id.php einfach erweitern:
Knut
Hallo Flip Flop, tausend Dank – das ging ja rasend schnell und funktioniert einwandfrei!

Da bin ich eine Gefallen schuldig ...

Re: {ARTICLE[[TITLE][ID][ALIAS]]} {CATEGORY[[ID][ALIAS]]}

Posted: Tue 3. Mar 2009, 17:53
by update
Naja, das kann ja nicht sein, dass ich für jeden Artikel eine Kategorie anlegen muss - da ende ich ja bald bei 1000 Katekalorien.
Ich bin also (auch) der/demjenigen eine Gefallene schuldig, die/der mir erklärt, warum ich Kategorarien melden sollte, wo mir die bei google gemeldete sitemap.php doch Artikelaliase ausspuckt ;)

Re: {ARTICLE[[TITLE][ID][ALIAS]]} {CATEGORY[[ID][ALIAS]]}

Posted: Wed 4. Mar 2009, 00:24
by Jensensen
torquemada wrote:... Doppelten Content erkennt der Crawler mit der Zeit auf jeden Fall.
Wenn man für jeden Artikel - wohlgemerkt hübsch formatierten {CONTENT} vorhält, ist jeder Crawler glücklich. So kann er sich beispielsweise in einen eindeutigen Titel H1 vertiefen, anschließend mit einem interessanten subtitle h2 anfreunden und den restlichen, gleichsam spannenden und abwechselungsreichen {CONTENT} einsaugen, mit mehreren p, h3, h4 usw.

Wenn dann in LEFT und RIGHT oder sonstwo immer wieder die (eine oder neue) Navi steht, oder SHOW_CONTENT-Downloads usw., hat das erfahrungsgemäß bei mir noch keinen Crawler verärgert. Vielleicht freut er sich auch gelegentlich über einen neuen "Teaser". Kann sone Webcrawler links und rechts überhaupt unterscheiden?
"Doppelter Content" ist etwas anderes, meine ich.

Ich gebe claus vollkommen Recht.

Re: {ARTICLE[[TITLE][ID][ALIAS]]} {CATEGORY[[ID][ALIAS]]}

Posted: Wed 23. Jun 2010, 10:39
by hausmeister
hallo knut,

danke für die tolle arbeit.

der hausmeister