Skip to main content

Meet John McPherson

The Local Cartoonist Marking a
Major Milestone Doing What He Loves
and Doing It... Close To Home! 

{From the 2024 Spring magazine}

Written By WENDY HOBDAY HAUGH  |  Photos Provided

Hot off the press, here’s some great news for all CLOSE TO HOME fans! 

John McPherson’s latest book, THE CLOSE TO HOME 30th Anniversary Treasury, will be released by Andrews McMeel Publishing on April 16th. This milestone volume includes more than 800 comics chosen by the Saratoga cartoonist and his editors as well as an instructive glimpse at how McPherson actually creates his cartoons. 

Since the first CLOSE TO HOME panel debuted on October 7, 1992, its rise to fame has been nothing short of meteoric with readers of all ages enjoying McPherson’s quirky characters and offbeat, insightful humor. Today, this popular cartoon, syndicated by Universal Press, appears in roughly 750 newspapers.  

Although McPherson’s keen sense of humor dates back to childhood, he never envisioned himself becoming a cartoonist. In fact, in 1985—after earning dual degrees in mechanical engineering and English—McPherson moved from Corning, NY, to Saratoga to work as a mechanical engineer at the Watervliet Arsenal. 

“As an engineer, I mostly did math problems,” he says, “but I’d always wanted to do something with my sense of humor.” A longtime admirer of Mark Twain’s satirical works, McPherson briefly gave freelance writing a shot. Although he made some sales, he ultimately decided that, given the time invested and pay received, “it was a pretty tough road to hoe.” 

A chronic doodler, McPherson began playing around with cartoons and quickly found himself hooked. “I’d never really drawn much, and I had no art background, but I was really inspired by Gary Larson of The Far Side as well as many of The New Yorker cartoons, Charles Addams’ work in particular.” 

Initially, McPherson honed his drawing skills by imitating the styles of his favorite cartoonists. “If I had an idea about a couple riding in a car, for instance, I’d have to find that scene in someone else’s work first so I’d know how to draw it.” Over time, however, as McPherson’s own distinctive style and voice emerged, he began submitting his work to newspapers. Over an 18-month period, he sent out 160 batches of 8-10 cartoons and received 160 rejection letters in return. “But I actually didn’t become discouraged,” he recalls, “because I was passionate about drawing my cartoons and having a lot of fun with it.”

Mark Frost, of The Chronicle in Glens Falls, was the first editor not only to praise McPherson’s work but to offer him a steady gig: two cartoons per month for five bucks apiece. Earning $10 a month and achieving publication were groundbreaking events for McPherson; and over time, as his cartoons gained traction, they captured the attention of even larger publications. When Campus Life magazine—with its circulation of 2-300,000 teenaged viewers—started accepting his work, McPherson’s world expanded dramatically.   

“Things really started to take off when I began getting phone calls from other magazine editors asking for cartoons. I got into Yankee magazine at $100 a cartoon, and soon afterwards I got into Saturday Evening Post. They published about 24-30 cartoons each issue, so it was a great resource for cartoonists.”

Within four years, McPherson was working for 30-40 magazines. As phone calls from editors began encroaching on his work days, he realized that he was making more money from cartooning than engineering. Finally, after receiving two lucrative book contracts—one about high school, the other about church—McPherson decided to quit his full-time job. “I was giving up a pretty solid income, health benefits, and retirement plan,” he says, “but for the freedom of doing my own thing, it was well worth it.”

By becoming a full-time cartoonist, John McPherson gained fame, financial security, and the personal satisfaction that comes of being able to do something he loves on a daily basis. “But the greatest perk of all,” he insists, “was the freedom to work from home and be there for my two sons. I ended up being a single parent, raising my kids on my own. Yet I could take them to school, pick them up at school, meet them for lunch, go to all their big events, and spend summers with them at Silver Bay, Lake George. Cartooning is a fun career, and I’m grateful that it has allowed me to spend more time with my family.”    

If you’re wondering whether McPherson’s two now grown-up kids have followed in their father’s footsteps, the answer is, yes! His eldest son, Peter, is a board game designer. “Peter has published three board games,” his father proudly reports, “and his first one, a clever strategy game called TINY TOWN, was voted Game of the Year for 2020.” Meanwhile, McPherson’s younger son, Griffin—who currently does all of the coloring for his dad’s CLOSE TO HOME panels—is an aspiring children’s book illustrator and graphic novelist. Clearly, both young men have inherited their father’s creativity and entrepreneurial spirit.

