Add custom element criteria attribute without a field type? Is a custom field type and making use of modifyElementsQuery the only way to add my own craft.entries element criteria model attribute to modify the elements query?

What if I do not want to add a new field to each entry type I want to use my  attribute with? The field would be a hidden pseudo field anyways, as I'm only working with other fields' data.

My current solution is passing the element criteria model with all other params set to craft()-&gt;elements-&gt;buildElementsQuery() using a template variable. It works, yes, but I would really like to avoid this (pagination not possible and some other disadvantages).
Currently, yes, the only way to modify an element query (when it’s not your own element type) is to do it with a custom field type, from its modifyElementsQuery() function.

UPDATE

As of Craft 2.5, plugins can listen for the elements.onBeforeBuildElementsQuery and elements.onBuildElementsQuery events to make changes to the query (or prevent it from getting executed).

craft()-&gt;on('elements.buildElementsQuery', function(Event $event) {
    /** @var ElementCriteriaModel $criteria */
    $criteria = $event-&gt;params['criteria'];

    /** @var DbCommand $query */
    $query = $event-&gt;params['query'];

    if ($criteria-&gt;myCustomParamName) {
        $query-&gt;andWhere( //...
    }
});