Искать  
 
   
 
еще один способ алфавитной навигации
Отправлено: 20 Март 2008 10:23 A.M.   [ Игнорировать ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

на самом деле, использование данной методики возможно не только с алфавитным списком, но так же возможно сделать и по словам (намек в соседнюю ветку с марками автомобилей smile) пример использования от loweblog.com (ориганальный топик)

выводим список букв:

<ol class="alphabet">
  
<?php foreach(range('a','z') as $x) : ?>
    
<li><a href="{path=group/template/letter/<?=$x?>}"><?=$x?></a></li>
  
<?php endforeach; ?>
</ol

(вставить туда массив русских букв, не составит труда)
плюсы такого способа - скорость.
минусы - выводится все буквы по которым даже нет статей.

Далее, что бы воспользоваться в итоговом шаблоне, можно использовать
*Модуль Query module
*Воспользоваться новым search]http://expressionengine.com/docs/modules/weblog/parameters.html#par_search]search parameter[/url]
*Через Php сделать запрос sql, выбрать id статей подходящих под параметры, и вывести эти id через exp:weblog:entries. Так поступили на оригинальном сайте, т.к. это позволило вывести связанные страницы

пример запроса:

SELECT entry_id FROM exp_weblog_titles WHERE LEFT(LOWER(title), 1) = '{segment_4}'
 Подпись 

booooring…

Профиль
 
 
Отправлено: 19 Июль 2008 10:48 P.M.   [ Игнорировать ]   [ # 1 ]
Новичок
Rank
Всего сообщений:  3
Зарегистрирован  2008-05-23

Всем привет. Помогите решить проблемку.smile

Сделал следующее:

{assign_variable:my_weblog="main"}
{assign_variable
:my_template_group="main"}
<?php  
$alpha_array 
= array('А','Б','В','Г','Д','Е','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ы','Э','Ю','Я');
?>
<p align='center'>
  
<?php foreach($alpha_array as $x) : ?>
    
<a href="{path=legal-terms/letter/<?=$x?>}"><?=$x?></a>&nbsp;&nbsp;
  
<?php endforeach; ?>
</p>

{if segment_3 != ''}
<?php $a 
= array();?>
   {exp
:query sql="SELECT * FROM exp_weblog_titles WHERE `title` like '{segment_3}%'"}
      <?php $a[] 
"{entry_id}"?>    /*Печатает {entry_id} если php парсер включается на входе*/
   
{/exp:query}

   {if no_results}
           Ничего не найдено
.
   
{/if}

   <?php
        $entry_id 
implode("|"$a);
        echo 
$entry_id/*Печатает 11|12|14|15|16|17|18, если php парсер включается на выходе*/
    
?>

    {exp
:weblog:entries weblog="{my_weblog}" entry_id="<?php print ($entry_id); ?>" category="67"  disable="categories|category_fields|custom_fields|member_data|pagination|trackbacks"}
        {title}
<br />
    
{/exp:weblog:entries}

{
/if} 

Проблема вся в том, что тут:
  {exp:weblog:entries weblog=”{my_weblog}” category=“67” entry_id=”<?php print ($entry_id); ?>” disable=“categories|category_fields|custom_fields|member_data|pagination|trackbacks”}

php код: <?php print ($entry_id); ?>
Выполняется на выходе... соответственно ничего не работает.

Если для шаблона я делаю выполнение php кода на входе, то тогда не срабатывает sql запрос:
<?php $a = array();?>
  {exp:query sql=“SELECT * FROM exp_weblog_titles WHERE `title` like ‘{segment_3}%’”}
    <?php $a[] = “{entry_id}”; ?>
  {/exp:query}

{entry_id} не обрабатывается вообще... или поздно. На экране печатает: {entry_id}


Посоветуйте, как быть? Что тут можно изменить?

Профиль
 
 
Отправлено: 20 Июль 2008 02:45 A.M.   [ Игнорировать ]   [ # 2 ]
Новичок
Rank
Всего сообщений:  3
Зарегистрирован  2008-05-23

Вообщем сделал так:

<?php  
    $alpha_array 
= array('А','Б','В','Г','Д','Е','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ы','Э','Ю','Я');
?>

<p align='center'>

  
<?php foreach($alpha_array as $x) : ?>
      
<a href="{path=legal-terms/letter/<?=htmlentities(urlencode($x))?>}"><?=$x?></a>&nbsp;&nbsp;
  
<?php endforeach; ?>

</p>

<?php 
    
global $IN;
    global 
$DB;
    
    if (
$IN->fetch_uri_segment('3') != ''){      
        $a 
= array();
        
        
$seg3 $IN->fetch_uri_segment('3');
        
$seg3 mysql_real_escape_string($seg3);

        
$a = array();
        
        
$query $DB->query("SELECT entry_id FROM exp_weblog_titles WHERE title like '{$seg3}%' ");
        
        if (
$query->result)
        
{
            
foreach ($query->result as $row
            
{
                $a[] 
$row['entry_id'];
            
}
            $entry_id 
implode("|"$a);
        
}
    } 
?>

{exp
:weblog:entries weblog="main" category="67" entry_id="<?php echo $entry_id; ?>" disable="categories|category_fields|custom_fields|member_data|pagination|trackbacks"}
    {title}
<br />
      
{if no_results}
            Ничего не найдено
      {
/if}
{
/exp:weblog:entries} 

Но теперь, запрос почему то чувствителен к регистру, тоесть если запрос “А” = выдает, все на “А” из категории 67, а если запрос “а” = выдает, все на “а” из категории 67

кодировка utf-8
почему то запрос почему то чувствителен к регистру, как исправить, подскажите пожалуйста???

Профиль