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

Post custom hacks and enhancements for phpwcms here only. Maybe some of these things will be included in official release later.
Post Reply
User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

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

Post 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
Last edited by flip-flop on Mon 14. Dec 2009, 18:12, edited 9 times in total.
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
User avatar
marcus@localhorst
Posts: 815
Joined: Fri 28. May 2004, 11:31
Location: localhorst
Contact:

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

Post 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
User avatar
jsw_nz
Posts: 907
Joined: Fri 2. Apr 2004, 02:42
Location: New Zealand

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

Post 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 ?
:)
design
Posts: 68
Joined: Thu 17. Feb 2005, 17:19

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

Post 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:
torquemada
Posts: 24
Joined: Thu 20. Jul 2006, 12:44
Location: Las Palmas de Gran Canaria
Contact:

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

Post 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
User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

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

Post 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
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
User avatar
update
Moderator
Posts: 6455
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

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

Post 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?
It's mostly all about maintaining two or three customer's sites Still supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
torquemada
Posts: 24
Joined: Thu 20. Jul 2006, 12:44
Location: Las Palmas de Gran Canaria
Contact:

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

Post 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.
torquemada
Posts: 24
Joined: Thu 20. Jul 2006, 12:44
Location: Las Palmas de Gran Canaria
Contact:

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

Post 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 ...
User avatar
update
Moderator
Posts: 6455
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

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

Post 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 ;)
It's mostly all about maintaining two or three customer's sites Still supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
User avatar
Jensensen
Posts: 3000
Joined: Tue 17. Oct 2006, 21:11
Location: auf der mlauer

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

Post 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.
{so_much} | Knick-Knack. | GitHub
Umlaute im URL sind meistens immer Kacke.
hausmeister
Posts: 219
Joined: Thu 18. Dec 2008, 12:45

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

Post by hausmeister »

hallo knut,

danke für die tolle arbeit.

der hausmeister
Post Reply