Skip to main content

HATs off to Tapping into History, Art & Technology at the National Bottle Museum in the Heart of Ballston Spa! 

Discover why digging into glass-making history is just part of what’s on tap inside the National Bottle Museum, when you meet the New Director!

Written by Ann Hauprich

If you’re thinking of sending a message in a bottle worthy of being uncorked when it washes ashore anywhere in the world try this one: “HATs off to tapping into History, Art & Technology at the National Bottle Museum in the heart of Ballston Spa, New York, USA.”

Boasting a collection of more than 3,000 flasks dating as far back as the early 1700s, the Milton Avenue landmark recently welcomed an effervescent director whose archaeological background promises to help guests develop an even deeper appreciation for the antique bottles that often spent many moons as buried treasures before being unearthed and preserved as precious links to our past.

Having three decades ago journeyed to the remote ruins of what had in the mid-1800s been Oscar Granger’s thriving Glass Factory Mountain community at Mount Pleasant, I was thrilled when Kayla Whitehouse – who has been at the NBM’s helm since January – agreed to pose beside a life-size portrait of him that was commissioned as part of an exquisite new exhibit titled Making Bottles and Making History. In the spirit of bringing history to life, a trio of visitors (Robert Danison, Jr., Glenn Sheehan and Mike Mertle) soon followed suit while longtime museum volunteer Meg Stevens joined the director beside an artistic recreation of a furnace that was used at the high production glassworks that had employed multitudes of glassblowers when all bottles were manufactured with hand tools and lung power. Technological artifacts at the museum include some of the earliest tools used to skillfully craft individual bottles as well as samples of raw materials that were required to make the glass that was needed to bottle the waters from this region’s world-famous natural mineral springs. Adding to the museum’s HAT trick experience is the Jan Rutland Memorial Artists’ Space on the museum’s second floor where an alluring Art of the Bottle show is now being showcased,

For now, without further ado, it’s time to share more about the long and winding road that led Kayla Whitehouse back to her hometown and why she is so passionate about her responsibilities at the museum which has undergone significant renovations and innovations since the dawn of the 2020s.

After graduating from Ballston Spa High School in 2007, Whitehouse pursued a Bachelor of Arts degree in Classics from Colgate University in Hamilton, NY. The year prior to earning this BA in 2011, she volunteered with the Mopan Valley Archeological Project in the Central American country of Belize where her duties included assisting with the excavation of a Mayan archaeological site. Not long thereafter, she embarked upon learning adventures at the Southern Illinois University, Carbondale, where in 2014 she earned a Master of Arts (MA) in Anthropology, with a Focus on Archaeology. These experiences helped to prepare – and uniquely qualify her – for the position she landed six months ago at the National Bottle Museum.

“Ever since I was a kid, I have been interested in history and archaeology. I picked my college degree with that in mind,” smiles Whitehouse. “I chose Classics because I wanted to do Classical archaeology, and then changed my focus of interest to more New World archaeology after taking some courses on Mayan culture and languages during my undergrad. The Mopan Valley Archaeological Project was actually a field school run through the University of Wisconsin-Madison, and I had the opportunity to join the field school as a volunteer. That was a really great experience for me because first of all, it was really fun. But it also made me realize that even though I enjoyed it, I didn't really want to be working in the field as my career. So I started looking into career options that would allow me to work with artifacts in a different aspect. For my Master's thesis, I was working with and studying a few different museum collections. That experience really cemented for me that I wanted to work in a museum.”

Among the things Whitehouse finds most rewarding about the NBM is that her leadership position is multi-faceted. “You're not just doing one thing every day. You have to fill multiple roles simultaneously, in a way that isn't as necessary in a larger museum. If you look at a big museum like the Smithsonian, the person working behind the counter at the gift shop doesn't get to also work with the collections and put together a new display. I’m able to work on exhibits as well as running the social media, and greeting guests to the museum, all on the same day. “

