Итак, сначала вам нужно расширить Zend_Navigation_Page_Uri и добавить к нему свой образ, как показано ниже:
class Mylib_NavPageUriImage extends Zend_Navigation_Page_Uri
{
protected $_image = null;
public function setImage($image)
{
if (null !== $image && !is_string($image)) {
require_once 'Zend/Navigation/Exception.php';
throw new Zend_Navigation_Exception(
'Invalid argument: $image must be a string or null');
}
$this->_image = $image;
return $this;
}
public function getImage()
{
return $this->_image;
}
public function toArray()
{
return array_merge(
parent::toArray(),
array(
'image' => $this->getImage()
));
}
}
Добавить этот класс в библиотеку / Mylib / NavPageUriImage.php.
Чтобы сделать его пригодным для использования, вам нужно зарегистрировать пространство имен (мне нравится регистрировать мои пространства имен при начальной загрузке, но это также можно сделать из app.ini), поэтому в вашем классе начальной загрузки добавьте следующее:
function _initNamespace()
{
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace('Mylib_');
}
Тогда в вашем контроллере вы можете использовать:
$newSite = new Mylib_NavPageUriImage();
$newSite->uri = 'http://' . $_SERVER['HTTP_HOST'] . $item->getSpeakingUrl();
$newSite->lastmod = $item->getUpdatedAt();
$newSite->changefreq = 'weekly';
$newSite->image = 'some image';
СЛЕДУЮЩИЙ СЛЕДУЮЩИЙ НЕ РЕКОМЕНДУЕТСЯ, ВАМ НУЖНО РАСШИРЯТЬ СВОЮ ПОМОЩЬ НАВИГАЦИИ И ИСПОЛЬЗОВАТЬ, ЧТО (у меня просто нет времени поиграть с ним сейчас), ТОЛЬКО ДОБАВИТЬ ВАШ СОБСТВЕННЫЙ imageValidator
А затем в библиотеку / zend / view / helper / navigation / sitemap.php добавьте следующие строки (под оператором добавить элемент приоритета if мой заканчивается на 443, поэтому я добавил это на 444):
// add 'image' element if a valid image is set in page
if (isset($page->image)) {
$image = $page->image;
$imgDom = $dom->createElementNS(self::SITEMAP_NS, 'image:image');
$imgDom->appendChild($dom->createElementNS(self::SITEMAP_NS, 'image:loc', $image));
$urlNode->appendChild($imgDom);
}