Looking back, McPherson admits that his early drawings were “pretty crude. I’m stunned that people actually bought them back then. But humor is what people are looking for. As long as you can get the humor across, the artwork is secondary.”

Nevertheless, he advises all upcoming cartoonists to acquire strong drawing skills. “Draw all the time and learn basic drawing skills, like perspective. You must be able to draw with a high degree of realism. The character conveys most of the cartoon’s meaning, so the character can be a caricature with distorted figure or features. But the setting must be realistic. A distorted door, for example, will just distract the reader and draw attention away from the character.

“Above all, keep drawing—and do it because you love it! That will help get you through those early rejections. More than anything, you’ve got to love what you’re doing and be passionate about doing it.”  

A really good cartoon can point out the funny side of a stressful situation, thereby diffusing it and helping readers to emerge smiling rather than frazzled. John McPherson’s endearingly chinless, shapeless, toothless characters truly level the social playing field. No prom queen or top dog escapes this artist’s insightful wit, and fans love him for it. High school agonies, wedding woes, marital mania, kid catastrophes, sports, aging, illness, church and state . . . CLOSE TO HOME covers them all, one quirky and heartfelt panel at a time.

To see more of John’s work, visit www.gocomics.com/closetohome.

7.919MBMemory Usage124msRequest 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" => "11" "id" => "675" "view" => "article" ]
$_POST
[]
$_SESSION
array:1 [ "joomla" => "***redacted***" ]
$_COOKIE
[]
$_SERVER
array:58 [ "USER" => "fivetowers" "HOME" => "/home/fivetowers" "SCRIPT_NAME" => "/index.php" ...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1746971130 "last" => 1746971130...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:18 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (444.73KB) (4.12ms)
  • afterInitialise (1.96MB) (33.82ms)
  • afterRoute (374.59KB) (6.26ms)
  • beforeRenderComponent com_content (59.57KB) (2.98ms)
  • Before Access::preloadComponents (all components) (47.72KB) (2.27ms)
  • After Access::preloadComponents (all components) (110.28KB) (1.33ms)
  • Before Access::preloadPermissions (com_content) (1.63KB) (49μs)
  • After Access::preloadPermissions (com_content) (507.06KB) (1.45ms)
  • Before Access::getAssetRules (id:846 name:com_content.article.675) (18.65KB) (26μs)
  • After Access::getAssetRules (id:846 name:com_content.article.675) (7.38KB) (157μs)
  • afterRenderComponent com_content (1.6MB) (43.67ms)
  • afterDispatch (29.42KB) (1.09ms)
  • beforeRenderRawModule mod_menu () (396.33KB) (9.86ms)
  • afterRenderRawModule mod_menu () (13.13KB) (922μs)
  • beforeRenderModule mod_menu () (696B) (4μs)
  • afterRenderModule mod_menu () (3.73KB) (166μs)
  • beforeRenderRawModule mod_finder () (1.45KB) (11μs)
  • afterRenderRawModule mod_finder () (1.95MB) (6.27ms)
  • beforeRenderModule mod_finder () (704B) (5μs)
  • afterRenderModule mod_finder () (2.82KB) (84μs)
  • beforeRenderRawModule mod_custom () (16B) (187μs)
  • afterRenderRawModule mod_custom () (320.14KB) (1.06ms)
  • beforeRenderModule mod_custom () (704B) (4μs)
  • afterRenderModule mod_custom () (3.27KB) (56μs)
  • beforeRenderRawModule mod_menu () (24B) (72μs)
  • afterRenderRawModule mod_menu () (552B) (413μs)
  • beforeRenderModule mod_menu () (696B) (3μs)
  • afterRenderModule mod_menu () (2.76KB) (57μs)
  • beforeRenderRawModule mod_custom () (920B) (56μs)
  • afterRenderRawModule mod_custom () (1.03KB) (133μs)
  • beforeRenderModule mod_custom () (704B) (2μs)
  • afterRenderModule mod_custom () (1.23KB) (71μs)
  • beforeRenderRawModule mod_menu () (1.65KB) (126μs)
  • afterRenderRawModule mod_menu () (4.45KB) (416μs)
  • beforeRenderModule mod_menu () (696B) (4μs)
  • afterRenderModule mod_menu () (1.34KB) (68μs)
  • beforeRenderRawModule mod_finder () (96B) (8μs)
  • afterRenderRawModule mod_finder () (7.32KB) (501μs)
  • beforeRenderModule mod_finder () (704B) (3μs)
  • afterRenderModule mod_finder () (1.34KB) (74μs)
  • beforeRenderRawModule mod_custom () (288B) (9μs)
  • afterRenderRawModule mod_custom () (912B) (129μs)
  • beforeRenderModule mod_custom () (704B) (3μs)
  • afterRenderModule mod_custom () (1.23KB) (52μs)
  • beforeRenderRawModule mod_custom () (5.95KB) (146μs)
  • afterRenderRawModule mod_custom () (1008B) (121μs)
  • beforeRenderModule mod_custom () (704B) (3μs)
  • afterRenderModule mod_custom () (2.77KB) (43μs)
  • beforeRenderRawModule mod_custom () (8B) (54μs)
  • afterRenderRawModule mod_custom () (1008B) (106μs)
  • beforeRenderModule mod_custom () (704B) (2μs)
  • afterRenderModule mod_custom () (2.43KB) (42μs)
  • afterRender (298.95KB) (3.31ms)
  • 1 x afterRenderComponent com_content (1.6MB) (35.35%)
    43.67ms
    1 x afterInitialise (1.96MB) (27.37%)
    33.82ms
    1 x beforeRenderRawModule mod_menu () (396.33KB) (7.98%)
    9.86ms
    1 x afterRenderRawModule mod_finder () (1.95MB) (5.07%)
    6.27ms
    1 x afterRoute (374.59KB) (5.07%)
    6.26ms
    1 x afterLoad (444.73KB) (3.33%)
    4.12ms
    1 x afterRender (298.95KB) (2.68%)
    3.31ms
    1 x beforeRenderComponent com_content (59.57KB) (2.41%)
    2.98ms
    1 x Before Access::preloadComponents (all components) (47.72KB) (1.84%)
    2.27ms
    1 x After Access::preloadPermissions (com_content) (507.06KB) (1.17%)
    1.45ms
    1 x After Access::preloadComponents (all components) (110.28KB) (1.07%)
    1.33ms
    1 x afterDispatch (29.42KB) (0.88%)
    1.09ms
    1 x afterRenderRawModule mod_custom () (320.14KB) (0.86%)
    1.06ms
    1 x afterRenderRawModule mod_menu () (13.13KB) (0.75%)
    922μs
    1 x afterRenderRawModule mod_finder () (7.32KB) (0.41%)
    501μs
    1 x afterRenderRawModule mod_menu () (4.45KB) (0.34%)
    416μs
    1 x afterRenderRawModule mod_menu () (552B) (0.33%)
    413μs
    2 x afterRenderRawModule mod_custom () (1008B) (0.18%)
    227μs
    1 x beforeRenderRawModule mod_custom () (16B) (0.15%)
    187μs
    1 x afterRenderModule mod_menu () (3.73KB) (0.13%)
    166μs
    1 x After Access::getAssetRules (id:846 name:com_content.article.675) (7.38KB) (0.13%)
    157μs
    1 x beforeRenderRawModule mod_custom () (5.95KB) (0.12%)
    146μs
    1 x afterRenderRawModule mod_custom () (1.03KB) (0.11%)
    133μs
    1 x afterRenderRawModule mod_custom () (912B) (0.1%)
    129μs
    1 x beforeRenderRawModule mod_menu () (1.65KB) (0.1%)
    126μs
    2 x afterRenderModule mod_custom () (1.23KB) (0.1%)
    123μs
    1 x afterRenderModule mod_finder () (2.82KB) (0.07%)
    84μs
    1 x afterRenderModule mod_finder () (1.34KB) (0.06%)
    74μs
    1 x beforeRenderRawModule mod_menu () (24B) (0.06%)
    72μs
    1 x afterRenderModule mod_menu () (1.34KB) (0.06%)
    68μs
    1 x afterRenderModule mod_menu () (2.76KB) (0.05%)
    57μs
    1 x afterRenderModule mod_custom () (3.27KB) (0.05%)
    56μs
    1 x beforeRenderRawModule mod_custom () (920B) (0.05%)
    56μs
    1 x beforeRenderRawModule mod_custom () (8B) (0.04%)
    54μs
    1 x Before Access::preloadPermissions (com_content) (1.63KB) (0.04%)
    49μs
    1 x afterRenderModule mod_custom () (2.77KB) (0.03%)
    43μs
    1 x afterRenderModule mod_custom () (2.43KB) (0.03%)
    42μs
    1 x Before Access::getAssetRules (id:846 name:com_content.article.675) (18.65KB) (0.02%)
    26μs
    5 x beforeRenderModule mod_custom () (704B) (0.01%)
    14μs
    1 x beforeRenderRawModule mod_finder () (1.45KB) (0.01%)
    11μs
    3 x beforeRenderModule mod_menu () (696B) (0.01%)
    10μs
    1 x beforeRenderRawModule mod_custom () (288B) (0.01%)
    9μs
    2 x beforeRenderModule mod_finder () (704B) (0.01%)
    8μs
    1 x beforeRenderRawModule mod_finder () (96B) (0.01%)
    8μs
54 statements were executed, 5 of which were duplicates, 49 unique13.31ms907.86KB
  • SELECT @@SESSION.sql_mode;123μs968B/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:334Copy
  • SELECT `data` FROM `jos_session` WHERE `session_id` = ?186μ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)313μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `jos_viewlevels`139μ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` = :guest225μ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"193μ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"88μ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"73μ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"76μ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"75μ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"116μ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"74μ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"81μ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"80μ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"73μ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"69μ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"69μ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"70μ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"67μ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"66μ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"66μ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"67μ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"66μ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"66μs520B/administrator/components/com_tagz/helpers/tagz.php:890Copy
  • SHOW FULL COLUMNS FROM `jos_tagz_config`667μs1.3KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:625Copy
  • SELECT * FROM `jos_tagz_config` WHERE `name` = 'config'103μs592B/libraries/src/Table/Table.php:755Copy
  • SELECT id,template FROM jos_template_styles WHERE client_id=0 AND home=1165μs592B/administrator/components/com_widgetkit/widgetkit.php:28Copy
  • SELECT custom_data FROM jos_extensions WHERE element = 'yooessentials' AND folder = 'system'123μs536B/plugins/system/yooessentials/helper.php:153Copy
  • SELECT custom_data FROM jos_extensions WHERE element = 'yooessentials' AND folder = 'system' LIMIT 1133μs536B/plugins/system/yooessentials/modules/platform-joomla/src/Database.php:52Copy
  • SELECT * FROM `jos_languages` WHERE `published` = 1 ORDER BY `ordering` ASC227μs4.09KB/libraries/src/Language/LanguageHelper.php:142Copy
  • 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)583μs7.44KBParams/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` = 0519μs49.48KBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `jos_content`906μs1.77KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:625Copy
  • UPDATE `jos_content` SET `hits` = (`hits` + 1) WHERE `id` = '675'329μ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)466μs62.13KBParams/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`317μ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)253μ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`260μ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 ASC342μ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 DESC2.61ms41.72KBParams/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`287μs3.91KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `params` FROM `jos_tagz` WHERE `component_id` = 119 AND `component_type` = "menu"291μs520B/plugins/system/tagz/tagz.php:650Copy
  • SELECT `params` FROM `jos_tagz` WHERE `component_id` = 675 AND `component_type` = "content"112μs520B/plugins/system/tagz/tagz.php:650Copy
  • SELECT `name`,`element` FROM `jos_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1162μ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)206μs584B/administrator/components/com_finder/src/Indexer/Taxonomy.php:314Copy
  • SELECT custom_data FROM jos_extensions WHERE element = 'yootheme' AND folder = 'system' LIMIT 1629μ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 ASC293μ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)118μ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` = 1142μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:517Copy
  • SELECT `session_id` FROM `jos_session` WHERE `session_id` = ?80μs1KBParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:291Copy
  • UPDATE `jos_session` SET `data` = ? , `time` = ? WHERE `session_id` = ?215μs592BParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:318Copy