Whitehouse notes the NBM is constantly endeavoring to update the not-for-profit educational and cultural facility. “We've had building upgrades and recently were able to get electricity up on our third-floor storage area. Previously it didn't have any electricity or lighting, which really limited its usability as a workspace, so hopefully now we will be able to take advantage of that space. We received a grant from the Alfred Z. Solomon Charitable Trust which enabled us to repaint the façade of our building, keeping it in the Victorian style that Ballston Spa is famous for. We're also working on our reference library and research area, so that if anyone is doing bottle research, they will be able to visit our library to use our reference materials. And one of our bigger changes is our newest exhibit, Glass Factory Mountain. The Museum received another grant from the Solomon Charitable Trust last year, which made it possible for us to work with an exhibit designer to put together the historic display about glass factories.”

While that exhibit shines the spotlight on the 1800s, one of the oldest bottles in the museum dates back to the 1720s. “It was on a trading ship named Princess Carolina, which was damaged in 1729 and ended up being used as fill material when they built up the land to expand Manhattan. When the ship was excavated in 1982, the bottle was discovered onboard, and eventually made its way to the museum!” beams Whitehouse.

Her personal favorites in the vast collection include bottles that have a painted label on them, especially soda bottles and milk bottles. “I love the different colors, and a lot of them have cute slogans and designs on them. One of my favorites is actually a milk bottle that was released around Christmastime – the label shows a bunch of cows with reindeer antlers and wreaths around their necks,” she explains.

Because the NBM also operates the Ballston Spa Visitor's Center, it houses a collection of village maps, flyers and brochures from local shops and restaurants. And while the gift shop mainly focuses on National Bottle Museum souvenirs, such as hats, T-shirts, and shot glasses it also partners with the Ballston Spa Business and Professional Association (BSBPA) to provide some village-themed gifts, as well.

Last, but far from least, Whitehouse is eager to spread the word of museum internship programs, volunteer opportunities and the importance of memberships – which have been the backbone of the not-for-profit since it was established in 1978. Each year, the museum takes on an intern for the summer months through the Saratoga County Summer Youth Employment Program while year-round volunteer opportunities offer a broad spectrum of experiences. The museum’s all-volunteer Board of Trustees, for example, are extremely active with exhibits and events. “We would not be able to function without them,” insists Whitehouse. Membership perks, meanwhile, include free admission to the museum, a discount in the gift shop and a newsletter. To learn more, visit www.nationalbottlemuseum.org, email info@nationalbottlemuseum.org or call at 518.885.7589. 

Why Ballston Spa perfect setting for the National Bottle Museum

Ever wonder how a dot on the map as tiny as the one occupied by Ballston Spa became the home of the National Bottle Museum? Part of the answer was provided during a turn-of-the-millennium interview with now late NBM Executive Director Jan Rutland.

“Many visitors, and indeed many villagers, either aren’t aware or have forgotten that Ballston Spa was once a thriving resort community that attracted affluent guests who were eager to sample the natural mineral spring waters at the Sans Souci Hotel. The waters on the premises were believed to have therapeutic value and people journeyed from far and wide to partake of them,” Rutland said.

The posh destination which was established in 1803 graced an entire block that started at the corner of Front Street and Milton Avenue (where O’Brien Pharmacy now stands) stood three stories high and could accommodate 150 persons. Amenities included a grand ballroom with magnificent chandeliers. The ballroom led to a courtyard where an ornate gazebo and the drilled Sans Souci Spring were found.

As per the photo that accompanies this photo-essay, Ballston Spa’s Sans Souci waters were also bottled for consumption at home and abroad. 

According to historical records, including the text on the back of a rare picture postcard that shows the Sans Souci Hotel being dismantled in 1887, a man named W.J. Gleason was given the landmark as payment for removing it. 

The spring from which the property’s waters flowed was also capped in a bygone era. Thus, there was much ado about something when the historic Sans Souci Spring was reopened as part of a village revitalization initiative in 2020.

But that’s just one part of the story behind-the-story of why Ballston Spa makes the perfect setting for the National Bottle Museum. Until a half century or so ago, waters from the world-famous Hides Franklin Spring were bottled within a circular structure of cobbled stone on the south side of Malta Avenue near Ralph Street. 

The landmark, which was 80 feet in diameter, included hand-painted murals and 500-million-year-old fossils resembling giant sea cabbages. Late Village History Consultant Maurice “Christopher” Morley said the architectural masterpiece sheltering the Hides Franklin Spring was torn down and the pipe to its spring was stopped to accommodate the construction of ranch-style homes that now occupy that neighborhood.

