Почему вы хотите избежать использования SQL?
Если вы хотите получить информацию о том, что находится в вашей базе данных, как и все узлы типа x, единственный способ получить это - выполнить SQL-запрос, если у вас уже не извлечены данные.
запрос типа
db_query("SELECT title, nid FROM {node} WHERE type = 'x';");
не должно быть то, что разрушает вашу производительность.
Edit:
Ссылка, которую вы предоставили, взята с Drupal 7, поэтому вы должны быть осторожны, читая это. Причина в том, что в Drupal 7 возможно не только использовать db_query
, который в основном является оберткой для функций php mysql_query
, pg_query
. Это немного по-другому, и, используя его, вам не придется использовать код db_specific. В любом случае, новое в Drupal 7 - это что-то вроде ORM. Я не читал об этом подробно, но идея в том, что вы можете построить запрос, используя команды для объекта. Это, вероятно, то, что вы после. Тем не менее, Drupal 7 вообще не готов для производственных площадок. Есть еще много критических вопросов и проблем безопасности. Так что это не будет возможным в течение достаточно долгого времени.
Редактировать 2:
Если вы хотите получить заголовок и тело узла, это то, что вы должны сделать:
$type = 'x';
$query = db_query("SELECT r.nid, r.title, r.body FROM {node} AS n
LEFT JOIN {node_revisions} AS r ON r.nid = n.nid
WHERE type = '%s';", array($type));
$nodes = array();
while ($node = db_fetch_object($query)) {
$nodes[$node->nid] = $node;
}
Вы можете использовать db_fetch_array вместо db_fetch_object`, если хотите извлечь массивы вместо объектов из БД.