2013-08-21 4 views
0

Я использую следующий SQL для получения позиций для контента.Борьба с формированием и идентификацией результата

$leftBlock ='l'; 
$rightBlock ='r'; 
$topBlock = 'c'; 
$bottomBlock = 'd'; 

$blockposition = array(); 

$result2 = $db->sql_query("SELECT bposition FROM {$prefix}_blocks_manager WHERE module_title ='$name'"); 
while($row2 = $db->sql_fetchrow($result2)) { 
$blockposition[] = $row2['bposition']; 

} 

$blockposition2 = array_unique($blockposition);//remove duplicates becouse db output can be like:lllrrrd 
if (in_array($leftBlock, $blockposition2) AND in_array($rightBlock, $blockposition2)) { 
    $mytestresult = "We go use a template with left and right blocks"; 
} 
if (in_array($leftBlock, $blockposition2) AND !in_array($rightBlock, $blockposition2)) { 
    $mytestresult = "We go use a template with just left blocks"; 
} 
if (!in_array($leftBlock, $blockposition2) AND in_array($rightBlock, $blockposition2)) { 
    $mytestresult = "We go use a template with just right blocks"; 
} 
if (!in_array($leftBlock, $blockposition2) AND !in_array($rightBlock, $blockposition2)) { 
    $mytestresult = "We go use a template with just content"; 
} 

The $name представляет страницу, где я смотрю.

$mytestresult пойдет сказать Twig, чтобы загрузить конкретный шаблон:

$template = $twig->loadTemplate('mytestresult_file.phtml');

Но для каждого шаблона выше я могу создать контент, который добавляет новое содержание выше или ниже существующего контента.

$topBlock и $bottomBlock

Внутри моего сценария я загрузить все левый/правый/верхний/нижний блоки в функции blocks($side) { .....

blocks('l') blocks('r') blocks('c') blocks('d')

Мне нужен способ, чтобы сказать прутик, как сделать, если один из 4 шаблонов выше также содержит $topBlocks и/или $bottomBlock s.

По умолчанию и не загружать любой из 4 шаблонов выше я сделать так:

// render template 
    echo $template->render(array (
       'title' => $title1, 
       'metaDesc' => $metaDesc, 
       'metaKeywords' => $metaKeywords, 
       'navContent' => $navContent, 
       'leftContent' => $leftContent, 
       'defaultContent' => $module_content, 
       'rightContent' => $rightContent, 
       'footerContent' => $copyright 
)); 

Но веточка оказывает в этом случае HTML, для rightContent, даже если там не содержание.

+0

Это: http://twig.sensiolabs.org/doc/recipes.html? – hakre

+0

Не жалко, это не то, что я имел в виду. Я просто хочу сказать TWIG, какой шаблон он должен загрузить. Я не хочу говорить об этом в TWIG. – HenryW

+0

Ну прямо сейчас, в вашем коде, вы не загружаете * любой * шаблон вообще. Вы действительно знаете, как загрузить конкретный шаблон? – hakre

ответ

0

Я решил проблему, начав создавать 4 шаблона по умолчанию.

  1. содержания по умолчанию только
  2. левого содержания с содержанием по умолчанию
  3. левого содержания с содержанием по умолчанию и правильного содержание
  4. содержания по умолчанию с правильным содержанием

Путем я решить эту проблему для верхнее и нижнее содержимое состоит в том, что я просто добавил связанные файлы к содержимому по умолчанию, например:

$moduleContent = $topContent . $module_content . $bottomContent; //self explaining no?

Я хочу поделиться своим кодом в качестве примера, так что, возможно, может быть использована другими:

//generate template variables 
$title1 = "This site is powered by smarty"; 
$metaDesc = "this is the coolest site on the net"; 
$metaKeywords = "cool,site,internet,number one,ever,created with smarty"; 

$module_content = $getContent['module_content']; 

$leftContent = blocks2('left'); 
$rightContent = blocks2('right'); 
$topContent = blocks2('c'); 
$bottomContent = blocks2('d'); 
$footerContent = $copyright; 

//name the blockpositions (can be extended but requires hardcoding: $sliderBlock $headerBlock, $addsBlock etc etc) 
$leftBlock ='l'; 
$rightBlock ='r'; 
$topBlock = 'c'; 
$bottomBlock = 'd'; 

$blockposition = array(); 

$result2 = $db->sql_query("SELECT bposition FROM {$prefix}_blocks_manager WHERE module_title ='$name'"); 
while($row2 = $db->sql_fetchrow($result2)) { 
$blockposition[] = $row2['bposition']; 
} 

//remove duplicates becouse db output can be like:lllrrrd 
$blockposition = array_unique($blockposition); 

//////////////////////////////////////////////////////////////// 
///We go check if there are top or bottom blocks are active//// 
////////////////////////////////////////////////////////////// 

//We go add top blocks before module content and bottom blocks after module content 
if (in_array($topBlock, $blockposition) AND in_array($bottomBlock, $blockposition)) { 
$moduleContent = $topContent . $module_content . $bottomContent; 
} 
//We go add top blocks before module content 
if (in_array($topBlock, $blockposition) AND !in_array($bottomBlock, $blockposition)) { 
$moduleContent = $topContent . $module_content; 
} 
//We go add bottom blocks after module content 
if (!in_array($topBlock, $blockposition) AND in_array($bottomBlock, $blockposition)) { 
$moduleContent = $module_content . $bottomContent; 
} 

///////////////////////////////////////////////////////////////////////////////////// 
/// We go check if we need left blocks and/or right blocks or no blocks at all. //// 
/////////////////////////////////////////////////////////////////////////////////// 

//We go use a template with left and right blocks 
if (in_array($leftBlock, $blockposition) AND in_array($rightBlock, $blockposition)) { 
echo $twig->render('left_right.phtml', array('title' => $title1,'metaDesc' => $metaDesc,'metaKeywords' => $metaKeywords,'navContent' => $navContent,'leftContent' => $leftContent,'defaultContent' => $moduleContent,'rightContent' => $rightContent,'footerContent' => $copyright)); 
} 
//We go use a template with just left blocks 
if (in_array($leftBlock, $blockposition) AND !in_array($rightBlock, $blockposition)) { 
echo $twig->render('left.phtml', array('title' => $title1,'metaDesc' => $metaDesc,'metaKeywords' => $metaKeywords,'navContent' => $navContent,'leftContent' => $leftContent,'defaultContent' => $moduleContent,'footerContent' => $copyright)); 
} 
//We go use a template with just right blocks 
if (!in_array($leftBlock, $blockposition) AND in_array($rightBlock, $blockposition)) { 
echo $twig->render('right.phtml', array('title' => $title1,'metaDesc' => $metaDesc,'metaKeywords' => $metaKeywords,'navContent' => $navContent,'defaultContent' => $moduleContent,'rightContent' => $rightContent,'footerContent' => $copyright)); 
} 
//We go use a template with just content 
if (!in_array($leftBlock, $blockposition) AND !in_array($rightBlock, $blockposition)) { 
echo $twig->render('content.phtml', array('title' => $title1,'metaDesc' => $metaDesc,'metaKeywords' => $metaKeywords,'navContent' => $navContent,'defaultContent' => $moduleContent,'footerContent' => $copyright)); 
} 
Смежные вопросы