We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 17130
    • 3 Posts
    Как узнать id родительского документа на несколько уровней вверх(2,3 и более). А точнее какая переменная хранит в себе эту информацию?
      • 785
      • 2,113 Posts
      См. код сниппета UltimateParent
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 17130
        • 3 Posts
        UltimateParent, разобрался. Но он мне не совсем подходит. Я создаю rss ленту и использую ditto.
        Документы организованы таким способом:
        Ресурс1(1)
        - Ресурс2(2)
        - Ресурс3(3)
        Ресурс4(4)
        - Ресурс5(5)
        - Ресурс6(6)
        Код ditto находится в корне, ресурс rss.
        [[Ditto? &tpl=`rss` &parents=`1,4` &display=`all` &total=`all` &depth=`3`]]

        &tpl=`rss` - шаблон вывода ditto.

        В этом шаблоне есть кусок кода <link>[(site_url)][~[[UltimateParent? &top=`2`]]~]</link>
        При таком варианте выдает линк на документ в котором этот код, т.е линк на rss. А мне нужно линк на ресурс1 при первом вызове ditto и на ресурс4 при втором.
        P.S. Если использую [+parent+] вместо UltimateParent, то работает нормально но ссылки мне нужны на уровень выше, а [+parent+] это сделать не может.



          • 1035
          • 81 Posts
          Quote from: like2live at Apr 19, 2011, 12:13 PM

          ... Я создаю rss ленту и использую ditto ...

          А я не использую Ditto для RSS ленты вот таким способом:
          <?php
          	define('DATE_FORMAT_RFC822','r');
          	$lastBuildDate=date(DATE_FORMAT_RFC822);
          	header("Content-type: text/xml; charset=UTF-8");
          if(isset($ids)){$ids=explode(",",$ids);$cnt_ids=count($ids);}
          ($NameOfRssFeed) ? $NameOfRssFeed : $NameOfRssFeed="NameOfRssFeed";
          ($LinkOfSiteThe) ? $LinkOfSiteThe : $LinkOfSiteThe="http://vuka-vuka.ru";
          ($DescOfSite) ? $DescOfSite : $DescOfSite="DescOfSite";
          ($Lang) ? $Lang : $Lang="ru";
          	$xmlbox="<?xml version=\"1.0\" encoding=\"UTF-8\"?><rss version=\"2.0\">
          	<channel>
          	<title>".$NameOfRssFeed."</title>
              <link>".$LinkOfSiteThe."</link>
              <description>".$DescOfSite."</description>
              <pubDate>".$lastBuildDate."</pubDate>
              <lastBuildDate>".$lastBuildDate."</lastBuildDate>
              <language>".$Lang."</language>
          	";
          	if($cnt_ids == 1){
          		$parents_box="`parent`=".$ids['0']." ";
          	}else{
          		$parents_box=$ids['0']." ";
          			for($i=1;$i<$cnt_ids;$i++)
          				{
          					$parents_box.=" OR `parent`=".$ids[$i]." ";
          				}
          	} unset($i);		
          $query = "SELECT `pagetitle`,`introtext`,`id`,`createdon`
                    FROM ".$modx->getfulltablename('site_content')." 
                    WHERE `published`=1 AND `id`<>".$modx->documentObject['id']." AND ".$parents_box." 
                    ORDER by `createdon` desc
                    LIMIT 0,10";
          $res = mysql_query($query);
          $row=$modx->db->getRow($res);
          	do
          		{
          			$title   = strip_tags(trim($row['pagetitle']));
          			$anon    = $row['introtext'];
          			$url     = "[~".$row['id']."~]";
          			$pubDate = date(DATE_FORMAT_RFC822, $row['createdon']);
          			$xmlbox.="<item>
          			<title>".$title."</title>
          			<description><![CDATA[".$anon."]]></description>
          			<link>".$modx->config['site_url'].$url."</link>
          			<pubDate>".$pubDate."</pubDate>
          			</item>
          			";
          		}
          	while ($row=$modx->db->getRow($res));	
          $xmlbox.="</channel></rss>";
          return $xmlbox;
          ?>
          


          smiley

          $ids - id парентов или парента ресурсов или ресурса для отображения в ленте
          $NameOfRssFeed - имя ленты (имя сайта/блога например)
          $LinkOfSiteThe - ссылка сайта/блога
          $DescOfSite - описание сайта/блога
          $Lang - не обязательно задавать этот параметр если у Вас RU сайт/блог
            Чем я занят на данный момент, читайте в этой теме: [EVO] Ресурс-контроллер?
            • 17130
            • 3 Posts
            Нашел другой выход, пересмотрел реализацию новостной ленты и заметил, что не до конца все продумал. Линки на документ в rss у меня не всегда будут на 2 родителя вверх, иногда линки будут на другие документы не из этого дерева. Поэтому лучший вариант было использовать TV. По умолчанию задал несколько линков которые будут использоваться всегда и если нужно будет другой линк то поменять будет не сложно.
             [[Ditto? &tpl=`rss` &parents=`60,61`  &display=`all` &total=`all` &depth=`2`]]
             
             //код шаблона rss
            <item>
                  <title>[+pagetitle+]</title>
                  <description>[+introtext+]</description>
                  <link>[+tvrss_link+]</link>
                  <pubDate>[*createdon:date=`%Y-%m-%d`*]</pubDate>
            </item> 
            
            



            Alextekkk, твой код решает мой вопрос, предыдуший?