Seite 1 von 1

simples Metatag Modul

Verfasst: So 26. Apr 2009, 16:11
von _wiewo_
Hallo Community

Da ich gerade einen seitenübergreifenden Metatag meiner Seite hinzufügen wollte, dachte ich mir: Warum ins Layout packen wenn man es nicht auch als fixes Modul in den Head packen kann und die Werte in den Mandanteneinstellungen speichert.
Also.. gedacht... gemacht...

Und da ist es

Code: Alles auswählen

<?php
// wichtige Klassen includen
cInclude('classes', 'contenido/class.client.php');

// Objekte initialisieren
$oClient = new cApiClient($client);

// MetatagArray mit Werten füllen
$aMetatags = $oClient->getPropertiesByType("meta");

// Array durchlaufen und Metatags ausgeben
foreach($aMetatags as $sName => $sContent)
{
	echo "<meta name=\"".$sName."\" content=\"".$sContent."\" />";
}
?>
Gespeichert in den Mandateneinstellungen wird so:
Type => meta
Name => verify-v1
Wert => xpMH6deRXVMoyeYYOj0YnV+TqSiW7UNhZpn9AfgSoZw=

daraus wird auf der Seite <meta name="verify-v1" content="xpMH6deRXVMoyeYYOj0YnV TqSiW7UNhZpn9AfgSoZw=" />


und da ist jetzt nen Problem was ich hab... das + zwischen V und T wird nicht angezeigt
mach ich print_r($aMetatags); zeigters auch nicht an
die funktion getPropertiesByType nimmt mir das + da irgendwie weg, hat da jemand ne idee wie ich das dahinbekomm?

in der datenbank ist der eintrag so gespeichert => xpMH6deRXVMoyeYYOj0YnV%2BTqSiW7UNhZpn9AfgSoZw%3D

ruf ich die mandanteneinstellungen auf wird mir das + dort richtig angezeigt

PS: Das ist jetzt nen Beispiel um ne Domain beim Google Webmaster-Tools zu verifizieren.

Mit freundlichen Grüßen
Christian Kehres


EDIT
Auszug aus der class.properties.php

Code: Alles auswählen

function getValuesByType ($itemtype, $itemid, $type)
	{
		$aResult = array();
		$itemtype 	= Contenido_Security::escapeDB($itemtype, null);
		$itemid 	= Contenido_Security::escapeDB($itemid, null);
		$type 		= Contenido_Security::escapeDB($type, null);
		
		if (isset($this->client))
		{		
			$this->select("idclient = '".$this->client."' AND itemtype = '".$itemtype."' AND itemid = '".$itemid."' AND type = '".$type."'");
		} else {
			$this->select("itemtype = '".$itemtype."' AND itemid = '".$itemid."' AND type = '".$type."'");			
		}
		
		while ($item = $this->next())
		{
			$aResult[$item->get("name")] = urldecode($item->get("value"));
		}
		
		return $aResult;
	}
So diese Funktion ließt die Werte aus, und ich denke mal das es an

Code: Alles auswählen

$aResult[$item->get("name")] = urldecode($item->get("value"));
liegt warum der mir das "+" zerhaut

jemand ne Idee wie man das umgehen kann?

NOCH NEN EDIT
mach ich von hand

Code: Alles auswählen

<?php echo urldecode('xpMH6deRXVMoyeYYOj0YnV%2BTqSiW7UNhZpn9AfgSoZw%3D'); ?>
gibter mir es korrekt mit dem "+" aus, also warum nicht wenn der das da mit der funktion ausließt? =/

Re: simples Metatag Modul

Verfasst: Fr 22. Mai 2009, 07:47
von _wiewo_
Hat für das kleine Problem keiner nen tip für mich? :(

Re: simples Metatag Modul

Verfasst: Fr 22. Mai 2009, 08:44
von Dodger77
Das könnte ein Bug sein. Bitte teste mal, ob es eine Änderung bringt, das urldecode() wegzulassen, also:

Code: Alles auswählen

function getValuesByType ($itemtype, $itemid, $type)
   {
      $aResult = array();
      $itemtype    = Contenido_Security::escapeDB($itemtype, null);
      $itemid    = Contenido_Security::escapeDB($itemid, null);
      $type       = Contenido_Security::escapeDB($type, null);
      
      if (isset($this->client))
      {      
         $this->select("idclient = '".$this->client."' AND itemtype = '".$itemtype."' AND itemid = '".$itemid."' AND type = '".$type."'");
      } else {
         $this->select("itemtype = '".$itemtype."' AND itemid = '".$itemid."' AND type = '".$type."'");         
      }
      
      while ($item = $this->next())
      {
         $aResult[$item->get("name")] = $item->get("value");
      }
      
      return $aResult;
   }
Das könnte daran liegen, dass die Klasse PropertyItem als Ableitung von der GenericDB bereits ein urldecode als Ausgabefilter verwendet. Dabei wird aus dem "%2B" bereits das "+", das weitere urldecode() macht dann daraus ein Leerzeichen.

Re: simples Metatag Modul

Verfasst: Fr 22. Mai 2009, 08:49
von _wiewo_
>< hät ich ja auch mal selber raufkommen können, naja :oops:

aber..., dankeeeeeeeeee :) klappt :!: