AB Entry IDs works like the {exp:query} module where you would give it an SQL query and get a result. The difference is that instead of looping the results AB Entry IDs will return a single variable: {ab_entry_ids}. This variable contains a |-separated list of entry_ids and can be used as a parameter in other tags (ie. the {exp:channel:entries} tag. It will usually be more efficient than using {exp:query} in conjunction with {exp:channel:entries} - as only two queries will be run, instead of one query + one query for each loop iteration.
{exp:ab_entry_ids sql="SELECT entry_id FROM exp_channel_titles WHERE channel_id=1"}
{if ab_has_results}
<ul>
{exp:channel:entries entry_id="{ab_entry_ids}"}
<li>{title}</li>
{/exp:channel:entries}
</ul>
{if:else}
<span>Sorry, no results.</span>
{/if}
{/exp:ab_entry_ids}
We built this addon to help users of AB Pagination who wanted to use {exp:query} but still control their pagination.
Here's an example of how it would be used with AB Pagination (as an alternative to {exp:query}):
{exp:ab_entry_ids sql="SELECT entry_id FROM exp_channel_titles WHERE title LIKE '%this%'"}
{exp:channel:entries entry_id="{ab_entry_ids}" limit="2"}
<li>{title}</li>
{paginate}
{if abp_has_previous}
<a class="next" href="{abp_previous_link}">← prev</a>
{if:else}
<span class="atStart">← prev</span>
{/if}
{abp_pages padding="no"}
{if abp_is_current}
<span class="this-page">{abp_num}</span>
{if:else}
<a href="{abp_link}">{abp_num}</a>
{/if}
{/abp_pages}
{if abp_has_next}
<a class="next" href="{abp_next_link}">next →</a>
{if:else}
<span class="atStart">next →</span>
{/if}
<div class="results">({abp_total_entries} uploads)</div>
{/paginate}
{/exp:channel:entries}
{/exp:ab_entry_ids}
AB Entry IDs has one conditional: {ab_has_results}. In addition to this it returns the results of your sql query in the {ab_entry_ids} variable.
Not working?