<![CDATA[ setPlaceholder, getChunk â öèêëå, ÏÐÎÁËÅÌÓ ÐÅØÈË! - My Forums]]> https://forums.modx.com/thread/?thread=60937 <![CDATA[Re: setPlaceholder, getChunk â öèêëå, ÏÐÎÁËÅÌÓ ÐÅØÈË!]]> https://forums.modx.com/thread/60937/setplaceholder-getchunk#dis-post-353705 ]]> openagate Aug 01, 2006, 07:06 AM https://forums.modx.com/thread/60937/setplaceholder-getchunk#dis-post-353705 <![CDATA[Re: setPlaceholder, getChunk â öèêëå, ÏÐÎÁËÅÌÓ ÐÅØÈË!]]> https://forums.modx.com/thread/60937/setplaceholder-getchunk#dis-post-353704 ]]> aleksey.stepanov Aug 01, 2006, 01:37 AM https://forums.modx.com/thread/60937/setplaceholder-getchunk#dis-post-353704 <![CDATA[Re: setPlaceholder, getChunk â öèêëå, ÏÐÎÁËÅÌÓ ÐÅØÈË!]]> https://forums.modx.com/thread/60937/setplaceholder-getchunk#dis-post-353703 yentsun Jul 31, 2006, 06:22 PM https://forums.modx.com/thread/60937/setplaceholder-getchunk#dis-post-353703 <![CDATA[Re: setPlaceholder, getChunk â öèêëå, ÏÐÎÁËÅÌÓ ÐÅØÈË!]]> https://forums.modx.com/thread/60937/setplaceholder-getchunk#dis-post-353702 grin grin

òû áû ïî÷àùå çäåñü ïîÿâëÿëñÿ, ñýêîíîìèë áû ìíå êó÷ó âðåìåíè grin

äà, â êîíöå êîíöîâ ÿ ïîíÿë, êàê è ÷òî ïðîèñõîäèò , íî âîò êàê ðåøèòü ïðîáëåìó, î÷åíü äîëãî ñîîáðàæàë. ðåøèë òàêè, ðåøåíèå âûøå èçëîæèë, íî òâî¸ ðåøåíèå ìíå íðàâèòñÿ áîëüøå, ñïàñèáî áîëüøîå, âçÿë íà âîîðóæåíèå... âñ¸ îò òîãî, ÷òî, ïîâòîðÿþñü, ÿ íå âàðþ â php, à äåëàþ âñ¸, òóïî êîâûðÿÿ ïàðñåð, ïî÷èòûâàÿ äîêóìåíòàöèþ.

ñïàñèáî çà ïîìîùü. wink]]>
openagate Jul 31, 2006, 04:54 AM https://forums.modx.com/thread/60937/setplaceholder-getchunk#dis-post-353702
<![CDATA[Re: setPlaceholder, getChunk &#226; &#246;&#232;&#234;&#235;&#229;, &#207;&#208;&#206;&#193;&#203;]]> https://forums.modx.com/thread/60937/setplaceholder-getchunk#dis-post-353701

Представь себе, цикл выводит несколько раз подряд содержимое чанка:
[+title+]
[+pagetitle+]
------------
[+title+]
[+pagetitle+]
------------
[+title+]
[+pagetitle+]
------------
...

Как после этого парсер поймет, какой из title-ов ему надо заменить на какое значение? Значения плейсхолдеров задаются до парсинга документа. Если дважды задать значения одному плейсхолдеру, то возьмется последний вариант. Так что тут все неверно. Вот, что надо:

// получаю подразделы, стандартная функция
$children = $modx->getActiveChildren($pid, 'menuindex', 'ASC', 'id, pagetitle');

// Получаю чанк
$tpl=$modx->getChunk($chunk);

// делаю цикл для вывода
foreach($children as $child) 
 {
   $new_record=$tpl;
   
   // делаю цикл по всем полям документа
   foreach($child as $field=>$value) 
      $new_record = str_replace("[+$field+]", $value, $new_record);

   $output .=$new_record;  
}

return $output;
]]>
ur001 Jul 31, 2006, 04:38 AM https://forums.modx.com/thread/60937/setplaceholder-getchunk#dis-post-353701
<![CDATA[Re: setPlaceholder, getChunk -- âîïðîñ ñ ïðîãðàììåðàì PHP]]> https://forums.modx.com/thread/60937/setplaceholder-getchunk#dis-post-353700 ÿ ïîêà íå ïîíÿë, êàê ðåøèòü ïðîáëåìó, íàäî ïîêîâûðÿòü ditto, íî òàì ÷òî-òî íàâåð÷åíî ñ øàáëîíàìè tpl è ò. ï... åñòü êàêàÿ-òî âíóòðåííÿ ôóíêöèÿ $modx->parseChunk -- ïûòàþñü ïîíÿòü, çà êèì îíà:)

