The easiest way is to make a duplicate of the List block and add the filter you need.
You May need to modify your attribute in the Magento admin area to "show in product listing" too.
for example:
{{block type="catalog/product_list" template="catalog/product/list.phtml"}}
this will use the List block to filter the collection for you, lets make a copy:
app/code/core/Mage/Catalog/Block/Product/List.php to
app/code/local/Mage/Catalog/Block/Product/Mylist.php Now lets modify the Block to use our custom attribute, something like this should work (not tested)
Mylist.php
class Mage_Catalog_Block_Product_Mylist extends Mage_Catalog_Block_Product_List
{
/**
* Retrieve loaded category collection
*
* @return Mage_Eav_Model_Entity_Collection_Abstract
*/
protected function _getProductCollection()
{
$collection = parent::_getProductCollection();
$todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
$collection->addAttributeToFilter('special_from_date', array('date' => true, 'to' => $todayDate))
->addAttributeToFilter('special_to_date', array('or'=> array(
0 => array('date' => true, 'from' => $todayDate),
1 => array('is' => new Zend_Db_Expr('null')))
), 'left')
->addAttributeToSort('special_from_date', 'desc');
return $collection;
}
}
Now you simple use your new block:
{{block type="catalog/product_mylist" template="catalog/product/list.phtml"}}
Thanks to(ref by): How to filter product list by custom attribute on category page of Magento?