Page 1 of 1
Как передать параметр в модуль?
Posted: Sat Sep 18, 2010 12:42 pm
by lisrenegade
Господа, не могу понять, как передать парметр в модуль.
Например, на странице использую код для вызова модуля:
{positions_small start_from="andrew-martin"}
andrew-martin - это нужно передать в модуль.
------------------
Вот сюда на место ХХХХХ нужно передать "andrew-martin":
$rootnode =& $hm->sureGetNodeByAlias(ХХХХХ);
Как это сделать?
Заранее спасибо.
Re: Как передать параметр в модуль?
Posted: Mon Sep 20, 2010 6:11 am
by Fenik17
В какой модуль?
Параметры передаются, к примеру, так:
{cms_module module='album' action='recently_updated' number='15'}
Re: Как передать параметр в модуль?
Posted: Mon Sep 20, 2010 6:16 am
by Fenik17
Если же это плагин, то так:
{my_plugin alias='hello'}
В коде плагина:
Code: Select all
function smarty_cms_function_my_plugin($params, &$smarty)
{
if (isset($params['alias']) {
global $gCms;
$manager =& $gCms->GetHierarchyManager();
$currentNode = &$manager->sureGetNodeByAlias($params['alias']);
if ($currentNode) {
// todo
}
}
}
Re: Как передать параметр в модуль?
Posted: Mon Sep 20, 2010 7:34 am
by lisrenegade
Я пока плохо понимаю все эти структуры, поэтому ниже приведу свой текущий код.
Суть его в том, что сейчас строчкой в самом коде модуля "$pos_small = 'andrew-martin';" я задаю то, что должен задавать при помощи вызывающей строчки в контенте вида "{positions_small start_from="andrew-martin"}"
Вот, если Вас не затруднит, измените мою конструкцию должным образом.
Заранее спасибо.
Code: Select all
<?php
if (!isset($gCms)) exit;
$pos_small = 'andrew-martin';
$hm =& $gCms->GetHierarchyManager();
$nodelist = array();
$count = 0;
$getchildren = true;
$rootnode = null;
$prevdepth = 1;
$showparents = array();
$rootnode =& $hm->sureGetNodeByAlias($pos_small);
if ($origdepth == 0)
$origdepth = $prevdepth;
$menuman = $this->GetModuleInstance('MenuManager');
$menuman->GetChildNodes($rootnode, $nodelist, $gCms, $prevdepth, $count, $params, $origdepth, $showparents, $deep);
$links=array();
foreach($nodelist as $node)
{
if($node->depth==3) $l3title=$node->pagetitle;
elseif ($node->depth==4) {
$onenode=$hm->sureGetNodeById($node->id);
$contentobj =& $onenode->GetContent();
$props=$contentobj->mProperties->mPropertyNames;
$avail = null;
if ( in_array('Наличие',$props)){
$avail=$contentobj->GetPropertyValue('Наличие');
}
if($avail && $avail!='')
{
$element=new stdClass();
$element->id=$node->id;
$element->title=$node->pagetitle;
$element->link=$node->url;
$image=$contentobj->GetPropertyValue('Фото-превью');
if($image && $image!='')
{
$element->img=$image;
}else{
$element->img='<span style="color:#C2DAB0;">Фотография временно отсутствует</span>';
}
$links[$l3title][]=$element;
}
}
}
foreach($links as $name=>$products)
{
echo '<h3>'.$name.'</h3>';
$c=ceil(count($products)/3);
echo '<table border="0" style="text-align:center; width:100%;">';
for($i=0; $i<$c; $i++)
{
echo '<tr>';
for($j=0; $j<3; $j++)
{
$index=$i*3+$j;
if(isset($products[$index]))
echo '<td valign="middle" style="background-color: rgb(255, 255, 255); width: 33%; height:200px;"><a href="'.$products[$index]->link.'" style="text-decoration:none;">'.$products[$index]->img.'</a></td>';
else
echo '<td valign="middle" style="width: 33%;"> </td>';
}
echo '</tr>';
echo '<tr>';
for($j=0; $j<3; $j++)
{
$index=$i*3+$j;
if(isset($products[$index]))
echo '<td><a href="'.$products[$index]->link.'">'.$products[$index]->title.'</a></td>';
else
echo '<td> </td>';
}
echo '</tr>';
echo '<tr>';
for($j=0; $j<3; $j++)
{
$index=$i*3+$j;
echo '<td> </td>';
}
echo '</tr>';
}
echo '</table>';
}
?>
Re: Как передать параметр в модуль?
Posted: Mon Sep 20, 2010 9:49 am
by Fenik17
$pos_small = $params['start_from'];
Re: Как передать параметр в модуль?
Posted: Mon Sep 20, 2010 9:54 am
by lisrenegade
Не помогло. Не работает