Last, but far from least, there’s the Old Spring near the Saratoga County History Center on the grounds of Brookside which has continued to flow without interruption from the time of this village’s first recorded history.

It would be nigh on impossible to imagine Ballston Spa without The Old Iron Spring and the Lions Club of Ballston Spa Music Park that in recent years became an added attraction on the grounds along Gordon Creek.

8.067MBMemory Usage128msRequest Duration
Joomla! Version4.4.13
PHP Version8.3.20
Identityguest
Response200
Templateyootheme
Database
Server
mysql
Version
8.0.42
Collation
utf8mb3_unicode_ci
Conn Collation
utf8mb4_0900_ai_ci
$_GET
array:3 [ "catid" => "8" "id" => "548" "view" => "article" ]
$_POST
[]
$_SESSION
array:1 [ "joomla" => "***redacted***" ]
$_COOKIE
[]
$_SERVER
array:74 [ "USER" => "fivetowers" "HOME" => "/home/fivetowers" "SCRIPT_NAME" => "/index.php" ...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1746986110 "last" => 1746986110...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:18 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (444.73KB) (3.05ms)
  • afterInitialise (1.96MB) (30.6ms)
  • afterRoute (375.09KB) (6ms)
  • beforeRenderComponent com_content (48.95KB) (1.04ms)
  • Before Access::preloadComponents (all components) (47.72KB) (1.8ms)
  • After Access::preloadComponents (all components) (116.7KB) (1.49ms)
  • Before Access::preloadPermissions (com_content) (1.63KB) (15μs)
  • After Access::preloadPermissions (com_content) (507.06KB) (1.25ms)
  • Before Access::getAssetRules (id:718 name:com_content.article.548) (18.65KB) (29μs)
  • After Access::getAssetRules (id:718 name:com_content.article.548) (7.38KB) (99μs)
  • afterRenderComponent com_content (1.84MB) (53.1ms)
  • afterDispatch (21.42KB) (1.08ms)
  • beforeRenderRawModule mod_menu () (408.38KB) (12.62ms)
  • afterRenderRawModule mod_menu () (58.84KB) (1.49ms)
  • beforeRenderModule mod_menu () (696B) (5μs)
  • afterRenderModule mod_menu () (3.73KB) (183μs)
  • beforeRenderRawModule mod_finder () (1.45KB) (14μs)
  • afterRenderRawModule mod_finder () (1.77MB) (5.16ms)
  • beforeRenderModule mod_finder () (704B) (5μs)
  • afterRenderModule mod_finder () (2.82KB) (175μs)
  • beforeRenderRawModule mod_custom () (16B) (202μs)
  • afterRenderRawModule mod_custom () (320.11KB) (1.35ms)
  • beforeRenderModule mod_custom () (704B) (5μs)
  • afterRenderModule mod_custom () (3.27KB) (63μs)
  • beforeRenderRawModule mod_menu () (24B) (90μs)
  • afterRenderRawModule mod_menu () (552B) (512μs)
  • beforeRenderModule mod_menu () (696B) (3μs)
  • afterRenderModule mod_menu () (2.76KB) (63μs)
  • beforeRenderRawModule mod_custom () (920B) (60μs)
  • afterRenderRawModule mod_custom () (1.03KB) (161μs)
  • beforeRenderModule mod_custom () (704B) (3μs)
  • afterRenderModule mod_custom () (1.23KB) (64μs)
  • beforeRenderRawModule mod_menu () (1.65KB) (123μs)
  • afterRenderRawModule mod_menu () (4.45KB) (473μs)
  • beforeRenderModule mod_menu () (696B) (3μs)
  • afterRenderModule mod_menu () (1.34KB) (74μs)
  • beforeRenderRawModule mod_finder () (96B) (9μs)
  • afterRenderRawModule mod_finder () (7.32KB) (647μs)
  • beforeRenderModule mod_finder () (704B) (4μs)
  • afterRenderModule mod_finder () (1.34KB) (78μs)
  • beforeRenderRawModule mod_custom () (288B) (9μs)
  • afterRenderRawModule mod_custom () (912B) (138μs)
  • beforeRenderModule mod_custom () (704B) (2μs)
  • afterRenderModule mod_custom () (1.23KB) (55μs)
  • beforeRenderRawModule mod_custom () (5.95KB) (162μs)
  • afterRenderRawModule mod_custom () (1008B) (144μs)
  • beforeRenderModule mod_custom () (704B) (2μs)
  • afterRenderModule mod_custom () (2.77KB) (46μs)
  • beforeRenderRawModule mod_custom () (8B) (60μs)
  • afterRenderRawModule mod_custom () (1008B) (129μs)
  • beforeRenderModule mod_custom () (704B) (4μs)
  • afterRenderModule mod_custom () (2.43KB) (56μs)
  • afterRender (314.95KB) (3.19ms)
  • 1 x afterRenderComponent com_content (1.84MB) (41.34%)
    53.10ms
    1 x afterInitialise (1.96MB) (23.83%)
    30.60ms
    1 x beforeRenderRawModule mod_menu () (408.38KB) (9.83%)
    12.62ms
    1 x afterRoute (375.09KB) (4.67%)
    6.00ms
    1 x afterRenderRawModule mod_finder () (1.77MB) (4.01%)
    5.16ms
    1 x afterRender (314.95KB) (2.48%)
    3.19ms
    1 x afterLoad (444.73KB) (2.38%)
    3.05ms
    1 x Before Access::preloadComponents (all components) (47.72KB) (1.4%)
    1.80ms
    1 x After Access::preloadComponents (all components) (116.7KB) (1.16%)
    1.49ms
    1 x afterRenderRawModule mod_menu () (58.84KB) (1.16%)
    1.49ms
    1 x afterRenderRawModule mod_custom () (320.11KB) (1.05%)
    1.35ms
    1 x After Access::preloadPermissions (com_content) (507.06KB) (0.97%)
    1.25ms
    1 x afterDispatch (21.42KB) (0.84%)
    1.08ms
    1 x beforeRenderComponent com_content (48.95KB) (0.81%)
    1.04ms
    1 x afterRenderRawModule mod_finder () (7.32KB) (0.5%)
    647μs
    1 x afterRenderRawModule mod_menu () (552B) (0.4%)
    512μs
    1 x afterRenderRawModule mod_menu () (4.45KB) (0.37%)
    473μs
    2 x afterRenderRawModule mod_custom () (1008B) (0.21%)
    273μs
    1 x beforeRenderRawModule mod_custom () (16B) (0.16%)
    202μs
    1 x afterRenderModule mod_menu () (3.73KB) (0.14%)
    183μs
    1 x afterRenderModule mod_finder () (2.82KB) (0.14%)
    175μs
    1 x beforeRenderRawModule mod_custom () (5.95KB) (0.13%)
    162μs
    1 x afterRenderRawModule mod_custom () (1.03KB) (0.13%)
    161μs
    1 x afterRenderRawModule mod_custom () (912B) (0.11%)
    138μs
    1 x beforeRenderRawModule mod_menu () (1.65KB) (0.1%)
    123μs
    2 x afterRenderModule mod_custom () (1.23KB) (0.09%)
    119μs
    1 x After Access::getAssetRules (id:718 name:com_content.article.548) (7.38KB) (0.08%)
    99μs
    1 x beforeRenderRawModule mod_menu () (24B) (0.07%)
    90μs
    1 x afterRenderModule mod_finder () (1.34KB) (0.06%)
    78μs
    1 x afterRenderModule mod_menu () (1.34KB) (0.06%)
    74μs
    1 x afterRenderModule mod_menu () (2.76KB) (0.05%)
    63μs
    1 x afterRenderModule mod_custom () (3.27KB) (0.05%)
    63μs
    1 x beforeRenderRawModule mod_custom () (8B) (0.05%)
    60μs
    1 x beforeRenderRawModule mod_custom () (920B) (0.05%)
    60μs
    1 x afterRenderModule mod_custom () (2.43KB) (0.04%)
    56μs
    1 x afterRenderModule mod_custom () (2.77KB) (0.04%)
    46μs
    1 x Before Access::getAssetRules (id:718 name:com_content.article.548) (18.65KB) (0.02%)
    29μs
    5 x beforeRenderModule mod_custom () (704B) (0.01%)
    16μs
    1 x Before Access::preloadPermissions (com_content) (1.63KB) (0.01%)
    15μs
    1 x beforeRenderRawModule mod_finder () (1.45KB) (0.01%)
    14μs
    3 x beforeRenderModule mod_menu () (696B) (0.01%)
    11μs
    1 x beforeRenderRawModule mod_finder () (96B) (0.01%)
    9μs
    2 x beforeRenderModule mod_finder () (704B) (0.01%)
    9μs
    1 x beforeRenderRawModule mod_custom () (288B) (0.01%)
    9μs
54 statements were executed, 5 of which were duplicates, 49 unique13.91ms903.08KB
  • SELECT @@SESSION.sql_mode;102μs968B/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:334Copy
  • SELECT `data` FROM `jos_session` WHERE `session_id` = ?224μs1008BParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:261Copy
  • SELECT `session_id` FROM `jos_session` WHERE `session_id` = :session_id LIMIT 183μs1.3KBParams/libraries/src/Session/MetadataManager.php:187Copy
  • INSERT INTO `jos_session` (`session_id`,`guest`,`time`,`userid`,`username`,`client_id`) VALUES (:session_id, :guest, :time, :user_id, :username, :client_id)360μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `jos_viewlevels`119μs976B/libraries/src/Access/Access.php:955Copy
  • SELECT `b`.`id` FROM `jos_usergroups` AS `a` LEFT JOIN `jos_usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `a`.`id` = :guest234μs1.33KBParams/libraries/src/Access/Access.php:868Copy
  • SELECT e.enabled FROM jos_extensions AS e WHERE e.element = "com_k2" AND e.type = "component"178μs520B/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SELECT e.enabled FROM jos_extensions AS e WHERE e.element = "com_virtuemart" AND e.type = "component"111μs520B/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SELECT e.enabled FROM jos_extensions AS e WHERE e.element = "com_easyblog" AND e.type = "component"93μs1.13KB/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SELECT e.enabled FROM jos_extensions AS e WHERE e.element = "com_jomclassifieds" AND e.type = "component"94μs520B/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SELECT e.enabled FROM jos_extensions AS e WHERE e.element = "com_hikashop" AND e.type = "component"85μs520B/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SELECT e.enabled FROM jos_extensions AS e WHERE e.element = "com_rseventspro" AND e.type = "component"81μs520B/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SELECT e.enabled FROM jos_extensions AS e WHERE e.element = "com_zoo" AND e.type = "component"125μs536B/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SELECT e.enabled FROM jos_extensions AS e WHERE e.element = "com_jticketing" AND e.type = "component"89μs520B/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SELECT e.enabled FROM jos_extensions AS e WHERE e.element = "com_icagenda" AND e.type = "component"82μs520B/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SELECT e.enabled FROM jos_extensions AS e WHERE e.element = "com_eventbooking" AND e.type = "component"86μs520B/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SELECT e.enabled FROM jos_extensions AS e WHERE e.element = "com_eshop" AND e.type = "component"81μs1.76KB/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SELECT e.enabled FROM jos_extensions AS e WHERE e.element = "com_rsblog" AND e.type = "component"83μs520B/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SELECT e.enabled FROM jos_extensions AS e WHERE e.element = "com_mijovideos" AND e.type = "component"92μs520B/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SELECT e.enabled FROM jos_extensions AS e WHERE e.element = "com_opencart" AND e.type = "component"86μs520B/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SELECT e.enabled FROM jos_extensions AS e WHERE e.element = "com_jcart" AND e.type = "component"80μs520B/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SELECT e.enabled FROM jos_extensions AS e WHERE e.element = "com_djclassifieds" AND e.type = "component"83μs520B/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SELECT e.enabled FROM jos_extensions AS e WHERE e.element = "com_j2store" AND e.type = "component"79μs520B/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SELECT e.enabled FROM jos_extensions AS e WHERE e.element = "com_phocacart" AND e.type = "component"85μs520B/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SELECT e.enabled FROM jos_extensions AS e WHERE e.element = "com_jshopping" AND e.type = "component"102μs520B/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SELECT e.enabled FROM jos_extensions AS e WHERE e.element = "com_igallery" AND e.type = "component"88μs520B/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SELECT e.enabled FROM jos_extensions AS e WHERE e.element = "com_dpcalendar" AND e.type = "component"80μs520B/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SHOW FULL COLUMNS FROM `jos_tagz_config`676μs1.3KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:625Copy
  • SELECT * FROM `jos_tagz_config` WHERE `name` = 'config'88μs592B/libraries/src/Table/Table.php:755Copy
  • SELECT id,template FROM jos_template_styles WHERE client_id=0 AND home=1231μs592B/administrator/components/com_widgetkit/widgetkit.php:28Copy
  • SELECT custom_data FROM jos_extensions WHERE element = 'yooessentials' AND folder = 'system'402μs536B/plugins/system/yooessentials/helper.php:153Copy
  • SELECT custom_data FROM jos_extensions WHERE element = 'yooessentials' AND folder = 'system' LIMIT 1187μs536B/plugins/system/yooessentials/modules/platform-joomla/src/Database.php:52Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `jos_assets` WHERE `name` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4,:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8,:preparedArray9,:preparedArray10,:preparedArray11,:preparedArray12,:preparedArray13,:preparedArray14,:preparedArray15,:preparedArray16,:preparedArray17,:preparedArray18,:preparedArray19,:preparedArray20,:preparedArray21,:preparedArray22,:preparedArray23,:preparedArray24,:preparedArray25,:preparedArray26,:preparedArray27,:preparedArray28,:preparedArray29,:preparedArray30,:preparedArray31,:preparedArray32,:preparedArray33,:preparedArray34,:preparedArray35,:preparedArray36,:preparedArray37,:preparedArray38,:preparedArray39,:preparedArray40,:preparedArray41)456μs9.94KBParams/libraries/src/Access/Access.php:357Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `jos_assets` WHERE `name` LIKE :asset OR `name` = :extension OR `parent_id` = 0565μs49.48KBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `jos_content`662μs1.77KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:625Copy
  • UPDATE `jos_content` SET `hits` = (`hits` + 1) WHERE `id` = '548'316μs48B/libraries/src/Table/Table.php:1325Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `jos_content` AS `a` INNER JOIN `jos_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `jos_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `jos_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `jos_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `jos_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)562μs78.12KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `jos_categories` AS `s` INNER JOIN `jos_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`461μs3.91KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `m`.`tag_id`,`t`.* FROM `jos_contentitem_tag_map` AS `m` INNER JOIN `jos_tags` AS `t` ON `m`.`tag_id` = `t`.`id` WHERE `m`.`type_alias` = :contentType AND `m`.`content_item_id` = :id AND `t`.`published` = 1 AND `t`.`access` IN (:preparedArray1,:preparedArray2)263μs3.97KBParams/libraries/src/Helper/TagsHelper.php:388Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `jos_categories` AS `s` INNER JOIN `jos_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`269μs3.91KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM jos_fields AS a LEFT JOIN `jos_languages` AS l ON l.lang_code = a.language LEFT JOIN jos_users AS uc ON uc.id=a.checked_out LEFT JOIN jos_viewlevels AS ag ON ag.id = a.access LEFT JOIN jos_users AS ua ON ua.id = a.created_user_id LEFT JOIN jos_fields_groups AS g ON g.id = a.group_id LEFT JOIN `jos_fields_categories` AS fc ON fc.field_id = a.id WHERE ( (`a`.`context` = :context AND (`fc`.`category_id` IS NULL OR `fc`.`category_id` IN (:preparedArray1,:preparedArray2)) AND `a`.`access` IN (:preparedArray3,:preparedArray4)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray5,:preparedArray6)) AND `a`.`state` = :state) AND (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC352μs4.75KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:166Copy
  • SELECT `a`.`id`,`a`.`title`,`a`.`catid`,`a`.`language`, CASE WHEN CHAR_LENGTH(`a`.`alias`) != 0 THEN CONCAT_WS(':', `a`.`id`, `a`.`alias`) ELSE a.id END AS `slug`, CASE WHEN CHAR_LENGTH(`cc`.`alias`) != 0 THEN CONCAT_WS(':', `cc`.`id`, `cc`.`alias`) ELSE cc.id END AS `catslug` FROM `jos_content` AS `a` LEFT JOIN `jos_categories` AS `cc` ON `cc`.`id` = `a`.`catid` WHERE `a`.`catid` = :catid AND `a`.`state` = :state AND `a`.`access` IN (:preparedArray1,:preparedArray2) AND (`publish_up` IS NULL OR `publish_up` <= :nowDate1) AND (`publish_down` IS NULL OR `publish_down` >= :nowDate2) ORDER BY CASE WHEN `a`.`publish_up` IS NULL THEN `a`.`created` ELSE `a`.`publish_up` END DESC1.57ms3.47KBParams/plugins/content/pagenavigation/src/Extension/PageNavigation.php:188Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `jos_categories` AS `s` INNER JOIN `jos_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`295μs3.91KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `m`.`id`,`m`.`title`,`m`.`module`,`m`.`position`,`m`.`content`,`m`.`showtitle`,`m`.`params`,`mm`.`menuid` FROM `jos_modules` AS `m` LEFT JOIN `jos_modules_menu` AS `mm` ON `mm`.`moduleid` = `m`.`id` LEFT JOIN `jos_extensions` AS `e` ON `e`.`element` = `m`.`module` AND `e`.`client_id` = `m`.`client_id` WHERE ( ( (`m`.`published` = 1 AND `e`.`enabled` = 1 AND `m`.`client_id` = :clientId AND `m`.`access` IN (:preparedArray1,:preparedArray2)) AND (`m`.`publish_up` IS NULL OR `m`.`publish_up` <= :publishUp)) AND (`m`.`publish_down` IS NULL OR `m`.`publish_down` >= :publishDown)) AND (`mm`.`menuid` = :itemId OR `mm`.`menuid` <= 0) ORDER BY `m`.`position`,`m`.`ordering`1.01ms19.06KBParams/libraries/src/Cache/Controller/CallbackController.php:120Copy
  • SELECT `params` FROM `jos_tagz` WHERE `component_id` = 120 AND `component_type` = "menu"346μs520B/plugins/system/tagz/tagz.php:650Copy
  • SELECT `params` FROM `jos_tagz` WHERE `component_id` = 548 AND `component_type` = "content"116μs520B/plugins/system/tagz/tagz.php:650Copy
  • SELECT `name`,`element` FROM `jos_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1236μs592B/administrator/components/com_finder/src/Helper/LanguageHelper.php:135Copy
  • SELECT `title` FROM `jos_finder_taxonomy` WHERE `parent_id` = 1 AND `state` = 1 AND `access` IN (1,5)193μs584B/administrator/components/com_finder/src/Indexer/Taxonomy.php:314Copy
  • SELECT custom_data FROM jos_extensions WHERE element = 'yootheme' AND folder = 'system' LIMIT 1558μs688.52KB/templates/yootheme/packages/platform-joomla/src/Storage.php:30Copy
  • SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM jos_fields AS a LEFT JOIN `jos_languages` AS l ON l.lang_code = a.language LEFT JOIN jos_users AS uc ON uc.id=a.checked_out LEFT JOIN jos_viewlevels AS ag ON ag.id = a.access LEFT JOIN jos_users AS ua ON ua.id = a.created_user_id LEFT JOIN jos_fields_groups AS g ON g.id = a.group_id WHERE ( (`a`.`context` = :context AND `a`.`access` IN (:preparedArray1,:preparedArray2)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray3,:preparedArray4)) AND `a`.`state` = :state) AND (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC360μs4.06KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:166Copy
  • SELECT `title` FROM `jos_finder_taxonomy` WHERE `parent_id` = 1 AND `state` = 1 AND `access` IN (1,5)160μs584B/administrator/components/com_finder/src/Indexer/Taxonomy.php:314Copy
  • SELECT SUM(CASE WHEN `a`.`next_execution` <= :now THEN 1 ELSE 0 END) AS due_count,SUM(CASE WHEN `a`.`locked` IS NULL THEN 0 ELSE 1 END) AS locked_count FROM `jos_scheduler_tasks` AS `a` WHERE `a`.`state` = 1147μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:517Copy
  • SELECT `session_id` FROM `jos_session` WHERE `session_id` = ?102μs1KBParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:291Copy
  • UPDATE `jos_session` SET `data` = ? , `time` = ? WHERE `session_id` = ?250μs592BParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:318Copy