yentsun, ìîæåò, ó òÿ áóäåò âîçìîæíîñòü ïîèíòåðåñîâàòüñÿ ó Âèêà, êàê ìîæíî ðåøèòü ïðîáëåìó smiley ÿ á ñàì, êàíåøíà, íî ÿ êàêèì-òî äðóãèì àãëèöêèì âëàäåþ smiley ìåíÿ íå âñåãäà ïîíèìàþò íàòèâíûå íîñèòåëè smiley

]]>
openagate Jul 30, 2006, 11:54 AM https://forums.modx.com/thread/60937/setplaceholder-getchunk#dis-post-353700
<![CDATA[setPlaceholder, getChunk â öèêëå, ÏÐÎÁËÅÌÓ ÐÅØÈË!]]> https://forums.modx.com/thread/60937/setplaceholder-getchunk#dis-post-353699 âîò çäåñü http://modxcms.com/forums/index.php/topic,6107.0.html ÿ èçëîæèë êðàòåíüêî, êàê ìîæíî çàþçàòü setPlaceholder è getChunk.

ñòîëêíóëñÿ ñî ñëåäþùåé ïðîáëåìîé. åñòü òàêîé ñíèïïåò:

// ïîëó÷àþ ïîäðàçäåëû, ñòàíäàðòíàÿ ôóíêöèÿ
$children = $modx->getActiveChildren($pid, 'menuindex', 'ASC', 'id, pagetitle, description, alias, longtitle, menutitle, introtext');

// ïîäñ÷èòûâàþ äåòåé
$c = count($children);

// äåëàþ öèêë äëÿ âûâîäà
for($x=0; $x<$c; $x++) 
 {

   $id = $children[$x]['id'];
   $pagetitle = $children[$x]['pagetitle'];
   
   $modx->setPlaceholder('id', $id);
   $modx->setPlaceholder('title', $pagetitle);
  
   $output .= $modx->getChunk($chunk); 
 
}
  return $output;


íî âîò òóò-òî è çàñàäà, òàê êàê â öèêëå, êàê ÿ ïîíèìàþ, âñ¸ ìàññèâû -- è $pagetitle, è modx->setPlaceholder(’title’, $pagetitle), a âîò getChunk -- íåò, ò.å. ìíå $c ðàç âûâîäèòñÿ ÷àíê, íî ñ âõîäíûìè ïàðàìåíòðàìè ñ ïîñëåäíåãî öèêëà.

ìîæíî â öèêë çàñóíóòü, ê ïðèìåðó, $output .= $modx->getPlaceholder(’title’); -- âñ¸ íîðìàëüíî, ïîëó÷àåì $c ðàçíûõ $pagetitle. ïîêîïàë äîêóìåíòàöèþ, äà, òàê è åñòü, getPlaceholder -- array, à âîò getChunk -- íåò.

èëè ÿ òóïëþ ñî ñòðàøíîé ñèëîé è ïðè÷èíà â ÷¸ì -òî äðóãîì? grin

Ðåøåíèå ïðîáëåìû

ÿ òóò íèæå ñàì ñå îòâå÷àë, ÷òî ïðîáëåìà â òîì, ÷òî ÷àíê íå ïàðñèòñÿ, â ÷¸ì è âñÿ çàñàäà, ïðîáëåìà ðåøàåòñÿ ñëåäóþùèì îáðàçîì (ïðîãðàììåðû, ïîïðàâüòå ìåíÿ, ïîæàëóéñòà, à òî ÿ íå âàðþ â PHP, íàêîñÿ÷èòü ìîãó smiley ):

åñòü ôóíêöèÿ $modx->setPlaceholder ($fields, $values), åñòü $modx->getChunk($name) -- æåëàþùèå ìîãóò çàëåçòü â ïàðñåð è ãëÿíóòü, ÷¸ äà êàê smiley

êîðî÷å, â öèêë íàäî âñòàâèòü ñëåäóþùåå:
   $a = $modx->getChunk($chunk);
   $fields = array ('[+id+]', '[+title+]');
   $values = array ($id,$title);
   $output .= str_replace ($fields, $values, $a); 


âðîäå, ðàáîòàåò:)]]>
openagate Jul 30, 2006, 09:14 AM https://forums.modx.com/thread/60937/setplaceholder-getchunk#dis-post-353699