Views? А зачем?

Прислано: fasdalf@fasdalf.ru

чт, 17/01/2008 - 14:39

Другие статьи по теме:

Я хотел малого. Ссылки на ноды, к которым приаттачено просматриваемое изображение. Я пользую Views и привык к тому, как это удобно. Views_Multiblock тоже порадовал. Но почему-то views упорно показывал мне либо empty_page либо все ноды с картинками. Я попробовал приписать argument handling code к этому виду, но создать фильтр у меня не вышло. Запрос постоянно рассыпался. Тогда я взял этот запрос и обернул его вот в такой вот блок.

<?php 
  if ((integer)(arg(1))>0 and arg(0)=='node' and !arg(2))
    { 
      $query =  "SELECT node.nid, node.sticky AS node_sticky, node.changed AS node_changed, node.title AS node_title, node.changed AS node_changed ";
      $query .= "FROM dru4aq_node node ";
      $query .= "LEFT JOIN dru4aq_image_attach image_attach ON node.nid = image_attach.nid ";
      $query .= "WHERE (node.status = '1') AND (image_attach.iid) AND (image_attach.iid = %s) "; 
      $query .= "ORDER BY node_sticky ASC, node_changed ASC LIMIT 0, 5"; 
      $q_res = db_query($query,(integer)(arg(1)));
      while ($q_str = db_fetch_array($q_res))
      {
        echo l($q_str['node_title'],'node/'.$q_str['nid'])."<br />";
      }
    }
?>
Теперь у меня есть вожделенные ссылки. Причем с views я парился несколько часов, а на это ушло 20 минут. Теперь я сомневаюсь, что views - удобнее. Кроме того мой блок явно меньше утомляет базу.

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано PVasili в чт, 17/01/2008 - 15:16.

Молодца, мелкие радости рулят :)
$query можно и в одну строчку писать длинно, так понятнее.


Опубликовано Dan в чт, 17/01/2008 - 17:30.

if ((integer)(arg(1))>0 and arg(0)=='node' and !arg(2))

Корректнее так:
<?php if (arg(0)=='node' && is_numeric(arg(1)) and  !isset(arg(2)))?>

$query = "SELECT node.nid, node.sticky AS node_sticky, node.changed AS node_changed, node.title AS node_title, node.changed AS node_changed FROM dru4aq_node node ";

Надо:
<?php $query "SELECT nid, sticky ..... FROM {node}"?>

Причем с views я парился несколько часов, а на это ушло 20 минут.

Views для тех, кто плохо или совсем не знает PHP. К тому же views составляет корректные запросы к базе, на что, если делать тоже вручную, уёдёт времени поболе, чем 20 мин.

Кроме того мой блок явно меньше утомляет базу.

Конечно. Однако и views не пионерами написан - все запросы кэшируются.


Опубликовано Stalker-g2 в чт, 17/01/2008 - 22:41.

сниппет пойдёт для блока
а вот для многостраничности вьювс проще будет


Опубликовано fasdalf@fasdalf.ru в пт, 18/01/2008 - 09:52.

Ну и как с вами всеми спорить, если вы все правы?

>> . К тому же views составляет корректные запросы к базе,
обычно - да. Но не с Image_attach. C ним мы не сохлись характерами.

Интересно, а как все-таки сделать то же из views, вдруг правда pager понадобится?


Опубликовано fasdalf@fasdalf.ru в пт, 18/01/2008 - 10:27.

не поленился и вписал в блок приведенный IF
И получил Fatal error: Can't use function return value in write context in /home/afasdalf/public_html/includes/common.inc(1352) : eval()'d code on line 3
Обидно.
Вот так работает, но такая проверка - не совсем то, что надо.
if ( is_numeric(arg(1))>0 and arg(0)=='node' and !arg(2))


Опубликовано Dan в сб, 19/01/2008 - 17:01.

Ну да, isset никчему...

if (arg(0)=='node' && is_numeric(arg(1)) && !arg(2))


Новое на сайте

Ссылки партнёров